diff --git a/.gitignore b/.gitignore
index a4542ab1403..1a2a47eda4a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,6 +48,10 @@ src/**/*.js
src/**/*.js.map
src/**/*.css.map
+# Artefacts
+projects/igniteui-angular/**/*.component.css
+
+# Typedoc Theme
# Typedoc and SassDoc Themes
extras/sassdoc/**/*
extras/docs/themes/typedoc/bin
diff --git a/angular.json b/angular.json
index a8157cba8d9..65a0eccadc7 100644
--- a/angular.json
+++ b/angular.json
@@ -359,8 +359,8 @@
"budgets": [
{
"type": "allScript",
- "maximumWarning": "2.5mb",
- "maximumError": "3mb"
+ "maximumWarning": "4mb",
+ "maximumError": "5mb"
},
{
"type": "bundle",
@@ -370,8 +370,8 @@
},
{
"type": "anyComponentStyle",
- "maximumWarning": "2kb",
- "maximumError": "4kb"
+ "maximumWarning": "200kb",
+ "maximumError": "300kb"
}
],
"fileReplacements": [
@@ -494,8 +494,8 @@
},
{
"type": "anyComponentStyle",
- "maximumWarning": "2kb",
- "maximumError": "4kb"
+ "maximumWarning": "200kb",
+ "maximumError": "300kb"
}
],
"outputHashing": "all",
@@ -585,8 +585,8 @@
},
{
"type": "anyComponentStyle",
- "maximumWarning": "4kB",
- "maximumError": "8kB"
+ "maximumWarning": "200kB",
+ "maximumError": "300kB"
}
],
"outputHashing": "all"
diff --git a/package-lock.json b/package-lock.json
index 919ed175033..5ddb82400f5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -27,7 +27,7 @@
"express": "^5.2.1",
"fflate": "^0.8.1",
"igniteui-i18n-core": "^1.0.2",
- "igniteui-theming": "^25.0.3",
+ "igniteui-theming": "^25.2.0",
"igniteui-trial-watermark": "^3.1.0",
"jspdf": "^4.2.1",
"lodash-es": "^4.17.21",
@@ -62,6 +62,7 @@
"@typescript-eslint/eslint-plugin": "^8.33.1",
"@typescript-eslint/parser": "^8.33.1",
"autoprefixer": "^10.4.16",
+ "concurrently": "^9.1.2",
"del": "^6.0.0",
"eslint": "^9.28.0",
"fs-extra": "^11.3.0",
@@ -94,6 +95,7 @@
"karma-spec-reporter": "^0.0.36",
"lit-html": "^3.2.1",
"ng-packagr": "^21.0.0",
+ "node-watch": "^0.7.4",
"postcss": "^8.5.1",
"postcss-scss": "^4.0.6",
"prettier": "^3.3.3",
@@ -3814,6 +3816,7 @@
"version": "1.26.0",
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz",
"integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@hono/node-server": "^1.19.9",
@@ -3854,6 +3857,7 @@
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
"integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"eventsource-parser": "^3.0.1"
@@ -4730,6 +4734,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4750,6 +4755,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4770,6 +4776,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4790,6 +4797,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4810,6 +4818,7 @@
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4830,6 +4839,7 @@
"cpu": [
"arm"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4850,6 +4860,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4870,6 +4881,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4890,6 +4902,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4910,6 +4923,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4930,6 +4944,7 @@
"cpu": [
"arm64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4950,6 +4965,7 @@
"cpu": [
"ia32"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -4970,6 +4986,7 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -9258,6 +9275,122 @@
"node": ">=0.10.0"
}
},
+ "node_modules/concurrently": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz",
+ "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "4.1.2",
+ "rxjs": "7.8.2",
+ "shell-quote": "1.8.3",
+ "supports-color": "8.1.1",
+ "tree-kill": "1.2.2",
+ "yargs": "17.7.2"
+ },
+ "bin": {
+ "conc": "dist/bin/concurrently.js",
+ "concurrently": "dist/bin/concurrently.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
+ }
+ },
+ "node_modules/concurrently/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/concurrently/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/concurrently/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/concurrently/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/concurrently/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/concurrently/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/configstore": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
@@ -14040,12 +14173,12 @@
}
},
"node_modules/igniteui-theming": {
- "version": "25.0.3",
- "resolved": "https://registry.npmjs.org/igniteui-theming/-/igniteui-theming-25.0.3.tgz",
- "integrity": "sha512-Lq6NusLS6zOjL1E/5942+UNrvf4goeQlVb9XcCSzk7rMyA9Q6ybf9ltLHAag8O/vsIjMsr9FxJaJV3mTYErXzg==",
+ "version": "25.2.0",
+ "resolved": "https://registry.npmjs.org/igniteui-theming/-/igniteui-theming-25.2.0.tgz",
+ "integrity": "sha512-bXRN379/vL05cDQl12jLABXALo+cXdD9zeYTlwURoEq1GrCkriYQnSqgwWmD/UdN/9Jc2MaMbsuXuYRZq5F71w==",
"license": "MIT",
"dependencies": {
- "@modelcontextprotocol/sdk": "^1.25.0",
+ "@modelcontextprotocol/sdk": "^1.28.0",
"sass-embedded": "~1.92.1",
"zod": "^3.25.76"
},
@@ -14053,6 +14186,46 @@
"igniteui-theming-mcp": "dist/mcp/index.js"
}
},
+ "node_modules/igniteui-theming/node_modules/@modelcontextprotocol/sdk": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz",
+ "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@hono/node-server": "^1.19.9",
+ "ajv": "^8.17.1",
+ "ajv-formats": "^3.0.1",
+ "content-type": "^1.0.5",
+ "cors": "^2.8.5",
+ "cross-spawn": "^7.0.5",
+ "eventsource": "^3.0.2",
+ "eventsource-parser": "^3.0.0",
+ "express": "^5.2.1",
+ "express-rate-limit": "^8.2.1",
+ "hono": "^4.11.4",
+ "jose": "^6.1.3",
+ "json-schema-typed": "^8.0.2",
+ "pkce-challenge": "^5.0.0",
+ "raw-body": "^3.0.0",
+ "zod": "^3.25 || ^4.0",
+ "zod-to-json-schema": "^3.25.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@cfworker/json-schema": "^4.1.1",
+ "zod": "^3.25 || ^4.0"
+ },
+ "peerDependenciesMeta": {
+ "@cfworker/json-schema": {
+ "optional": true
+ },
+ "zod": {
+ "optional": false
+ }
+ }
+ },
"node_modules/igniteui-theming/node_modules/chokidar": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
@@ -14069,6 +14242,18 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/igniteui-theming/node_modules/eventsource": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+ "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
+ "license": "MIT",
+ "dependencies": {
+ "eventsource-parser": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/igniteui-theming/node_modules/readdirp": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
@@ -18850,6 +19035,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/node-watch": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.4.tgz",
+ "integrity": "sha512-RinNxoz4W1cep1b928fuFhvAQ5ag/+1UlMDV7rbyGthBIgsiEouS4kvRayvvboxii4m8eolKOIBo3OjDqbc+uQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
@@ -22372,8 +22567,10 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "extraneous": true,
+ "dev": true,
"license": "MIT",
+ "optional": true,
+ "peer": true,
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -22425,8 +22622,10 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "extraneous": true,
+ "dev": true,
"license": "ISC",
+ "optional": true,
+ "peer": true,
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -22474,8 +22673,10 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
- "extraneous": true,
+ "dev": true,
"license": "MIT",
+ "optional": true,
+ "peer": true,
"engines": {
"node": ">=8.6"
},
@@ -22487,8 +22688,10 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "extraneous": true,
+ "dev": true,
"license": "MIT",
+ "optional": true,
+ "peer": true,
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -23306,6 +23509,19 @@
"node": ">=8"
}
},
+ "node_modules/shell-quote": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
+ "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/shiki": {
"version": "3.23.0",
"resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz",
@@ -25041,6 +25257,16 @@
"node": ">=6"
}
},
+ "node_modules/tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "tree-kill": "cli.js"
+ }
+ },
"node_modules/trim-lines": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
diff --git a/package.json b/package.json
index ea5b4c84fe6..ce1c5d9a2ea 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"scripts": {
"ng": "ng",
- "start": "ng serve --open --hmr",
+ "start": "concurrently -r \"npm run build:styles:components\" \"npm run watch:styles\" \"ng serve --open --hmr\"",
"start:elements": "ng serve --project igniteui-angular-elements",
"start:performance": "ng serve --project igniteui-angular-performance",
"build": "npm run build:lib && npm run build:elements && npm run build:extras && npm run build:schematics && npm run build:migrations && npm run build:i18n",
@@ -23,8 +23,10 @@
"test:i18n": "ts-node --skip-project ./projects/igniteui-angular/core/src/core/i18n/tests/tests.mjs",
"test:elements": "ng test igniteui-angular-elements --watch=false --no-progress --code-coverage --source-map=false",
"test:elements:watch": "ng test igniteui-angular-elements",
- "build:lib": "ng build igniteui-angular --configuration production && npm run build:styles",
- "build:styles": "node scripts/build-styles.mjs",
+ "build:lib": "npm run build:styles:components && ng build igniteui-angular --configuration production && npm run build:styles",
+ "build:styles": "node scripts/build-theme-styles.mjs",
+ "build:styles:components": "node scripts/build-component-styles.mjs",
+ "watch:styles": "node scripts/watch-styles.mjs",
"build:extras": "ng build igniteui-angular-extras --configuration production && npm run build:extras-migrations",
"build:extras-migrations": "gulp copyExtrasMigrations && tsc --listEmittedFiles --project ./projects/igniteui-angular-extras/migrations/tsconfig.json",
"test:extras": "ng test igniteui-angular-extras --watch=false --no-progress --code-coverage",
@@ -82,7 +84,7 @@
"express": "^5.2.1",
"fflate": "^0.8.1",
"igniteui-i18n-core": "^1.0.2",
- "igniteui-theming": "^25.0.3",
+ "igniteui-theming": "^25.2.0",
"igniteui-trial-watermark": "^3.1.0",
"jspdf": "^4.2.1",
"lodash-es": "^4.17.21",
@@ -117,6 +119,7 @@
"@typescript-eslint/eslint-plugin": "^8.33.1",
"@typescript-eslint/parser": "^8.33.1",
"autoprefixer": "^10.4.16",
+ "concurrently": "^9.1.2",
"del": "^6.0.0",
"eslint": "^9.28.0",
"fs-extra": "^11.3.0",
@@ -149,6 +152,7 @@
"karma-spec-reporter": "^0.0.36",
"lit-html": "^3.2.1",
"ng-packagr": "^21.0.0",
+ "node-watch": "^0.7.4",
"postcss": "^8.5.1",
"postcss-scss": "^4.0.6",
"prettier": "^3.3.3",
diff --git a/projects/igniteui-angular-extras/src/lib/context-menu/chart-dialog/chart-dialog.component.ts b/projects/igniteui-angular-extras/src/lib/context-menu/chart-dialog/chart-dialog.component.ts
index 0bdcfc028f2..146e3016de9 100644
--- a/projects/igniteui-angular-extras/src/lib/context-menu/chart-dialog/chart-dialog.component.ts
+++ b/projects/igniteui-angular-extras/src/lib/context-menu/chart-dialog/chart-dialog.component.ts
@@ -16,7 +16,11 @@ import { CommonModule } from '@angular/common';
import * as charts from '../../../images/charts';
import { Subject } from 'rxjs';
import { IgxIconComponent } from 'igniteui-angular/icon';
-import { IgxIconButtonDirective, IgxRippleDirective, IgxDividerDirective } from 'igniteui-angular/directives';
+import {
+ IgxIconButtonDirective,
+ IgxRippleDirective,
+ IgxDividerComponent
+} from 'igniteui-angular/directives';
import { SvgPipe } from '../../pipes/svg.pipe';
@Component({
@@ -24,7 +28,7 @@ import { SvgPipe } from '../../pipes/svg.pipe';
templateUrl: './chart-dialog.component.html',
styleUrls: ['./chart-dialog.component.scss'],
encapsulation: ViewEncapsulation.None,
- imports: [CommonModule, IgxIconComponent, IgxIconButtonDirective, IgxRippleDirective, IgxDividerDirective, SvgPipe],
+ imports: [CommonModule, IgxIconComponent, IgxIconButtonDirective, IgxRippleDirective, IgxDividerComponent, SvgPipe],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class IgxChartMenuComponent implements AfterViewInit, OnDestroy {
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.scss b/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.spec.ts b/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.spec.ts
index 5f17dcfc137..9f8445a4633 100644
--- a/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.spec.ts
+++ b/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.spec.ts
@@ -7,7 +7,7 @@ import { IgxIconComponent } from 'igniteui-angular/icon';
import { wait } from '../../../test-utils/ui-interactions.spec';
const ACTION_STRIP_CONTAINER_CSS = 'igx-action-strip__actions';
-const DROP_DOWN_LIST = 'igx-drop-down__list';
+const DROP_DOWN_LIST = 'igx-drop-down';
describe('igxActionStrip', () => {
let fixture;
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.ts b/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.ts
index d56215f99d8..b039faaa42f 100644
--- a/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.ts
+++ b/projects/igniteui-angular/action-strip/src/action-strip/action-strip.component.ts
@@ -13,6 +13,7 @@ import {
AfterViewInit,
ElementRef,
booleanAttribute,
+ ViewEncapsulation,
inject,
DestroyRef,
AfterContentInit
@@ -80,6 +81,8 @@ export class IgxActionStripMenuItemDirective {
@Component({
selector: 'igx-action-strip',
templateUrl: 'action-strip.component.html',
+ styleUrl: 'action-strip.component.css',
+ encapsulation: ViewEncapsulation.None,
imports: [
NgTemplateOutlet,
IgxIconButtonDirective,
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/themes/_base.scss b/projects/igniteui-angular/action-strip/src/action-strip/themes/_base.scss
new file mode 100644
index 00000000000..07e1e5ee9c9
--- /dev/null
+++ b/projects/igniteui-angular/action-strip/src/action-strip/themes/_base.scss
@@ -0,0 +1,139 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$_theme: $material;
+
+@include layer(base) {
+ $icon-size: sizable(rem(14px), rem(14px), rem(18px));
+
+ %actions {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ %menu-item {
+ [igxLabel] {
+ cursor: pointer;
+ }
+
+ &.igx-drop-down__item {
+ igx-icon + [igxLabel] {
+ margin-inline-start: pad-inline(rem(8px), rem(10px), rem(12px));
+ }
+ }
+ }
+
+ @include b(igx-action-strip) {
+ @include sizable();
+
+ --action-strip-size: var(--component-size);
+ --button-size: #{sizable(rem(28px), rem(28px), rem(36px))};
+
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ pointer-events: none;
+ top: 0;
+ inset-inline-start: 0;
+ background: var-get($_theme, 'background');
+ color: inherit;
+ padding-inline: pad-inline(rem(12px), rem(16px), rem(24px));
+ padding-block: 0;
+ z-index: 9999;
+
+ [igxIconButton] {
+ --component-size: var(--action-strip-size);
+
+ width: var(--button-size);
+ height: var(--button-size);
+
+ igx-icon {
+ --component-size: var(--action-strip-size);
+
+ --ig-icon-size: #{$icon-size};
+ }
+ }
+
+ @include e(actions) {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ pointer-events: all;
+ position: relative;
+ color: var-get($_theme, 'icon-color');
+ border-radius: var-get($_theme, 'actions-border-radius');
+ background: var-get($_theme, 'actions-background');
+
+ &:last-child {
+ margin-inline-end: 0;
+ }
+
+ igx-icon {
+ color: var-get($_theme, 'icon-color');
+ }
+
+ [igxIconButton] {
+ border-radius: var-get($_theme, 'actions-border-radius');
+
+ igx-icon {
+ color: var-get($_theme, 'icon-color');
+ }
+ }
+ }
+
+ @include e(delete) {
+ igx-icon {
+ color: var-get($_theme, 'delete-action');
+ }
+
+ [igxIconButton] {
+ igx-icon {
+ color: var-get($_theme, 'delete-action');
+ }
+ }
+ }
+
+ @include e(editing-actions) {
+ @extend %actions;
+
+ > [igxButton] {
+ margin-inline-start: rem(4px);
+
+ &:first-of-type {
+ margin-inline-start: 0;
+ }
+ }
+ }
+
+ @include e(pinning-actions) {
+ @extend %actions;
+ }
+
+ @include e(menu-item) {
+ @extend %menu-item;
+ }
+
+ @include e(menu-item, $m: 'danger') {
+ @extend %menu-item;
+
+ color: color($color: 'error');
+
+ &:hover {
+ color: color($color: 'error');
+ }
+ }
+
+ @include e(menu-button) {
+ display: flex;
+ align-items: center;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/themes/dark/_index.scss b/projects/igniteui-angular/action-strip/src/action-strip/themes/dark/_index.scss
new file mode 100644
index 00000000000..cefc00f9cde
--- /dev/null
+++ b/projects/igniteui-angular/action-strip/src/action-strip/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-action-strip, $tokens, dark);
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/themes/dark/_tokens.scss b/projects/igniteui-angular/action-strip/src/action-strip/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..a28ec35fe65
--- /dev/null
+++ b/projects/igniteui-angular/action-strip/src/action-strip/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/action-strip' as *;
+
+$material: digest-schema($dark-material-action-strip);
+$bootstrap: digest-schema($dark-bootstrap-action-strip);
+$fluent: digest-schema($dark-fluent-action-strip);
+$indigo: digest-schema($dark-indigo-action-strip);
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/themes/light/_index.scss b/projects/igniteui-angular/action-strip/src/action-strip/themes/light/_index.scss
new file mode 100644
index 00000000000..9436c880134
--- /dev/null
+++ b/projects/igniteui-angular/action-strip/src/action-strip/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-action-strip, $tokens, light);
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/themes/light/_tokens.scss b/projects/igniteui-angular/action-strip/src/action-strip/themes/light/_tokens.scss
new file mode 100644
index 00000000000..f860918d21e
--- /dev/null
+++ b/projects/igniteui-angular/action-strip/src/action-strip/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/action-strip' as *;
+
+$base: digest-schema($light-action-strip);
+$material: digest-schema($material-action-strip);
+$bootstrap: digest-schema($bootstrap-action-strip);
+$fluent: digest-schema($fluent-action-strip);
+$indigo: digest-schema($indigo-action-strip);
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/themes/shared/_fluent.scss b/projects/igniteui-angular/action-strip/src/action-strip/themes/shared/_fluent.scss
new file mode 100644
index 00000000000..d492ac4f591
--- /dev/null
+++ b/projects/igniteui-angular/action-strip/src/action-strip/themes/shared/_fluent.scss
@@ -0,0 +1,10 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+
+@include themed-block(igx-action-strip, fluent) {
+ [igxIconButton] {
+ --button-size: #{sizable(rem(28px), rem(28px), rem(32px))};
+ }
+}
+
\ No newline at end of file
diff --git a/projects/igniteui-angular/action-strip/src/action-strip/themes/shared/_index.scss b/projects/igniteui-angular/action-strip/src/action-strip/themes/shared/_index.scss
new file mode 100644
index 00000000000..7760b2e7366
--- /dev/null
+++ b/projects/igniteui-angular/action-strip/src/action-strip/themes/shared/_index.scss
@@ -0,0 +1 @@
+@forward 'fluent';
diff --git a/projects/igniteui-angular/avatar/src/avatar/avatar.component.scss b/projects/igniteui-angular/avatar/src/avatar/avatar.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/avatar/src/avatar/avatar.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/avatar/src/avatar/avatar.component.ts b/projects/igniteui-angular/avatar/src/avatar/avatar.component.ts
index 91ead023fea..e7d6c65a46f 100644
--- a/projects/igniteui-angular/avatar/src/avatar/avatar.component.ts
+++ b/projects/igniteui-angular/avatar/src/avatar/avatar.component.ts
@@ -1,5 +1,15 @@
import { NgTemplateOutlet } from '@angular/common';
-import { Component, ElementRef, HostBinding, Input, OnInit, TemplateRef, ViewChild, inject } from '@angular/core';
+import {
+ Component,
+ ElementRef,
+ HostBinding,
+ Input,
+ OnInit,
+ TemplateRef,
+ ViewChild,
+ ViewEncapsulation,
+ inject
+} from '@angular/core';
import { normalizeURI } from 'igniteui-angular/core';
import { IgxIconComponent } from 'igniteui-angular/icon';
@@ -45,6 +55,8 @@ export type IgxAvatarType = (typeof IgxAvatarType)[keyof typeof IgxAvatarType];
@Component({
selector: 'igx-avatar',
templateUrl: 'avatar.component.html',
+ styleUrl: 'avatar.component.css',
+ encapsulation: ViewEncapsulation.None,
imports: [IgxIconComponent, NgTemplateOutlet]
})
export class IgxAvatarComponent implements OnInit {
diff --git a/projects/igniteui-angular/avatar/src/avatar/themes/_base.scss b/projects/igniteui-angular/avatar/src/avatar/themes/_base.scss
new file mode 100644
index 00000000000..7e579d21bee
--- /dev/null
+++ b/projects/igniteui-angular/avatar/src/avatar/themes/_base.scss
@@ -0,0 +1,62 @@
+@use 'igniteui-theming/sass/animations' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+
+@include layer(base) {
+ @include b(igx-avatar) {
+ @include sizable();
+
+ --component-size: var(--ig-size, #{var-get($theme, 'default-size')});
+
+ position: relative;
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ user-select: none;
+ color: var-get($theme, 'color');
+ background: var-get($theme, 'background');
+ vertical-align: middle;
+ outline-style: none;
+ flex-shrink: 0;
+ width: var-get($theme, 'size');
+ height: var-get($theme, 'size');
+
+ igx-icon {
+ --ig-size: 3;
+
+ color: var-get($theme, 'icon-color');
+ }
+
+ &::after {
+ box-shadow: none;
+ transition: box-shadow 0.15s $ease-in-out-quad;
+ }
+
+ @include e(image) {
+ width: 100%;
+ height: 100%;
+ border-radius: inherit;
+ background-size: cover;
+ background-repeat: no-repeat;
+ background-position: center;
+ }
+
+ @include m(circle) {
+ border-radius: calc(#{var-get($theme, 'size')} / 2);
+ }
+
+ @include m(rounded) {
+ border-radius: var-get($theme, 'border-radius');
+ }
+
+ @include m(initials) {
+ text-transform: uppercase;
+ font-size: calc(#{var-get($theme, 'size')} / 2);
+ line-height: calc(#{var-get($theme, 'size')} / 2);
+ }
+ }
+}
diff --git a/projects/igniteui-angular/avatar/src/avatar/themes/dark/_index.scss b/projects/igniteui-angular/avatar/src/avatar/themes/dark/_index.scss
new file mode 100644
index 00000000000..9dbf039674c
--- /dev/null
+++ b/projects/igniteui-angular/avatar/src/avatar/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-avatar, $tokens, dark);
diff --git a/projects/igniteui-angular/avatar/src/avatar/themes/dark/_tokens.scss b/projects/igniteui-angular/avatar/src/avatar/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..f5e829c9657
--- /dev/null
+++ b/projects/igniteui-angular/avatar/src/avatar/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/avatar' as *;
+
+$material: digest-schema($dark-material-avatar);
+$bootstrap: digest-schema($dark-bootstrap-avatar);
+$fluent: digest-schema($dark-fluent-avatar);
+$indigo: digest-schema($dark-indigo-avatar);
diff --git a/projects/igniteui-angular/avatar/src/avatar/themes/light/_index.scss b/projects/igniteui-angular/avatar/src/avatar/themes/light/_index.scss
new file mode 100644
index 00000000000..b59827df365
--- /dev/null
+++ b/projects/igniteui-angular/avatar/src/avatar/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-avatar, $tokens, light);
diff --git a/projects/igniteui-angular/avatar/src/avatar/themes/light/_tokens.scss b/projects/igniteui-angular/avatar/src/avatar/themes/light/_tokens.scss
new file mode 100644
index 00000000000..93ea480da81
--- /dev/null
+++ b/projects/igniteui-angular/avatar/src/avatar/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/avatar' as *;
+
+$base: digest-schema($light-avatar);
+$material: digest-schema($material-avatar);
+$bootstrap: digest-schema($bootstrap-avatar);
+$fluent: digest-schema($fluent-avatar);
+$indigo: digest-schema($indigo-avatar);
diff --git a/projects/igniteui-angular/avatar/src/avatar/themes/shared/_index.scss b/projects/igniteui-angular/avatar/src/avatar/themes/shared/_index.scss
new file mode 100644
index 00000000000..ca3dd3bc266
--- /dev/null
+++ b/projects/igniteui-angular/avatar/src/avatar/themes/shared/_index.scss
@@ -0,0 +1 @@
+@forward 'indigo';
diff --git a/projects/igniteui-angular/avatar/src/avatar/themes/shared/indigo.scss b/projects/igniteui-angular/avatar/src/avatar/themes/shared/indigo.scss
new file mode 100644
index 00000000000..22a540c4089
--- /dev/null
+++ b/projects/igniteui-angular/avatar/src/avatar/themes/shared/indigo.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+
+@include themed-block(igx-avatar, indigo) {
+ igx-icon {
+ --ig-size: 1;
+ }
+}
diff --git a/projects/igniteui-angular/badge/src/badge/badge.component.scss b/projects/igniteui-angular/badge/src/badge/badge.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/badge.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/badge/src/badge/badge.component.ts b/projects/igniteui-angular/badge/src/badge/badge.component.ts
index 99baa5ae77e..f15b95f80dd 100644
--- a/projects/igniteui-angular/badge/src/badge/badge.component.ts
+++ b/projects/igniteui-angular/badge/src/badge/badge.component.ts
@@ -1,4 +1,4 @@
-import { booleanAttribute, Component, HostBinding, Input } from '@angular/core';
+import { booleanAttribute, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';
import { IgxIconComponent } from 'igniteui-angular/icon';
let NEXT_ID = 0;
@@ -38,7 +38,9 @@ export type IgxBadgeType = (typeof IgxBadgeType)[keyof typeof IgxBadgeType];
*/
@Component({
selector: 'igx-badge',
+ styleUrl: 'badge.component.css',
templateUrl: 'badge.component.html',
+ encapsulation: ViewEncapsulation.None,
imports: [IgxIconComponent]
})
export class IgxBadgeComponent {
diff --git a/projects/igniteui-angular/badge/src/badge/themes/_base.scss b/projects/igniteui-angular/badge/src/badge/themes/_base.scss
new file mode 100644
index 00000000000..5770d4d1cb5
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/_base.scss
@@ -0,0 +1,89 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use './light/tokens' as *;
+
+$theme: $material;
+
+@include layer(base) {
+ @include b(igx-badge) {
+ @include sizable();
+
+ --component-size: var(--ig-size, #{var-get($theme, 'default-size')});
+ --badge-size: var(--component-size);
+ --_badge-size: #{var-get($theme, 'size')};
+
+ --ig-icon-size: #{sizable(rem(12px), rem(14px), rem(16px))};
+ --ig-icon-color: #{var-get($theme, 'icon-color')};
+
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ min-width: var(--_badge-size);
+ min-height: var(--_badge-size);
+ color: var-get($theme, 'text-color');
+ background: var-get($theme, 'background-color');
+ border-radius: calc(var(--size) / 2);
+ box-shadow: var-get($theme, 'elevation');
+ overflow: hidden;
+ font-size: sizable(var(--ig-caption-font-size), var(--ig-body-2-font-size), var(--ig-body-2-font-size));
+ font-weight: sizable(var(--ig-caption-font-weight), var(--ig-body-2-font-weight), var(--ig-body-2-font-weight));
+ line-height: sizable(var(--ig-caption-line-height), var(--ig-body-2-line-height), var(--ig-body-2-line-height));
+ letter-spacing: sizable(var(--ig-caption-letter-spacing), var(--ig-body-2-letter-spacing), var(--ig-body-2-letter-spacing));
+ text-transform: sizable(var(--ig-caption-text-transform), var(--ig-body-2-text-transform), var(--ig-body-2-text-transform));
+
+ @include e(value) {
+ white-space: nowrap;
+ padding-inline: pad-inline(rem(4px), rem(6px), rem(8px));
+ }
+
+ @include m(info) {
+ background: color($color: 'info', $variant: 800);
+ }
+
+ @include m(success) {
+ background: color($color: 'success', $variant: 900);
+ }
+
+ @include m(warning) {
+ background: color($color: 'warn');
+ color: contrast-color($color: 'warn', $variant: 500);
+
+ igx-icon {
+ color: contrast-color($color: 'warn', $variant: 500);
+ }
+ }
+
+ @include m(error) {
+ background: color($color: 'error', $variant: 700);
+ color: contrast-color($color: 'error', $variant: 900);
+ }
+
+ @include m(outlined) {
+ box-shadow: 0 0 0 rem(2px) var-get($theme, 'border-color');
+ }
+
+ @include m(square) {
+ border-radius: var-get($theme, 'border-radius');
+ }
+
+ @include m(dot) {
+ --_dot-size: #{var-get($theme, 'dot-size')};
+
+ min-width: var(--_dot-size);
+ min-height: var(--_dot-size);
+ padding: 0;
+
+ igx-icon,
+ > * {
+ display: none;
+ }
+ }
+
+ @include m(hidden) {
+ visibility: hidden;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/badge/src/badge/themes/dark/_index.scss b/projects/igniteui-angular/badge/src/badge/themes/dark/_index.scss
new file mode 100644
index 00000000000..2b57c62473b
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/dark/_index.scss
@@ -0,0 +1,7 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+@use 'indigo';
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-badge, $tokens, dark);
diff --git a/projects/igniteui-angular/badge/src/badge/themes/dark/_indigo.scss b/projects/igniteui-angular/badge/src/badge/themes/dark/_indigo.scss
new file mode 100644
index 00000000000..1a503ba3eb4
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/dark/_indigo.scss
@@ -0,0 +1,14 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+@include themed-block(igx-badge, indigo, dark) {
+ @include m(warning) {
+ color: color($color: 'gray', $variant: 50);
+
+ igx-icon {
+ color: color($color: 'gray', $variant: 50);
+ }
+ }
+}
diff --git a/projects/igniteui-angular/badge/src/badge/themes/dark/_tokens.scss b/projects/igniteui-angular/badge/src/badge/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..e97bbab4aab
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/badge' as *;
+
+$material: digest-schema($dark-material-badge);
+$bootstrap: digest-schema($dark-bootstrap-badge);
+$fluent: digest-schema($dark-fluent-badge);
+$indigo: digest-schema($dark-indigo-badge);
diff --git a/projects/igniteui-angular/badge/src/badge/themes/light/_index.scss b/projects/igniteui-angular/badge/src/badge/themes/light/_index.scss
new file mode 100644
index 00000000000..ef28e1a85ae
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-badge, $tokens, light);
diff --git a/projects/igniteui-angular/badge/src/badge/themes/light/_tokens.scss b/projects/igniteui-angular/badge/src/badge/themes/light/_tokens.scss
new file mode 100644
index 00000000000..0643448a04f
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/badge' as *;
+
+$base: digest-schema($light-badge);
+$material: digest-schema($material-badge);
+$bootstrap: digest-schema($bootstrap-badge);
+$fluent: digest-schema($fluent-badge);
+$indigo: digest-schema($indigo-badge);
diff --git a/projects/igniteui-angular/badge/src/badge/themes/shared/_index.scss b/projects/igniteui-angular/badge/src/badge/themes/shared/_index.scss
new file mode 100644
index 00000000000..e9d8e587687
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/shared/_index.scss
@@ -0,0 +1,3 @@
+@forward 'bootstrap';
+@forward 'indigo';
+@forward 'fluent';
diff --git a/projects/igniteui-angular/badge/src/badge/themes/shared/bootstrap.scss b/projects/igniteui-angular/badge/src/badge/themes/shared/bootstrap.scss
new file mode 100644
index 00000000000..78fa4c0eff2
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/shared/bootstrap.scss
@@ -0,0 +1,23 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $bootstrap;
+
+@include themed-block(igx-badge, bootstrap) {
+ @include m(success) {
+ background: color($color: 'success', $variant: 500);
+ }
+
+ @include m(info) {
+ background: color($color: 'info', $variant: 500);
+ }
+
+ @include m(error) {
+ background: color($color: 'error', $variant: 500);
+ color: contrast-color($color: 'error', $variant: 100);
+ }
+}
diff --git a/projects/igniteui-angular/badge/src/badge/themes/shared/fluent.scss b/projects/igniteui-angular/badge/src/badge/themes/shared/fluent.scss
new file mode 100644
index 00000000000..8fc38531e2e
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/shared/fluent.scss
@@ -0,0 +1,22 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $fluent;
+
+@include themed-block(igx-badge, fluent) {
+ @include m(success) {
+ background: color($color: 'success', $variant: 500);
+ }
+
+ @include m(info) {
+ background: color($color: 'info', $variant: 700);
+ }
+
+ @include m(error) {
+ background: color($color: 'error', $variant: 500);
+ }
+}
diff --git a/projects/igniteui-angular/badge/src/badge/themes/shared/indigo.scss b/projects/igniteui-angular/badge/src/badge/themes/shared/indigo.scss
new file mode 100644
index 00000000000..54db2ade96a
--- /dev/null
+++ b/projects/igniteui-angular/badge/src/badge/themes/shared/indigo.scss
@@ -0,0 +1,39 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+@include themed-block(igx-badge, indigo) {
+ --ig-icon-size: #{sizable(rem(8px), rem(10px), rem(12px))};
+
+ @include type-style('button', false) {
+ font-size: sizable(rem(9px), rem(10px), var(--ig-button-font-size));
+ line-height: sizable(rem(12px), rem(14px), var(--ig-button-line-height));
+ }
+
+ @include e(value) {
+ padding-inline: pad-inline(rem(4px), rem(6px), rem(6px));
+ }
+
+ @include m(success) {
+ background: color($color: 'success', $variant: 700);
+ }
+
+ @include m(info) {
+ background: color($color: 'info', $variant: 500);
+ }
+
+ @include m(error) {
+ background: color($color: 'error', $variant: 500);
+ }
+
+ @include m(warning) {
+ color: color($color: 'gray', $variant: 900);
+
+ igx-icon {
+ color: color($color: 'gray', $variant: 900);
+ }
+ }
+}
diff --git a/projects/igniteui-angular/banner/src/banner/banner.component.scss b/projects/igniteui-angular/banner/src/banner/banner.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/banner.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/banner/src/banner/banner.component.spec.ts b/projects/igniteui-angular/banner/src/banner/banner.component.spec.ts
index 0dad3dffeab..cb127d107ec 100644
--- a/projects/igniteui-angular/banner/src/banner/banner.component.spec.ts
+++ b/projects/igniteui-angular/banner/src/banner/banner.component.spec.ts
@@ -596,7 +596,7 @@ export class IgxBannerSampleComponent {
-
+
diff --git a/projects/igniteui-angular/banner/src/banner/banner.component.ts b/projects/igniteui-angular/banner/src/banner/banner.component.ts
index 8de0f4b6ed6..364c5ca8bc7 100644
--- a/projects/igniteui-angular/banner/src/banner/banner.component.ts
+++ b/projects/igniteui-angular/banner/src/banner/banner.component.ts
@@ -8,7 +8,8 @@ import {
inject,
Input,
Output,
- ViewChild
+ ViewChild,
+ ViewEncapsulation
} from '@angular/core';
import { IgxIconComponent } from 'igniteui-angular/icon';
@@ -52,6 +53,8 @@ export interface BannerCancelEventArgs extends BannerEventArgs, CancelableEventA
@Component({
selector: 'igx-banner',
templateUrl: 'banner.component.html',
+ styleUrl: 'banner.component.css',
+ encapsulation: ViewEncapsulation.None,
imports: [IgxExpansionPanelComponent, IgxExpansionPanelBodyComponent, IgxButtonDirective, IgxRippleDirective]
})
export class IgxBannerComponent implements IToggleView {
diff --git a/projects/igniteui-angular/banner/src/banner/themes/_base.scss b/projects/igniteui-angular/banner/src/banner/themes/_base.scss
new file mode 100644
index 00000000000..86976dfc1a6
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/themes/_base.scss
@@ -0,0 +1,92 @@
+@use 'igniteui-theming/sass/animations' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+
+@include layer(base) {
+ %actions {
+ display: flex;
+ flex-wrap: wrap;
+ align-self: flex-end;
+ gap: rem(8px);
+
+ > a {
+ display: inline-flex;
+ align-items: center;
+ }
+ }
+
+ %flex-center-block {
+ display: flex;
+ align-items: center;
+ }
+
+ @include b(igx-banner-host) {
+ igx-expansion-panel-body {
+ padding: 0 !important;
+ }
+ }
+
+ @include b(igx-banner) {
+ @include sizable();
+ --component-size: var(--ig-size, var(--ig-size-large));
+
+ display: flex;
+ justify-content: flex-end;
+ flex-wrap: wrap;
+ gap: rem(8px);
+ padding: rem(16px) rem(8px);
+ min-width: rem(320px);
+ background: var-get($theme, 'banner-background');
+ box-shadow: inset 0 rem(-1px) 0 0 var-get($theme, 'banner-border-color');
+ border-radius: var-get($theme, 'border-radius');
+
+ igc-icon,
+ igx-icon,
+ igc-button,
+ [igxButton] {
+ --component-size: var(--ig-size, var(--ig-size-large));
+ }
+
+ @include e(message) {
+ @extend %flex-center-block;
+
+ min-width: rem(150px);
+ flex: 1 0 0%;
+ gap: rem(16px);
+ padding: 0 rem(8px);
+ }
+
+ @include e(illustration) {
+ @extend %flex-center-block;
+
+ justify-content: center;
+ color: var-get($theme, 'banner-illustration-color');
+ }
+
+ @include e(text) {
+ @include type-style(body-2) {
+ margin-block: 0;
+ }
+
+ color: var-get($theme, 'banner-message-color');
+ flex: 1 0 0%;
+
+ > *:not(hr) {
+ margin-block-start: 0 !important;
+ }
+ }
+
+ @include e(actions) {
+ @extend %actions;
+
+ > igx-banner-actions {
+ @extend %actions;
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/banner/src/banner/themes/dark/_index.scss b/projects/igniteui-angular/banner/src/banner/themes/dark/_index.scss
new file mode 100644
index 00000000000..77734d2b4da
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-banner, $tokens, dark);
diff --git a/projects/igniteui-angular/banner/src/banner/themes/dark/_tokens.scss b/projects/igniteui-angular/banner/src/banner/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..4115c0999b3
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/banner' as *;
+
+$material: digest-schema($dark-material-banner);
+$bootstrap: digest-schema($dark-bootstrap-banner);
+$fluent: digest-schema($dark-fluent-banner);
+$indigo: digest-schema($dark-indigo-banner);
diff --git a/projects/igniteui-angular/banner/src/banner/themes/light/_index.scss b/projects/igniteui-angular/banner/src/banner/themes/light/_index.scss
new file mode 100644
index 00000000000..bc1fd21cac9
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-banner, $tokens, light);
diff --git a/projects/igniteui-angular/banner/src/banner/themes/light/_tokens.scss b/projects/igniteui-angular/banner/src/banner/themes/light/_tokens.scss
new file mode 100644
index 00000000000..b11d036a277
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/banner' as *;
+
+$base: digest-schema($light-banner);
+$material: digest-schema($material-banner);
+$bootstrap: digest-schema($bootstrap-banner);
+$fluent: digest-schema($fluent-banner);
+$indigo: digest-schema($indigo-banner);
diff --git a/projects/igniteui-angular/banner/src/banner/themes/shared/_fluent.scss b/projects/igniteui-angular/banner/src/banner/themes/shared/_fluent.scss
new file mode 100644
index 00000000000..c8e8a5a8ea2
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/themes/shared/_fluent.scss
@@ -0,0 +1,11 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+
+@include themed-block(igx-banner, fluent) {
+ @include e(text) {
+ @include type-style(caption) {
+ margin-block: 0;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/banner/src/banner/themes/shared/_index.scss b/projects/igniteui-angular/banner/src/banner/themes/shared/_index.scss
new file mode 100644
index 00000000000..c0b99f867cc
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/themes/shared/_index.scss
@@ -0,0 +1,2 @@
+@forward 'indigo';
+@forward 'fluent';
diff --git a/projects/igniteui-angular/banner/src/banner/themes/shared/_indigo.scss b/projects/igniteui-angular/banner/src/banner/themes/shared/_indigo.scss
new file mode 100644
index 00000000000..82c6f94d409
--- /dev/null
+++ b/projects/igniteui-angular/banner/src/banner/themes/shared/_indigo.scss
@@ -0,0 +1,23 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$theme: $indigo;
+
+@include themed-block(igx-banner, indigo) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($theme, 'banner-border-color');
+ padding: rem(16px);
+
+ igc-icon,
+ igx-icon,
+ igc-button,
+ [igxButton] {
+ --component-size: var(--ig-size, var(--ig-size-medium));
+ }
+
+ @include e(message) {
+ gap: rem(8px);
+ padding: initial;
+ }
+}
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-content.component.ts b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-content.component.ts
index f9d9a3241cd..3630b2fe5c9 100644
--- a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-content.component.ts
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-content.component.ts
@@ -1,9 +1,10 @@
-import { Component, HostBinding } from '@angular/core';
+import { Component, HostBinding, ViewEncapsulation } from '@angular/core';
import { IgxTabContentBase, IgxTabContentDirective } from 'igniteui-angular/tabs';
@Component({
selector: 'igx-bottom-nav-content',
templateUrl: 'bottom-nav-content.component.html',
+ encapsulation: ViewEncapsulation.None,
providers: [{ provide: IgxTabContentBase, useExisting: IgxBottomNavContentComponent }],
imports: []
})
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-header.component.ts b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-header.component.ts
index 6a043964b57..0c8da59914a 100644
--- a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-header.component.ts
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-header.component.ts
@@ -1,9 +1,10 @@
-import { Component, HostBinding } from '@angular/core';
+import { Component, HostBinding, ViewEncapsulation } from '@angular/core';
import { IgxTabHeaderBase, IgxTabHeaderDirective } from 'igniteui-angular/tabs';
@Component({
selector: 'igx-bottom-nav-header',
templateUrl: 'bottom-nav-header.component.html',
+ encapsulation: ViewEncapsulation.None,
providers: [{ provide: IgxTabHeaderBase, useExisting: IgxBottomNavHeaderComponent }],
standalone: true
})
@@ -23,7 +24,5 @@ export class IgxBottomNavHeaderComponent extends IgxTabHeaderDirective {
/** @hidden */
@HostBinding('class.igx-bottom-nav__menu-item')
- public get cssClass(): boolean {
- return (!this.tab.disabled && !this.tab.selected);
- }
+ public readonly cssClass = 'igx-bottom-nav__menu-item';
}
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-item.component.ts b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-item.component.ts
index 51c62ddc373..45d7d913ee4 100644
--- a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-item.component.ts
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav-item.component.ts
@@ -1,9 +1,10 @@
-import { Component } from '@angular/core';
+import { Component, ViewEncapsulation } from '@angular/core';
import { IgxTabItemDirective } from 'igniteui-angular/tabs';
@Component({
selector: 'igx-bottom-nav-item',
templateUrl: 'bottom-nav-item.component.html',
+ encapsulation: ViewEncapsulation.None,
providers: [{ provide: IgxTabItemDirective, useExisting: IgxBottomNavItemComponent }],
standalone: true
})
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav.component.scss b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav.component.ts b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav.component.ts
index 90de22cd5a7..62738d03249 100644
--- a/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav.component.ts
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/bottom-nav.component.ts
@@ -1,4 +1,4 @@
-import { Component } from '@angular/core';
+import { Component, HostBinding, ViewEncapsulation } from '@angular/core';
import { NgTemplateOutlet } from '@angular/common';
import { IgxTabsBase, IgxTabsDirective } from 'igniteui-angular/tabs';
@@ -40,15 +40,22 @@ let NEXT_BOTTOM_NAV_ITEM_ID = 0;
@Component({
selector: 'igx-bottom-nav',
templateUrl: 'bottom-nav.component.html',
+ styleUrl: 'bottom-nav.component.css',
+ encapsulation: ViewEncapsulation.None,
providers: [{ provide: IgxTabsBase, useExisting: IgxBottomNavComponent }],
imports: [NgTemplateOutlet]
})
export class IgxBottomNavComponent extends IgxTabsDirective {
/** @hidden */
public override disableAnimation = true;
+
/** @hidden */
protected override componentName = 'igx-bottom-nav';
+ /** @hidden @internal */
+ @HostBinding('class.igx-bottom-nav')
+ public readonly hostClass = 'igx-bottom-nav';
+
/** @hidden */
protected getNextTabId() {
return NEXT_BOTTOM_NAV_ITEM_ID++;
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/_base.scss b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/_base.scss
new file mode 100644
index 00000000000..7785c810a31
--- /dev/null
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/_base.scss
@@ -0,0 +1,132 @@
+@use 'igniteui-theming/sass/animations' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+
+@include layer(base) {
+ @include b(igx-bottom-nav) {
+ @include e(panel) {
+ display: block;
+
+ &:focus {
+ outline-style: none;
+ }
+
+ &:empty {
+ display: none;
+ }
+ }
+
+ @include e(menu) {
+ display: flex;
+ position: fixed;
+ justify-content: center;
+ align-items: center;
+ inset-inline-start: 0;
+ inset-inline-end: 0;
+ height: rem(56px);
+ background: var-get($theme, 'background');
+ border-top: rem(1px) solid var-get($theme, 'border-color');
+ overflow: hidden;
+ z-index: 8;
+ }
+
+ @include e(menu, $m: top) {
+ inset-block-start: 0;
+ inset-block-end: inherit;
+ box-shadow: var-get($theme, 'elevation');
+ }
+
+ @include e(menu, $m: bottom) {
+ inset-block-start: inherit;
+ inset-block-end: 0;
+ box-shadow: var-get($theme, 'elevation');
+ }
+
+ @include e(menu-item) {
+ display: flex;
+ position: relative;
+ flex-flow: column nowrap;
+ flex: 1;
+ gap: rem(4px);
+ align-items: center;
+ justify-content: center;
+ min-width: rem(80px);
+ max-width: rem(168px);
+ height: 100%;
+ cursor: pointer;
+ user-select: none;
+ overflow: hidden;
+ padding: 0 rem(12px, 16px);
+ -webkit-tap-highlight-color: transparent;
+ outline-style: none;
+ color: var-get($theme, 'label-color');
+
+ igx-icon {
+ --component-size: 3;
+ }
+
+ [igxBottomNavHeaderIcon] {
+ display: flex;
+ position: relative;
+ justify-content: center;
+ color: var-get($theme, 'icon-color');
+ padding: 0 rem(8px);
+ height: rem(24px);
+ transform: translateZ(0);
+ transition: transform 0.15s $ease-in-out-quad;
+ z-index: 1;
+ }
+
+ [igxBottomNavHeaderLabel] {
+ @include type-style(caption) {
+ margin: 0;
+ }
+
+ @include ellipsis();
+
+ color: var-get($theme, 'label-color');
+ max-width: 100%;
+ text-align: center;
+ transform: translateZ(0);
+ transition: transform 0.15s $ease-in-out-quad;
+ z-index: 1;
+ }
+ }
+
+ @include e(menu-item, $m: selected) {
+ transition:
+ color 0.15s $ease-in-out-quad,
+ opacity 0.25s $ease-in-out-quad;
+
+ [igxBottomNavHeaderIcon] {
+ color: var-get($theme, 'icon-selected-color');
+ inset-block-start: rem(-2px);
+ transform: translateY(-2px);
+ }
+
+ [igxBottomNavHeaderLabel] {
+ color: var-get($theme, 'label-selected-color');
+ transform: translateY(-2px) scale(1.166667);
+ }
+ }
+
+ @include e(menu-item, $m: disabled) {
+ cursor: default;
+ pointer-events: none;
+ opacity: 0.5;
+
+ [igxBottomNavHeaderIcon] {
+ color: var-get($theme, 'icon-disabled-color');
+ }
+
+ [igxBottomNavHeaderLabel] {
+ color: var-get($theme, 'label-disabled-color');
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/dark/_index.scss b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/dark/_index.scss
new file mode 100644
index 00000000000..3d008e60802
--- /dev/null
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-bottom-nav, $tokens, dark);
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/dark/_tokens.scss b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..dd092c3bb75
--- /dev/null
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/bottom-nav' as *;
+
+$material: digest-schema($dark-material-bottom-nav);
+$bootstrap: digest-schema($dark-bootstrap-bottom-nav);
+$fluent: digest-schema($dark-fluent-bottom-nav);
+$indigo: digest-schema($dark-indigo-bottom-nav);
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/light/_index.scss b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/light/_index.scss
new file mode 100644
index 00000000000..da394dea2be
--- /dev/null
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-bottom-nav, $tokens, light);
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/light/_tokens.scss b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/light/_tokens.scss
new file mode 100644
index 00000000000..a6c88b0bbe6
--- /dev/null
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/bottom-nav' as *;
+
+$base: digest-schema($light-bottom-nav);
+$material: digest-schema($material-bottom-nav);
+$bootstrap: digest-schema($bootstrap-bottom-nav);
+$fluent: digest-schema($fluent-bottom-nav);
+$indigo: digest-schema($indigo-bottom-nav);
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/shared/_index.scss b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/shared/_index.scss
new file mode 100644
index 00000000000..ca3dd3bc266
--- /dev/null
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/shared/_index.scss
@@ -0,0 +1 @@
+@forward 'indigo';
diff --git a/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/shared/_indigo.scss b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/shared/_indigo.scss
new file mode 100644
index 00000000000..8994664f911
--- /dev/null
+++ b/projects/igniteui-angular/bottom-nav/src/bottom-nav/themes/shared/_indigo.scss
@@ -0,0 +1,26 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+
+@include themed-block(igx-bottom-nav, indigo) {
+ @include e(menu-item) {
+ igx-icon {
+ --size: #{rem(16px)};
+ }
+
+ [igxBottomNavHeaderIcon],
+ [igxBottomNavHeaderLabel] {
+ transform: unset;
+ transition: none;
+ }
+
+ [igxBottomNavHeaderIcon] {
+ padding: unset;
+ height: auto;
+ }
+ }
+
+ @include e(menu-item, $m: disabled) {
+ opacity: unset;
+ }
+}
diff --git a/projects/igniteui-angular/button-group/src/button-group/button-group-content.component.html b/projects/igniteui-angular/button-group/src/button-group/button-group-content.component.html
index 58f674c856a..0c69724b6cd 100644
--- a/projects/igniteui-angular/button-group/src/button-group/button-group-content.component.html
+++ b/projects/igniteui-angular/button-group/src/button-group/button-group-content.component.html
@@ -1,23 +1,21 @@
-
- @for (button of values; track button) {
-
- }
-
-
+@for (button of values; track button) {
+
+}
+
diff --git a/projects/igniteui-angular/button-group/src/button-group/button-group.component.ts b/projects/igniteui-angular/button-group/src/button-group/button-group.component.ts
index f11590b12c7..ed15c000c91 100644
--- a/projects/igniteui-angular/button-group/src/button-group/button-group.component.ts
+++ b/projects/igniteui-angular/button-group/src/button-group/button-group.component.ts
@@ -1,4 +1,21 @@
-import { AfterViewInit, Component, ContentChildren, ChangeDetectorRef, EventEmitter, HostBinding, Input, Output, QueryList, Renderer2, ViewChildren, OnDestroy, ElementRef, booleanAttribute, inject } from '@angular/core';
+import {
+ AfterViewInit,
+ Component,
+ ContentChildren,
+ ChangeDetectorRef,
+ EventEmitter,
+ HostBinding,
+ Input,
+ Output,
+ QueryList,
+ Renderer2,
+ ViewChildren,
+ OnDestroy,
+ ElementRef,
+ booleanAttribute,
+ ViewEncapsulation,
+ inject
+} from '@angular/core';
import { Subject } from 'rxjs';
import { IgxButtonDirective } from 'igniteui-angular/directives';
import { IgxRippleDirective } from 'igniteui-angular/directives';
@@ -41,6 +58,8 @@ let NEXT_ID = 0;
@Component({
selector: 'igx-buttongroup',
templateUrl: 'button-group-content.component.html',
+ styleUrl: 'buttongroup-content.component.css',
+ encapsulation: ViewEncapsulation.None,
imports: [IgxButtonDirective, IgxRippleDirective, IgxIconComponent]
})
export class IgxButtonGroupComponent implements AfterViewInit, OnDestroy {
@@ -65,12 +84,32 @@ export class IgxButtonGroupComponent implements AfterViewInit, OnDestroy {
@Input()
public id = `igx-buttongroup-${NEXT_ID++}`;
+ /** @hidden @internal */
+ @HostBinding('class.igx-button-group')
+ public cssClass = 'igx-button-group';
+
+ /** @hidden @internal */
+
/**
* @hidden
*/
@HostBinding('style.zIndex')
public zIndex = 0;
+ /**
+ * Sets/gets the role attribute value.
+ *
+ * @example
+ * ```typescript
+ * @ViewChild("MyButtonGroup", { read: IgxButtonGroupComponent })
+ * public badge: IgxButtonGroupComponent;
+ *
+ * buttonGroup.role = 'group';
+ * ```
+ */
+ @HostBinding('attr.role')
+ public role = 'group';
+
/**
* Allows you to set a style using the `itemContentCssClass` input.
* The value should be the CSS class name that will be applied to the button group.
@@ -274,6 +313,7 @@ export class IgxButtonGroupComponent implements AfterViewInit, OnDestroy {
* }
* ```
*/
+ @HostBinding('class.igx-button-group--vertical')
public get isVertical(): boolean {
return this._isVertical;
}
diff --git a/projects/igniteui-angular/button-group/src/button-group/buttongroup-content.component.scss b/projects/igniteui-angular/button-group/src/button-group/buttongroup-content.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/buttongroup-content.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/_base.scss b/projects/igniteui-angular/button-group/src/button-group/themes/_base.scss
new file mode 100644
index 00000000000..f7517ebc1b6
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/_base.scss
@@ -0,0 +1,252 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+@use './light/tokens' as *;
+
+$_theme: $material;
+
+@include layer(base) {
+ @include b(igx-button-group) {
+ --item-min-width: #{rem(42px)};
+ --ig-icon-size: #{rem(18px)};
+
+ display: flex;
+ box-shadow: var-get($_theme, 'elevation');
+ border-radius: var-get($_theme, 'border-radius');
+
+ button {
+ // The margin here is required to fix a bug in Safari #7858
+ margin-top: 0;
+ margin-inline-end: 0;
+ margin-bottom: 0;
+ }
+
+ @include e(item) {
+ @include type-style(button) {
+ text-align: center;
+ }
+
+ border: rem(1px) solid var-get($_theme, 'item-border-color');
+ color: var-get($_theme, 'item-text-color');
+ background: var-get($_theme, 'item-background');
+ min-width: var(--item-min-width);
+ display: flex;
+ flex: 1 0 0%;
+ justify-content: center;
+ align-items: center;
+ text-decoration: none;
+ cursor: pointer;
+ user-select: none;
+ position: relative;
+ z-index: 0;
+
+ igx-icon {
+ color: var-get($_theme, 'item-icon-color');
+ }
+
+ &:hover {
+ z-index: 1;
+ color: var-get($_theme, 'item-hover-text-color');
+ background: var-get($_theme, 'item-hover-background');
+ border-color: var-get($_theme, 'item-hover-border-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-hover-icon-color');
+ }
+ }
+
+ &:active {
+ z-index: 2;
+ color: var-get($_theme, 'item-hover-text-color');
+ background: var-get($_theme, 'item-active-background');
+ border-color: var-get($_theme, 'item-active-border-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-hover-icon-color');
+ }
+ }
+
+ &[igxButton] {
+ border-radius: 0;
+ }
+
+ &[igxButton][disabled='true'] {
+ color: var-get($_theme, 'disabled-text-color');
+ background: var-get($_theme, 'disabled-background-color');
+ border-color: var-get($_theme, 'item-disabled-border');
+
+ igx-icon {
+ color: var-get($_theme, 'disabled-text-color');
+ }
+ }
+
+ &[igxButton].igx-button--focused {
+ z-index: 2;
+ color: var-get($_theme, 'item-focused-text-color');
+ background: var-get($_theme, 'item-focused-background');
+ border-color: var-get($_theme, 'item-focused-border-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-focused-text-color');
+ }
+
+ &:hover {
+ background: var-get($_theme, 'item-focused-hover-background');
+ border-color: var-get($_theme, 'item-focused-hover-border-color');
+ color: var-get($_theme, 'item-focused-hover-text-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-focused-hover-text-color');
+ }
+ }
+
+ &:active {
+ background: var-get($_theme, 'item-active-background');
+ border-color: var-get($_theme, 'item-active-border-color');
+ color: var-get($_theme, 'item-focused-hover-text-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-focused-hover-text-color');
+ }
+ }
+ }
+
+ &:not(:nth-child(1)) {
+ margin-inline-start: rem(-1px);
+ }
+
+ &:first-of-type {
+ border-start-start-radius: inherit;
+ border-end-start-radius: inherit;
+ }
+
+ &:last-of-type {
+ border-start-end-radius: inherit;
+ border-end-end-radius: inherit;
+ }
+ }
+
+ @include e(item, $m: selected) {
+ color: var-get($_theme, 'item-selected-text-color');
+ background: var-get($_theme, 'item-selected-background');
+ border-color: var-get($_theme, 'item-selected-border-color');
+ position: relative;
+ z-index: 1;
+
+ &[igxButton] {
+ border-color: var-get($_theme, 'item-selected-border-color');
+ }
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-icon-color');
+ }
+
+ &:hover {
+ border-color: var-get($_theme, 'item-selected-hover-border-color');
+ color: var-get($_theme, 'item-selected-hover-text-color');
+ background: var-get($_theme, 'item-selected-hover-background');
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-hover-icon-color');
+ }
+ }
+
+ &:active {
+ border-color: var-get($_theme, 'item-selected-active-border-color');
+ color: var-get($_theme, 'item-selected-hover-text-color');
+ background: var-get($_theme, 'item-selected-active-background');
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-hover-icon-color');
+ }
+ }
+
+ &[igxButton].igx-button--focused {
+ background: var-get($_theme, 'item-selected-focus-background');
+ border-color: var-get($_theme, 'item-selected-hover-border-color');
+ color: var-get($_theme, 'item-selected-text-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-icon-color');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'item-selected-hover-text-color');
+ background: var-get($_theme, 'item-selected-focus-hover-background');
+ border-color: var-get($_theme, 'item-selected-border-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-hover-icon-color');
+ }
+ }
+
+ &:active {
+ background: var-get($_theme, 'item-selected-active-background');
+ color: var-get($_theme, 'item-selected-hover-text-color');
+ border-color: var-get($_theme, 'item-selected-active-border-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-hover-icon-color');
+ }
+ }
+ }
+
+ &[igxButton][disabled='true'] {
+ color: var-get($_theme, 'disabled-selected-text-color');
+ background: var-get($_theme, 'disabled-selected-background');
+ border-color: var-get($_theme, 'disabled-selected-border-color');
+
+ igx-icon {
+ color: var-get($_theme, 'disabled-selected-icon-color');
+ }
+ }
+ }
+
+ @include e(item-content) {
+ display: flex;
+ align-items: center;
+ flex-flow: row nowrap;
+ min-width: 0;
+
+ * ~ * {
+ margin-inline-start: rem(10px, 16px);
+ }
+ }
+
+ @include e(button-text) {
+ @include ellipsis();
+
+ width: 100%;
+ }
+
+ @include m(vertical) {
+ flex-flow: column;
+
+ @include e(item) {
+ // in case the display of the group is set to inline-block and the group hase a width,
+ // the items need to have width 100% to fill the group container
+ width: 100%;
+
+ &:not(:nth-child(1)) {
+ margin-top: rem(-1px) !important;
+ margin-inline-start: 0;
+ }
+
+ &:first-of-type {
+ border-start-start-radius: inherit;
+ border-start-end-radius: inherit;
+ border-end-start-radius: 0;
+ border-end-end-radius: 0;
+ }
+
+ &:last-of-type {
+ border-start-start-radius: 0;
+ border-start-end-radius: 0;
+ border-end-start-radius: inherit;
+ border-end-end-radius: inherit;
+ }
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/dark/_index.scss b/projects/igniteui-angular/button-group/src/button-group/themes/dark/_index.scss
new file mode 100644
index 00000000000..12286543b37
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-button-group, $tokens, dark);
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/dark/_tokens.scss b/projects/igniteui-angular/button-group/src/button-group/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..9d1dad4dd22
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/button-group' as *;
+
+$material: digest-schema($dark-material-button-group);
+$bootstrap: digest-schema($dark-bootstrap-button-group);
+$fluent: digest-schema($dark-fluent-button-group);
+$indigo: digest-schema($dark-indigo-button-group);
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/light/_index.scss b/projects/igniteui-angular/button-group/src/button-group/themes/light/_index.scss
new file mode 100644
index 00000000000..291f5c86ffb
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-button-group, $tokens, light);
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/light/_tokens.scss b/projects/igniteui-angular/button-group/src/button-group/themes/light/_tokens.scss
new file mode 100644
index 00000000000..255ef4315ea
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/button-group' as *;
+
+$base: digest-schema($light-button-group);
+$material: digest-schema($material-button-group);
+$bootstrap: digest-schema($bootstrap-button-group);
+$fluent: digest-schema($fluent-button-group);
+$indigo: digest-schema($indigo-button-group);
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/shared/_bootstrap.scss b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_bootstrap.scss
new file mode 100644
index 00000000000..2c9c9c7663f
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_bootstrap.scss
@@ -0,0 +1,20 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $bootstrap;
+
+@include themed-block(igx-button-group, bootstrap) {
+ @include e(item) {
+ &[igxButton].igx-button--focused {
+ box-shadow: 0 0 0 rem(4px) var-get($_theme, 'idle-shadow-color');
+ }
+ }
+
+ @include e(item, $m: selected) {
+ &[igxButton].igx-button--focused {
+ box-shadow: 0 0 0 rem(4px) var-get($_theme, 'selected-shadow-color');
+ }
+ }
+}
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/shared/_fluent.scss b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_fluent.scss
new file mode 100644
index 00000000000..0aef06efabd
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_fluent.scss
@@ -0,0 +1,43 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $fluent;
+
+@include themed-block(igx-button-group, fluent) {
+ $outline-btn-indent: rem(2px);
+
+ @include e(item) {
+ igx-icon {
+ $icon-size: rem(18px);
+
+ --ig-icon-size: #{$icon-size};
+ }
+
+ &[igxButton].igx-button--focused {
+ border-color: var-get($_theme, 'item-border-color');
+
+ &:hover {
+ border-color: var-get($_theme, 'item-focused-hover-border-color');
+ }
+
+ &::after {
+ content: '';
+ position: absolute;
+ inset-block-start: $outline-btn-indent;
+ inset-inline-start: $outline-btn-indent;
+ pointer-events: none;
+ width: calc(100% - (#{$outline-btn-indent} * 2));
+ height: calc(100% - (#{$outline-btn-indent} * 2));
+ box-shadow: 0 0 0 rem(1px) var-get($_theme, 'item-focused-border-color');
+ }
+ }
+ }
+
+ @include e(item, $m: selected) {
+ &[igxButton].igx-button--focused {
+ border-color: var-get($_theme, 'item-selected-hover-border-color');
+ }
+ }
+}
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/shared/_index.scss b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_index.scss
new file mode 100644
index 00000000000..097687c32b5
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_index.scss
@@ -0,0 +1,4 @@
+@forward 'material';
+@forward 'bootstrap';
+@forward 'fluent';
+@forward 'indigo';
\ No newline at end of file
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/shared/_indigo.scss b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_indigo.scss
new file mode 100644
index 00000000000..a1ef43201fc
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_indigo.scss
@@ -0,0 +1,69 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $indigo;
+
+@include themed-block(igx-button-group, indigo) {
+ --item-min-width: rem(32px);
+
+ @include e(item) {
+ @include type-style(body-2);
+
+ padding-inline: pad-inline(rem(6px), rem(8px), rem(10px));
+
+ igx-icon {
+ $icon-size: rem(16px);
+
+ --ig-icon-size: #{$icon-size};
+ }
+
+ &:hover {
+ z-index: 1;
+ }
+
+ &:active {
+ z-index: 2;
+ }
+
+ &[igxButton].igx-button--focused {
+ box-shadow: 0 0 0 rem(3px) var-get($_theme, 'idle-shadow-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-icon-color');
+ }
+
+ &:hover,
+ &:active {
+ igx-icon {
+ color: var-get($_theme, 'item-hover-icon-color');
+ }
+ }
+ }
+ }
+
+ @include e(item, $m: selected) {
+ &[igxButton].igx-button--focused {
+ box-shadow: 0 0 0 rem(3px) var-get($_theme, 'selected-shadow-color');
+ border-color: var-get($_theme, 'item-selected-border-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-icon-color');
+ }
+
+ &:hover,
+ &:active {
+ border-color: var-get($_theme, 'item-selected-hover-border-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-hover-icon-color');
+ }
+ }
+ }
+
+ &[igxButton][disabled='true'] {
+ border: none;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/button-group/src/button-group/themes/shared/_material.scss b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_material.scss
new file mode 100644
index 00000000000..20b0ff29f67
--- /dev/null
+++ b/projects/igniteui-angular/button-group/src/button-group/themes/shared/_material.scss
@@ -0,0 +1,18 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $material;
+
+@include themed-block(igx-button-group, material) {
+ @include e(item, $m: selected) {
+ &[igxButton].igx-button--focused {
+ color: var-get($_theme, 'item-selected-hover-text-color');
+
+ igx-icon {
+ color: var-get($_theme, 'item-selected-hover-icon-color');
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/calendar.component.scss b/projects/igniteui-angular/calendar/src/calendar/calendar.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/calendar.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/calendar/src/calendar/calendar.component.ts b/projects/igniteui-angular/calendar/src/calendar/calendar.component.ts
index c8c8de763ac..71f5c1326e6 100644
--- a/projects/igniteui-angular/calendar/src/calendar/calendar.component.ts
+++ b/projects/igniteui-angular/calendar/src/calendar/calendar.component.ts
@@ -10,7 +10,7 @@ import {
ViewChildren,
QueryList,
booleanAttribute,
- HostListener,
+ HostListener, ViewEncapsulation,
} from '@angular/core';
import { NgTemplateOutlet } from '@angular/common';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
@@ -70,7 +70,19 @@ let NEXT_ID = 0;
],
selector: 'igx-calendar',
templateUrl: 'calendar.component.html',
- imports: [NgTemplateOutlet, IgxCalendarScrollPageDirective, IgxIconComponent, IgxDaysViewComponent, IgxMonthsViewComponent, IgxYearsViewComponent, IgxDateFormatterPipe, IgxMonthViewSlotsCalendar, IgxGetViewDateCalendar]
+ styleUrls: ['calendar.component.css', 'shared-themes/calendar-picker/calendar-picker.component.css'],
+ encapsulation: ViewEncapsulation.None,
+ imports: [
+ NgTemplateOutlet,
+ IgxCalendarScrollPageDirective,
+ IgxIconComponent,
+ IgxDaysViewComponent,
+ IgxMonthsViewComponent,
+ IgxYearsViewComponent,
+ IgxDateFormatterPipe,
+ IgxMonthViewSlotsCalendar,
+ IgxGetViewDateCalendar
+ ]
})
export class IgxCalendarComponent extends IgxCalendarBaseDirective implements AfterViewInit {
/**
diff --git a/projects/igniteui-angular/calendar/src/calendar/calendar.directives.ts b/projects/igniteui-angular/calendar/src/calendar/calendar.directives.ts
index 93688d4dc74..3a479081b07 100644
--- a/projects/igniteui-angular/calendar/src/calendar/calendar.directives.ts
+++ b/projects/igniteui-angular/calendar/src/calendar/calendar.directives.ts
@@ -56,17 +56,17 @@ export abstract class IgxCalendarViewBaseDirective {
standalone: true
})
export class IgxCalendarYearDirective extends IgxCalendarViewBaseDirective {
- @HostBinding('class.igx-calendar-view__item--current')
+ @HostBinding('class.igx-calendar-view-item--current')
public get isCurrent(): boolean {
return CalendarDay.today.year === this.value.getFullYear();
}
- @HostBinding('class.igx-calendar-view__item--selected')
+ @HostBinding('class.igx-calendar-view-item--selected')
public get isSelected(): boolean {
return this.value.getFullYear() === this.date.getFullYear();
}
- @HostBinding('class.igx-calendar-view__item--active')
+ @HostBinding('class.igx-calendar-view-item--active')
public get isActive(): boolean {
return this.isSelected && this.showActive;
}
@@ -81,21 +81,21 @@ export class IgxCalendarYearDirective extends IgxCalendarViewBaseDirective {
standalone: true
})
export class IgxCalendarMonthDirective extends IgxCalendarViewBaseDirective {
- @HostBinding('class.igx-calendar-view__item--current')
+ @HostBinding('class.igx-calendar-view-item--current')
public get isCurrent(): boolean {
const today = CalendarDay.today;
const date = CalendarDay.from(this.value);
return date.year === today.year && date.month === today.month;
}
- @HostBinding('class.igx-calendar-view__item--selected')
+ @HostBinding('class.igx-calendar-view-item--selected')
public get isSelected(): boolean {
return (this.value.getFullYear() === this.date.getFullYear() &&
this.value.getMonth() === this.date.getMonth()
);
}
- @HostBinding('class.igx-calendar-view__item--active')
+ @HostBinding('class.igx-calendar-view-item--active')
public get isActive(): boolean {
return this.isSelected && this.showActive;
}
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/day-item.component.html b/projects/igniteui-angular/calendar/src/calendar/days-view/day-item.component.html
index ea05eb65eb2..3fc372d64a9 100644
--- a/projects/igniteui-angular/calendar/src/calendar/days-view/day-item.component.html
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/day-item.component.html
@@ -1,6 +1,6 @@
@if (showWeekNumbers) {
{{ weekNumberHeader.short | titlecase }}
@@ -17,9 +21,9 @@
-
+
{{ dayName.formatted | titlecase }}
@@ -31,14 +35,23 @@
let isLast = $last; let i = $index
) {
@if (showWeekNumbers) {
-
+
{{ getWeekNumber(week[0]) }}
@@ -47,7 +60,7 @@
@for (day of week; track dateTracker($index, day)) {
{
const day = fixture.debugElement.query(
By.css(
- ".igx-days-view__date:not(.igx-days-view__date--inactive)",
+ ".igx-day-item:not(.igx-day-item--inactive)",
),
);
@@ -365,7 +365,7 @@ describe("Days View Component", () => {
spyOn(instance.pageChanged, "emit");
let days = fixture.debugElement.queryAll(
- By.css(".igx-days-view__date--inactive"),
+ By.css(".igx-day-item--inactive"),
);
UIInteractions.simulateClickAndSelectEvent(
@@ -380,7 +380,7 @@ describe("Days View Component", () => {
});
days = fixture.debugElement.queryAll(
- By.css(".igx-days-view__date--inactive"),
+ By.css(".igx-day-item--inactive"),
);
UIInteractions.simulateClickAndSelectEvent(
@@ -398,22 +398,22 @@ describe("Days View Component", () => {
});
function getInactiveDays(fixture: ComponentFixture) {
- const days = fixture.debugElement.queryAll(By.css(".igx-days-view__date"));
+ const days = fixture.debugElement.queryAll(By.css(".igx-day-item"));
const inactiveDays = fixture.debugElement.queryAll(
By.css(
- ".igx-days-view__date--inactive:not(igx-dasy-view__date--hidden)",
+ ".igx-day-item--inactive:not(igx-dasy-view--hidden)",
),
);
const firstActiveIndex = days.findIndex(
(d: DebugElement) =>
!d.nativeElement.classList.contains(
- "igx-days-view__date--inactive",
+ "igx-day-item--inactive",
),
);
const notHidden = (d: DebugElement) =>
- !d.nativeElement.classList.contains("igx-days-view__date--hidden");
+ !d.nativeElement.classList.contains("igx-day-item--hidden");
const leading = inactiveDays.slice(0, firstActiveIndex).filter(notHidden);
const trailing = inactiveDays
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/days-view.component.ts b/projects/igniteui-angular/calendar/src/calendar/days-view/days-view.component.ts
index b6ccda0b399..eca01b2ddec 100644
--- a/projects/igniteui-angular/calendar/src/calendar/days-view/days-view.component.ts
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/days-view.component.ts
@@ -11,6 +11,7 @@ import {
ElementRef,
ChangeDetectorRef,
ChangeDetectionStrategy,
+ ViewEncapsulation,
inject,
AfterContentChecked
} from '@angular/core';
@@ -52,6 +53,8 @@ let NEXT_ID = 0;
],
selector: 'igx-days-view',
templateUrl: 'days-view.component.html',
+ styleUrl: 'days-view.component.css',
+ encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [IgxDayItemComponent, TitleCasePipe, DayDigitPipe]
})
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/_base.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/_base.scss
new file mode 100644
index 00000000000..ed3c40e2075
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/_base.scss
@@ -0,0 +1,960 @@
+@use 'igniteui-theming/sass/animations' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+
+@mixin range-preview-half($direction) {
+ background: transparent;
+ border-block-color: transparent;
+
+ &::after {
+ content: '';
+ position: absolute;
+ height: var(--_date-size);
+ #{$direction}: 50%;
+ border-block-color: var-get($theme, 'date-range-preview-border-color');
+ width: calc(50% + #{rem(1px)});
+ border-width: var(--_range-border-size);
+ border-inline-color: transparent;
+ border-style: var(--_preview-border-style);
+ }
+}
+
+@include layer(base) {
+ @include b(igx-days-view) {
+ @include sizable();
+
+ --component-size: var(--ig-size, #{var-get($theme, 'default-size')});
+ --dropdown-size: var(--component-size);
+
+ // PRIVATE VARS
+ --_date-size: #{var-get($theme, 'size')};
+ --_date-inner-size: #{var-get($theme, 'inner-size')};
+ --_date-view-row-gap: #{rem(4px)};
+ --_calendar-border-size: #{rem(1px)};
+ --_date-border-size: #{rem(1px)};
+ --_date-border-style: solid;
+ --_range-border-style: solid;
+ --_range-border-size: #{rem(1px)};
+ --_preview-border-style: dashed;
+
+ display: flex;
+ flex-flow: column nowrap;
+ width: 100%;
+ min-width: sizable(rem(290px), rem(314px), rem(360px));
+ color: var-get($theme, 'content-foreground');
+ background: var-get($theme, 'content-background');
+ box-shadow: 0 0 0 var(--_calendar-border-size) var-get($theme, 'border-color');
+ border-radius: var-get($theme, 'border-radius');
+ padding-block: pad-block(rem(16px));
+ padding-inline: pad-inline(rem(12px));
+ overflow: hidden;
+ outline: none;
+ gap: var(--_date-view-row-gap);
+
+ @include type-style(body-1) {
+ font-size: sizable(var(--ig-body-2-font-size), var(--ig-body-2-font-size), var(--ig-body-1-font-size));
+ font-weight: sizable(var(--ig-body-2-font-weight), var(--ig-body-2-font-weight), var(--ig-body-1-font-weight));
+ font-style: sizable(var(--ig-body-2-font-style), var(--ig-body-2-font-style), var(--ig-body-1-font-style));
+ line-height: sizable(var(--ig-body-2-line-height), var(--ig-body-2-line-height), var(--ig-body-1-line-height));
+ letter-spacing: sizable(var(--ig-body-2-letter-spacing), var(--ig-body-2-letter-spacing), var(--ig-body-1-letter-spacing));
+ text-transform: sizable(var(--ig-body-2-text-transform), var(--ig-body-2-text-transform), var(--ig-body-1-text-transform));
+ margin: 0;
+ }
+
+ .igx-days-view,
+ .igx-calendar-view {
+ background: inherit;
+ color: inherit;
+ box-shadow: none;
+ }
+
+ .igx-days-view,
+ .igx-calendar-view,
+ .igx-calendar-picker {
+ border-radius: 0;
+ }
+
+ &:focus,
+ &:focus-within,
+ &:focus-visible {
+ outline: none;
+ }
+
+ @include e(grid) {
+ flex: 1 1 auto;
+ }
+ }
+
+ @include b(igx-days-row) {
+ display: flex;
+ justify-content: space-between;
+
+ &:last-of-type {
+ @include e(day-inner, $m: week-number) {
+ border-end-start-radius: var-get($theme, 'week-number-border-radius');
+ border-end-end-radius: var-get($theme, 'week-number-border-radius');
+
+ &::before {
+ display: none;
+ }
+ }
+ }
+ }
+
+ %igx-day-item-range-selected-first-last {
+ background: transparent;
+ border-block-color: transparent;
+ z-index: 0;
+
+ &::after {
+ content: '';
+ position: absolute;
+ z-index: -1;
+ height: var(--_date-size);
+ width: 50%;
+ color: var-get($theme, 'date-selected-foreground');
+ background: var-get($theme, 'date-selected-range-background');
+ border-width: var(--_range-border-size);
+ }
+
+ &::before {
+ content: '';
+ position: absolute;
+ height: var(--_date-size);
+ width: var(--_date-size);
+ border-radius: var-get($theme, 'date-border-radius');
+ }
+ }
+
+ %igx-day-item-range-selected-first-last-inner {
+ color: var-get($theme, 'date-selected-foreground');
+ background: var-get($theme, 'date-selected-background');
+
+ &:hover {
+ color: var-get($theme, 'date-selected-hover-foreground');
+ background: var-get($theme, 'date-selected-hover-background');
+ }
+ }
+
+ %igx-day-item-range-selected-first-last-inner-focus {
+ color: var-get($theme, 'date-selected-focus-foreground');
+ background: var-get($theme, 'date-selected-focus-background');
+ }
+
+ %range-border-radius {
+ border-radius: var-get($theme, 'date-range-border-radius');
+ }
+
+ %special-selected-firs-last {
+ color: var-get($theme, 'date-selected-foreground');
+ background: var-get($theme, 'date-selected-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-border-color');
+ }
+
+ &:hover {
+ color: var-get($theme, 'date-selected-hover-foreground');
+ background: var-get($theme, 'date-selected-hover-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-hover-border-color');
+ }
+ }
+ }
+
+ %special-selected-firs-last-focus {
+ color: var-get($theme, 'date-selected-focus-foreground');
+ background: var-get($theme, 'date-selected-focus-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-focus-border-color');
+ }
+ }
+
+ %current-selected-firs-last {
+ color: var-get($theme, 'date-selected-foreground');
+ background: var-get($theme, 'date-selected-background');
+ border-color: var-get($theme, 'date-selected-current-border-color');
+ border-radius: var-get($theme, 'date-current-border-radius');
+
+ &:hover {
+ color: var-get($theme, 'date-selected-hover-foreground');
+ background: var-get($theme, 'date-selected-hover-background');
+ border-color: var-get($theme, 'date-selected-current-hover-border-color');
+ }
+ }
+
+ %current-selected-firs-last-focus {
+ color: var-get($theme, 'date-selected-focus-foreground');
+ background: var-get($theme, 'date-selected-focus-background');
+ border-color: var-get($theme, 'date-selected-current-focus-border-color');
+ }
+
+ %igx-range-selected-first-last {
+ &::before {
+ background: var-get($theme, 'content-background');
+ }
+ }
+
+ @include b(igx-day-item) {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: inherit;
+ outline: none;
+ height: var(--_date-size);
+ width: 100%;
+ border-block-start: var(--_range-border-size) var(--_date-border-style) transparent;
+ border-block-end: var(--_range-border-size) var(--_date-border-style) transparent;
+
+ @include e(inner) {
+ position: relative;
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ width: var(--_date-size);
+ height: var(--_date-size);
+ min-width: var(--_date-size);
+ border-radius: var-get($theme, 'date-border-radius');
+ border-width: var(--_date-border-size);
+ border-style: var(--_date-border-style);
+ border-color: var-get($theme, 'date-border-color');
+ z-index: 2;
+
+ &:hover {
+ color: var-get($theme, 'date-hover-foreground');
+ background: var-get($theme, 'date-hover-background');
+ border-color: var-get($theme, 'date-hover-border-color');
+ cursor: pointer;
+ }
+
+ &::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ border-style: var(--_date-border-style);
+ border-color: transparent;
+ }
+ }
+
+ @include e(inner, 'week-number') {
+ border-radius: 0;
+ position: relative;
+ pointer-events: none;
+ z-index: 1;
+
+ min-width: auto;
+ width: var(--_date-size);
+ color: var-get($theme, 'week-number-foreground');
+ background: var-get($theme, 'week-number-background');
+ border-color: var-get($theme, 'week-number-background');
+
+ &::after {
+ display: none !important;
+ }
+
+ &::before {
+ content: '';
+ position: absolute;
+ background: var-get($theme, 'week-number-background');
+ inset-block-start: 100%;
+ height: calc(var(--_date-view-row-gap) + #{rem(2px)});
+ width: var(--_date-size);
+ }
+ }
+
+ @include m(weekend, $not: ('disabled', 'special', 'selected', 'current', 'first', 'last', 'inactive', 'range', 'active')) {
+ @include e(inner) {
+ color: var-get($theme, 'weekend-color');
+
+ &:hover {
+ color: var-get($theme, 'date-hover-foreground');
+ }
+ }
+ }
+
+ @include m(week-number) {
+ margin-inline-end: rem(4px);
+ justify-content: flex-start;
+ width: var-get($theme, 'size');
+ pointer-events: none;
+
+ &:hover,
+ &:focus,
+ &:focus-visible,
+ &:focus-within {
+ @include e(inner, 'week-number') {
+ cursor: default;
+ color: var-get($theme, 'week-number-foreground');
+ }
+ }
+ }
+
+ @include m(inactive, $not: ('disabled', 'special', 'current', 'first', 'last', 'range')) {
+ @include e(inner) {
+ color: var-get($theme, 'inactive-color');
+
+ &:hover {
+ color: var-get($theme, 'date-hover-foreground');
+ }
+ }
+ }
+
+ @include m(active) {
+ @include e(inner) {
+ color: var-get($theme, 'date-focus-foreground');
+ background: var-get($theme, 'date-focus-background');
+ border-color: var-get($theme, 'date-focus-border-color');
+ }
+ }
+
+ // SELECTED
+ @include m(selected) {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-foreground');
+ background: var-get($theme, 'date-selected-background');
+ border-color: var-get($theme, 'date-selected-border-color');
+
+ &:hover {
+ color: var-get($theme, 'date-selected-hover-foreground');
+ background: var-get($theme, 'date-selected-hover-background');
+ border-color: var-get($theme, 'date-selected-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('selected', 'active') {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-focus-foreground');
+ background: var-get($theme, 'date-selected-focus-background');
+ border-color: var-get($theme, 'date-selected-focus-border-color');
+ }
+ }
+
+ // selected + disabled do not exist as combination for now
+
+ // CURRENT
+ @include m(current) {
+ @include e(inner) {
+ color: var-get($theme, 'date-current-foreground');
+ background: var-get($theme, 'date-current-background');
+ border-color: var-get($theme, 'date-current-border-color');
+ border-radius: var-get($theme, 'date-current-border-radius');
+
+ &:hover {
+ color: var-get($theme, 'date-current-hover-foreground');
+ background: var-get($theme, 'date-current-hover-background');
+ border-color: var-get($theme, 'date-current-hover-border-color');
+ }
+
+ &::after {
+ width: var(--_date-inner-size);
+ height: var(--_date-inner-size);
+ }
+ }
+ }
+
+ @include mx('current', 'active') {
+ @include e(inner) {
+ color: var-get($theme, 'date-current-focus-foreground');
+ background: var-get($theme, 'date-current-focus-background');
+ border-color: var-get($theme, 'date-current-focus-border-color');
+ }
+ }
+
+ // Current + selected
+ @include mx('current', 'selected') {
+ @include e(inner) {
+ border-color: var-get($theme, 'date-selected-current-border-color');
+
+ &:hover {
+ border-color: var-get($theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'selected', 'active') {
+ @include e(inner) {
+ border-color: var-get($theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('current', 'selected', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-current-foreground');
+ background: var-get($theme, 'date-selected-current-background') ;
+ border-color: var-get($theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($theme, 'date-selected-current-hover-foreground');
+ background: var-get($theme, 'date-selected-current-hover-background');
+ border-color: var-get($theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'selected', 'active', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-current-focus-foreground');
+ background: var-get($theme, 'date-selected-current-focus-background');
+ border-color: var-get($theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ // Current + range
+ @include mx('current', 'selected', 'first' ) {
+ @include e(inner) {
+ @extend %current-selected-firs-last
+ }
+ }
+
+ @include mx('current', 'selected', 'first', 'active') {
+ @include e(inner) {
+ @extend %current-selected-firs-last-focus
+ }
+ }
+
+ @include mx('current', 'selected', 'last') {
+ @include e(inner) {
+ @extend %current-selected-firs-last
+ }
+ }
+
+ @include mx('current', 'selected', 'last', 'active') {
+ @include e(inner) {
+ @extend %current-selected-firs-last-focus
+ }
+ }
+
+ @include mx('current', 'first', 'last') {
+ @include e(inner) {
+ @extend %current-selected-firs-last
+ }
+ }
+
+ @include mx('current', 'first', 'last', 'active') {
+ @include e(inner) {
+ @extend %current-selected-firs-last-focus
+ }
+ }
+
+ @include mx('current', 'range', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-current-range-foreground');
+ background: var-get($theme, 'date-selected-current-range-background');
+ border-color: var-get($theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($theme, 'date-selected-current-range-hover-foreground');
+ background: var-get($theme, 'date-selected-current-range-hover-background');
+ border-color: var-get($theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'range', 'active', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-current-range-focus-foreground');
+ background: var-get($theme, 'date-selected-current-range-focus-background');
+ border-color: var-get($theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('current', 'disabled') {
+ @include e(inner) {
+ color: var-get($theme, 'date-current-foreground');
+ opacity: .38;
+ }
+ }
+
+ // SPECIAL
+ @include m(special) {
+ @include e(inner) {
+ color: var-get($theme, 'date-special-foreground');
+ background: var-get($theme, 'date-special-background');
+ border-radius: var-get($theme, 'date-special-border-radius');
+
+ &::after {
+ width: var(--_date-size);
+ height: var(--_date-size);
+ border-width: var(--_date-border-size);
+ border-color: var-get($theme, 'date-special-border-color');
+ border-radius: var-get($theme, 'date-special-border-radius');
+ }
+
+ &:hover {
+ color: var-get($theme, 'date-special-hover-foreground');
+ background: var-get($theme, 'date-special-hover-background');
+
+ /* stylelint-disable max-nesting-depth */
+ &::after {
+ border-color: var-get($theme, 'date-special-hover-border-color');
+ }
+ /* stylelint-enable max-nesting-depth */
+ }
+ }
+ }
+
+ @include mx('special', 'active') {
+ @include e(inner) {
+ background: var-get($theme, 'date-special-focus-background');
+ color: var-get($theme, 'date-special-focus-foreground');
+
+ &::after {
+ border-color: var-get($theme, 'date-special-focus-border-color');
+ }
+ }
+ }
+
+ // Special + selected
+ @include mx('special', 'selected') {
+ @include e(inner) {
+ &::after {
+ width: var(--_date-inner-size);
+ height: var(--_date-inner-size);
+ }
+ }
+ }
+
+ @include mx('special', 'selected', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-special-foreground');
+ background: var-get($theme, 'date-selected-special-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-border-color');
+ }
+
+ &:hover {
+ color: var-get($theme, 'date-selected-special-hover-foreground');
+ background: var-get($theme, 'date-selected-special-hover-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('special', 'selected', 'active', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-special-focus-foreground');
+ background: var-get($theme, 'date-selected-special-focus-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-focus-border-color');
+ }
+ }
+ }
+
+ @include mx('special', 'selected', 'first') {
+ @include e(inner) {
+ @extend %special-selected-firs-last;
+ }
+ }
+
+ @include mx('special', 'selected', 'first', 'active') {
+ @include e(inner) {
+ @extend %special-selected-firs-last-focus;
+ }
+ }
+
+ @include mx('special', 'selected', 'last') {
+ @include e(inner) {
+ @extend %special-selected-firs-last;
+ }
+ }
+
+ @include mx('special', 'selected', 'last', 'active') {
+ @include e(inner) {
+ @extend %special-selected-firs-last-focus;
+ }
+ }
+
+ @include mx('special', 'selected', 'first', 'last') {
+ @include e(inner) {
+ @extend %special-selected-firs-last;
+ }
+ }
+
+ @include mx('special', 'selected', 'first', 'last', 'active') {
+ @include e(inner) {
+ @extend %special-selected-firs-last-focus;
+ }
+ }
+
+ // Special + range
+ @include mx('special', 'range', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($theme, 'date-special-range-foreground');
+ background: var-get($theme, 'date-special-range-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-special-range-border-color');
+ }
+
+ &:hover {
+ color: var-get($theme, 'date-special-range-hover-foreground');
+ background: var-get($theme, 'date-special-range-hover-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-special-range-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('special', 'range', 'active', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($theme, 'date-special-range-focus-foreground');
+ background: var-get($theme, 'date-special-range-focus-background');
+
+ &::after {
+ border-color: var-get($theme, 'date-special-range-focus-border-color');
+ }
+ }
+ }
+
+ @include mx('special', 'range', ('not': ('first', 'last', 'current'))) {
+ @include e(inner) {
+ border-color: transparent;
+
+ &::after {
+ width: var(--_date-size);
+ height: var(--_date-size);
+ }
+ }
+ }
+
+ @include mx('special', 'disabled') {
+ @include e(inner) {
+ color: var-get($theme, 'date-special-range-foreground');
+ opacity: .38;
+ }
+ }
+
+ // SPECIAL + CURRENT
+ @include mx('special', 'current') {
+ @include e(inner) {
+ &::after {
+ width: var(--_date-inner-size);
+ height: var(--_date-inner-size);
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'selected') {
+ @include e(inner) {
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-border-color');
+ }
+
+ &:hover {
+ /* stylelint-disable max-nesting-depth */
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-hover-border-color');
+ }
+ /* stylelint-enable max-nesting-depth */
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'selected', 'active') {
+ @include e(inner) {
+ &::after {
+ border-color: var-get($theme, 'date-selected-special-focus-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'special', 'selected', 'first' ) {
+ @include e(inner) {
+ @extend %current-selected-firs-last
+ }
+ }
+
+ @include mx('current', 'special', 'selected', 'first', 'active') {
+ @include e(inner) {
+ @extend %current-selected-firs-last-focus
+ }
+ }
+
+ @include mx('current', 'special', 'selected', 'last') {
+ @include e(inner) {
+ @extend %current-selected-firs-last
+ }
+ }
+
+ @include mx('current', 'special', 'selected', 'last', 'active') {
+ @include e(inner) {
+ @extend %current-selected-firs-last-focus
+ }
+ }
+
+ @include mx('current', 'special', 'first', 'last') {
+ @include e(inner) {
+ @extend %current-selected-firs-last
+ }
+ }
+
+ @include mx('current', 'special', 'first', 'last', 'active') {
+ @include e(inner) {
+ @extend %current-selected-firs-last-focus
+ }
+ }
+
+ // RANGE
+ @include m('range') {
+ border-top-color: var-get($theme, 'date-range-border-color');
+ border-bottom-color: var-get($theme, 'date-range-border-color');
+ background: var-get($theme, 'date-selected-range-background');
+
+ &:hover {
+ border-top-color: var-get($theme, 'date-range-border-color');
+ border-bottom-color: var-get($theme, 'date-range-border-color');
+ }
+
+ @include e(inner) {
+ background: transparent;
+ color: var-get($theme, 'date-selected-range-foreground');
+ }
+ }
+
+ @include m('range', $not: ('first', 'last', 'current', 'special')) {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+ @include mx('range', 'selected') {
+ @include e(inner) {
+ &:hover {
+ background: var-get($theme, 'date-selected-range-hover-background');
+ color: var-get($theme, 'date-selected-range-hover-foreground');
+ }
+ }
+
+ &::after {
+ border-block: var(--_date-border-size) var(--_range-border-style) var-get($theme, 'date-range-border-color');
+ }
+ }
+
+ @include mx('range', 'selected', 'active') {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-range-focus-foreground');
+ background: var-get($theme, 'date-selected-range-focus-background');
+ }
+ }
+
+ @include m('first', $not: ('current', 'special')) {
+ @include e(inner) {
+ @extend %range-border-radius;
+ }
+ }
+
+ @include m('last', $not: ('current', 'special')) {
+ @include e(inner) {
+ @extend %range-border-radius;
+ }
+ }
+
+ @include mx('first', 'last', ('not': ('current', 'special'))) {
+ @include e(inner) {
+ @extend %range-border-radius;
+ }
+ }
+
+ @include mx('range', 'selected', 'first') {
+ @extend %igx-day-item-range-selected-first-last;
+
+ @include e(inner) {
+ @extend %igx-day-item-range-selected-first-last-inner;
+ }
+ }
+
+ @include mx('range', 'selected', 'last') {
+ @extend %igx-day-item-range-selected-first-last;
+
+ @include e(inner) {
+ @extend %igx-day-item-range-selected-first-last-inner;
+ }
+ }
+
+ @include mx('range', 'selected', 'first', 'active') {
+ @include e(inner) {
+ @extend %igx-day-item-range-selected-first-last-inner-focus;
+ }
+ }
+
+ @include mx('range', 'selected', 'last', 'active') {
+ @include e(inner) {
+ @extend %igx-day-item-range-selected-first-last-inner-focus;
+ }
+ }
+
+ // PREVIEW
+ @include m(range-preview) {
+ position: relative;
+ border-block-style: var(--_preview-border-style);
+ border-block-color: var-get($theme, 'date-range-preview-border-color');
+ }
+
+ @include m(range-preview, $not: ('first', 'last', 'current')) {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+ @include mx('range-preview', 'first') {
+ @include range-preview-half('inset-inline-start');
+ }
+
+ @include mx('range-preview', 'last') {
+ @include range-preview-half('inset-inline-end');
+ }
+
+ @include mx('range-preview', 'selected', 'first', ('not': 'active')) {
+ @include e(inner) {
+ &:not(:hover) {
+ color: var-get($theme, 'date-selected-foreground');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'selected', 'last', ('not': 'active')) {
+ @include e(inner) {
+ &:not(:hover) {
+ color: var-get($theme, 'date-selected-foreground');
+ }
+ }
+ }
+
+ @include m(first) {
+ &::after {
+ inset-inline-start: 50%;
+ }
+ }
+
+ @include m(last) {
+ &::after {
+ inset-inline-end: 50%;
+ }
+ }
+
+ @include m(disabled) {
+ pointer-events: none;
+ cursor: not-allowed;
+
+ @include e(inner) {
+ color: var-get($theme, 'date-disabled-foreground');
+ }
+ }
+
+ @include mx('disabled', 'range') {
+ @include e(inner) {
+ color: var-get($theme, 'date-disabled-range-foreground');
+ }
+ }
+
+ @include mx('disabled', 'selected', ('not': 'range')) {
+ @include e(inner) {
+ color: var-get($theme, 'date-selected-foreground');
+ opacity: .38;
+ }
+ }
+
+ @include mx('disabled', 'inactive') {
+ @include e(inner) {
+ opacity: 1;
+ }
+ }
+
+ @include mx('range', 'selected', 'first', 'disabled') {
+ @extend %igx-range-selected-first-last;
+
+ @include e(inner) {
+ opacity: .38;
+ }
+ }
+
+ @include mx('range', 'selected', 'last', 'disabled') {
+ @extend %igx-range-selected-first-last;
+
+ @include e(inner) {
+ opacity: .38;
+ }
+ }
+
+ @include m(hidden) {
+ cursor: default;
+ visibility: hidden;
+ }
+ }
+
+ @include b(igx-day-label) {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ outline: none;
+ height: var(--_date-size);
+ min-width: var(--_date-size);
+ width: 100%;
+ border-block-start: rem(1px) solid transparent;
+ border-block-end: rem(1px) solid transparent;
+ color: var-get($theme, 'weekday-color');
+ border-radius: 0;
+
+ &:hover,
+ &:focus {
+ color: var-get($theme, 'weekday-color');
+ }
+
+ @include type-style(body-1) {
+ font-size: sizable(var(--ig-body-2-font-size), var(--ig-body-2-font-size), var(--ig-body-1-font-size));
+ font-weight: sizable(var(--ig-body-2-font-weight), var(--ig-body-2-font-weight), var(--ig-body-1-font-weight));
+ font-style: sizable(var(--ig-body-2-font-style), var(--ig-body-2-font-style), var(--ig-body-1-font-style));
+ line-height: sizable(var(--ig-body-2-line-height), var(--ig-body-2-line-height), var(--ig-body-1-line-height));
+ letter-spacing: sizable(var(--ig-body-2-letter-spacing), var(--ig-body-2-letter-spacing), var(--ig-body-1-letter-spacing));
+ text-transform: sizable(var(--ig-body-2-text-transform), var(--ig-body-2-text-transform), var(--ig-body-1-text-transform));
+ margin: 0;
+ }
+
+ @include m(week-number) {
+ margin-inline-end: rem(4px);
+ justify-content: flex-start;
+ width: var-get($theme, 'size');
+ text-align: center;
+
+ span {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: var(--_date-size);
+ height: var(--_date-size);
+ position: relative;
+ border-top-left-radius: var-get($theme, 'week-number-border-radius');
+ border-top-right-radius: var-get($theme, 'week-number-border-radius');
+ border: rem(1px) solid transparent;
+
+ > i {
+ @include ellipsis();
+
+ padding: rem(4px);
+ font-style: normal;
+ }
+ }
+ }
+
+ @include e(inner) {
+ @include ellipsis();
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/dark/_index.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/dark/_index.scss
new file mode 100644
index 00000000000..e407593d8bf
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-days-view--standalone, $tokens, dark);
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/dark/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..60a18cbcca7
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/calendar/days-view' as *;
+
+$material: digest-schema($dark-material-days-view);
+$bootstrap: digest-schema($dark-bootstrap-days-view);
+$fluent: digest-schema($dark-fluent-days-view);
+$indigo: digest-schema($dark-indigo-days-view);
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/light/_index.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/light/_index.scss
new file mode 100644
index 00000000000..375603ddb4b
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-days-view--standalone, $tokens, light);
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/light/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/light/_tokens.scss
new file mode 100644
index 00000000000..9b6c309bb61
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/light/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/calendar/days-view' as *;
+
+$material: digest-schema($material-days-view);
+$bootstrap: digest-schema($bootstrap-days-view);
+$fluent: digest-schema($fluent-days-view);
+$indigo: digest-schema($indigo-days-view);
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_bootstrap.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_bootstrap.scss
new file mode 100644
index 00000000000..3fb39730f7c
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_bootstrap.scss
@@ -0,0 +1,482 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $bootstrap;
+
+@include themed-block(igx-days-view, bootstrap) {
+ padding-block-start: 0;
+ padding-block-end: rem(16px);
+ padding-inline: 0;
+
+ + .igx-days-view {
+ .igx-days-row {
+ padding-inline-start: rem(22px);
+ }
+ }
+
+ &:first-child,
+ &:nth-child(even) {
+ .igx-days-row {
+ padding-inline-end: rem(22px);
+ }
+ }
+
+ &:last-child,
+ &:first-child:only-child {
+ .igx-days-row {
+ padding-inline-end: rem(12px);
+ }
+ }
+
+ .igx-date-picker {
+ margin-block-end: 0;
+
+ .igx-calendar-picker {
+ padding-bottom: 0;
+ }
+
+ .igx-calendar-picker__prev,
+ .igx-calendar-picker__next {
+ top: rem(8px);
+ }
+ }
+}
+
+@include themed-block(igx-days-row, bootstrap) {
+ padding-inline: pad-inline(rem(12px));
+
+ &:nth-child(2) {
+ @include e(day-inner, $m: week-number) {
+ border-start-start-radius: var-get($_theme, 'week-number-border-radius');
+ border-start-end-radius: var-get($_theme, 'week-number-border-radius');
+ }
+ }
+
+ &:first-of-type {
+ background: var-get($_theme, 'header-background');
+ border-block-end: rem(1px) solid var-get($_theme, 'border-color');
+ }
+
+ &:last-of-type {
+ margin-block-end: 0;
+ }
+}
+
+@include themed-block(igx-day-item, bootstrap) {
+ // special
+ @include m('special') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-border-radius');
+
+ &::after {
+ border-radius: var-get($_theme, 'date-special-border-radius');
+ }
+ }
+ }
+
+ @include mx('special', 'first') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('special', 'last') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('special', 'range', ('not': ('range-preview', 'current', 'first', 'last'))) {
+ @include e(inner) {
+ border-color: transparent;
+
+ &:hover {
+ border-color: var-get($_theme, 'date-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('special', 'range', 'active', ('not': ('range-preview', 'current', 'first', 'last'))) {
+ @include e(inner) {
+ border-color: var-get($_theme, 'date-focus-border-color');
+ }
+ }
+
+ // current
+ @include mx('current', 'first', 'last') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('current', 'special', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ border-radius: var-get($_theme, 'date-current-border-radius');
+
+ &:hover {
+ color: var-get($_theme, 'date-current-hover-foreground');
+ background: var-get($_theme, 'date-current-hover-background');
+ border-color: var-get($_theme, 'date-current-hover-border-color');
+ }
+
+ &::after {
+ width: var-get($_theme, 'inner-size');
+ height: var-get($_theme, 'inner-size');
+ }
+ }
+ }
+
+ @include mx('current', 'special', 'active', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-focus-foreground');
+ background: var-get($_theme, 'date-current-focus-background');
+ border-color: var-get($_theme, 'date-current-focus-border-color');
+ }
+ }
+
+ @include mx('current', 'special', 'range', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-range-foreground');
+ background: var-get($_theme, 'date-selected-current-range-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-range-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-range-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'special', 'range', 'active', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-range-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-range-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('current', 'special', 'selected', ('not': ('range', 'first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ }
+ }
+ }
+
+ @include mx('current', 'special', 'selected', 'active', ('not': ('range', 'first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ }
+ }
+
+ // range-preview
+ @include m('range-preview') {
+ color: var-get($_theme, 'date-selected-range-foreground');
+ background: var-get($_theme, 'date-selected-range-background');
+ border-block-style: solid;
+
+ &::after {
+ background: var-get($_theme, 'date-selected-range-background');
+ }
+
+ @include e(inner) {
+ border-color: transparent;
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-range-foreground');
+ border-color: transparent;
+ }
+ }
+ }
+
+ @include mx('range-preview', 'first') {
+ background: transparent;
+
+ &::after {
+ width: 50%;
+ border-style: solid;
+ border-inline: 0;
+ }
+
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-foreground');
+ background: var-get($_theme, 'date-selected-background');
+ border-color: var-get($_theme, 'date-selected-border-color');
+ border-radius: var-get($_theme, 'date-range-border-radius');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-hover-foreground');
+ background: var-get($_theme, 'date-selected-hover-background');
+ border-color: var-get($_theme, 'date-selected-hover-border-color');
+ }
+
+ &::after {
+ width: var-get($_theme, 'inner-size');
+ height: var-get($_theme, 'inner-size');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'last') {
+ background: transparent;
+
+ &::after {
+ width: 50%;
+ border-style: solid;
+ border-inline: 0;
+ }
+
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-foreground');
+ background: var-get($_theme, 'date-selected-background');
+ border-color: var-get($_theme, 'date-selected-border-color');
+ border-radius: var-get($_theme, 'date-range-border-radius');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-hover-foreground');
+ background: var-get($_theme, 'date-selected-hover-background');
+ border-color: var-get($_theme, 'date-selected-hover-border-color');
+ }
+
+ &::after {
+ width: var-get($_theme, 'inner-size');
+ height: var-get($_theme, 'inner-size');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'first', 'last') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-foreground');
+ background: var-get($_theme, 'date-selected-background');
+ border-color: var-get($_theme, 'date-selected-border-color');
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('range-preview', 'first', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-focus-foreground');
+ background: var-get($_theme, 'date-selected-focus-background');
+ border-color: var-get($_theme, 'date-selected-focus-border-color');
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('range-preview', 'last', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-focus-foreground');
+ background: var-get($_theme, 'date-selected-focus-background');
+ border-color: var-get($_theme, 'date-selected-focus-border-color');
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ // range-preview + current
+ @include mx('range-preview', 'current') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-current-hover-foreground');
+ background: var-get($_theme, 'date-current-hover-background');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'current', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-focus-foreground');
+ background: var-get($_theme, 'date-current-focus-background');
+ }
+ }
+
+ @include mx('range-preview', 'current', 'first') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-foreground');
+ background: var-get($_theme, 'date-selected-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-hover-foreground');
+ background: var-get($_theme, 'date-selected-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'current', 'last') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-foreground');
+ background: var-get($_theme, 'date-selected-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-hover-foreground');
+ background: var-get($_theme, 'date-selected-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'current', 'active', 'first') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-focus-foreground');
+ background: var-get($_theme, 'date-selected-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('range-preview', 'current', 'active', 'last') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-focus-foreground');
+ background: var-get($_theme, 'date-selected-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ // range-preview + special
+ @include mx('range-preview', 'special', 'first') {
+ @include e(inner) {
+ &::after {
+ width: var-get($_theme, 'inner-size');
+ height: var-get($_theme, 'inner-size');
+ border-color: var-get($_theme, 'date-selected-special-border-color');
+ }
+
+ &:hover {
+ &::after {
+ border-color: var-get($_theme, 'date-selected-special-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('range-preview', 'special', 'last') {
+ @include e(inner) {
+ &::after {
+ width: var-get($_theme, 'inner-size');
+ height: var-get($_theme, 'inner-size');
+ border-color: var-get($_theme, 'date-selected-special-border-color');
+ }
+
+ &:hover {
+ &::after {
+ border-color: var-get($_theme, 'date-selected-special-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('range-preview', 'special', 'active', 'first') {
+ @include e(inner) {
+ &::after {
+ border-color: var-get($_theme, 'date-selected-special-focus-border-color');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'special', 'active', 'last') {
+ @include e(inner) {
+ &::after {
+ border-color: var-get($_theme, 'date-selected-special-focus-border-color');
+ }
+ }
+ }
+
+ // range-preview + weekend
+ @include mx('range-preview', 'weekend', ('not': ('special', 'current', 'first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-range-foreground');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-range-hover-foreground');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'weekend', 'active', ('not': ('special', 'current', 'first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-range-focus-foreground');
+ }
+ }
+
+ // range-preview + inactive
+ @include mx('range-preview', 'inactive', ('not': ('special', 'current', 'first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-range-foreground');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-range-hover-foreground');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'inactive', 'active', ('not': ('special', 'current', 'first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-range-focus-foreground');
+ }
+ }
+
+ // range + current
+ @include mx('range', 'current', 'first') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('range', 'current', 'last') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ // range + special
+ @include mx('range', 'special', 'first') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ // range + special
+ @include mx('range', 'special', 'last') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ // disabled + range-preview
+ @include mx('disabled', 'range-preview', ('not': ('special', 'current', 'first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-disabled-range-foreground');
+ }
+ }
+}
+
+@include themed-block(igx-day-label, bootstrap) {
+ // Important is needed in order to override the typography styles
+ font-style: italic !important;
+
+ @include m('week-number') {
+ text-align: center;
+
+ span {
+ color: var-get($_theme, 'weekday-color');
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_fluent.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_fluent.scss
new file mode 100644
index 00000000000..80bb1bad509
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_fluent.scss
@@ -0,0 +1,1055 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/animations/index' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $fluent;
+
+@include themed-block(igx-days-row, fluent) {
+ height: var(--_date-size);
+
+ &:nth-child(2) {
+ @include e(day, $m: week-number) {
+ border-start-start-radius: var-get($_theme, 'week-number-border-radius');
+ border-start-end-radius: var-get($_theme, 'week-number-border-radius');
+ }
+ }
+}
+
+@include themed-block(igx-day-item, fluent) {
+ --_preview-border-style: solid;
+
+ $fake-bg-size: calc(50% + (var(--_date-size) / 2));
+ $fake-bg-position: #{calc(50% - (var(--_date-size) / 2))};
+
+ // CURRENT
+ @include m(current) {
+ @include e(inner) {
+ background: transparent;
+ border-color: var-get($_theme, 'date-border-color');
+ border-radius: var-get($_theme, 'date-border-radius');
+
+ &::before {
+ content: '';
+ position: absolute;
+ border: var(--_date-border-size) var(--_date-border-style) var-get($_theme, 'date-current-border-color');
+ box-sizing: border-box;
+ width: var(--_date-inner-size);
+ height: var(--_date-inner-size);
+ background: var-get($_theme, 'date-current-background');
+ border-radius: var-get($_theme, 'date-current-border-radius');
+ z-index: -1;
+ }
+
+ &:hover {
+ background: var-get($_theme, 'date-hover-background');
+ border-color: var-get($_theme, 'date-hover-border-color');
+
+ &::before {
+ background: var-get($_theme, 'date-current-hover-background');
+ border-color: var-get($_theme, 'date-current-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('current', 'active') {
+ @include e(inner) {
+ background: var-get($_theme, 'date-focus-background');
+ border-color: var-get($_theme, 'date-focus-border-color');
+
+ &::before {
+ background: var-get($_theme, 'date-current-focus-background');
+ border-color: var-get($_theme, 'date-current-focus-border-color');
+ }
+ }
+ }
+
+ // CURRENT + SELECTED
+ @include mx('current', 'selected') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-foreground');
+ background: var-get($_theme, 'date-selected-background');
+ border-color: var-get($_theme, 'date-selected-border-color');
+
+ &::before {
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+ background: var-get($_theme, 'date-selected-current-background');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-hover-foreground');
+ background: var-get($_theme, 'date-selected-hover-background');
+ border-color: var-get($_theme, 'date-selected-hover-border-color');
+
+ &::before {
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ }
+ }
+ }
+ }
+
+ @include mx('current', 'selected', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-focus-foreground');
+ background: var-get($_theme, 'date-selected-focus-background');
+ border-color: var-get($_theme, 'date-selected-focus-border-color');
+
+ &::before {
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ }
+ }
+ }
+
+ // SPECIAL
+ @include m(special) {
+ @include e(inner) {
+ background: transparent;
+ border-color: var-get($_theme, 'date-border-color');
+ border-radius: var-get($_theme, 'date-border-radius');
+
+ &::after {
+ width: var(--_date-inner-size);
+ height: var(--_date-inner-size);
+ background: var-get($_theme, 'date-special-background');
+ border-color: var-get($_theme, 'date-special-border-color');
+ border-radius: var-get($_theme, 'date-special-border-radius');
+ z-index: -1;
+ }
+
+ &:hover {
+ background: var-get($_theme, 'date-hover-background');
+ border-color: var-get($_theme, 'date-hover-border-color');
+
+ &::after {
+ background: var-get($_theme, 'date-special-hover-background');
+ border-color: var-get($_theme, 'date-special-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('special', 'active') {
+ @include e(inner) {
+ background: var-get($_theme, 'date-focus-background');
+ border-color: var-get($_theme, 'date-focus-border-color');
+
+ &::after {
+ background: var-get($_theme, 'date-special-focus-background');
+ border-color: var-get($_theme, 'date-special-focus-border-color');
+ }
+ }
+ }
+
+ // SPECIAL + SELECTED
+ @include mx('special', 'selected') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-foreground');
+ background: var-get($_theme, 'date-selected-background');
+ border-color: var-get($_theme, 'date-selected-border-color');
+
+ &::after {
+ background: var-get($_theme, 'date-selected-special-background');
+ border-color: var-get($_theme, 'date-selected-special-border-color');
+ border-radius: var-get($_theme, 'date-special-border-radius');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-special-hover-foreground');
+ background: var-get($_theme, 'date-selected-hover-background');
+ border-color: var-get($_theme, 'date-selected-hover-border-color');
+
+ &::after {
+ background: var-get($_theme, 'date-selected-special-hover-background');
+ border-color: var-get($_theme, 'date-selected-special-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('special', 'selected', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-focus-foreground');
+ background: var-get($_theme, 'date-selected-focus-background');
+ border-color: var-get($_theme, 'date-selected-focus-border-color');
+
+ &::after {
+ background: var-get($_theme, 'date-selected-special-focus-background');
+ border-color: var-get($_theme, 'date-selected-special-focus-border-color');
+ }
+ }
+ }
+
+ // CURRENT + SPECIAL
+ @include mx('current', 'special') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+
+ &::after {
+ width: calc(var(--_date-inner-size) - #{rem(4px)});
+ height: calc(var(--_date-inner-size) - #{rem(4px)});
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-foreground');
+ border-radius: var-get($_theme, 'date-current-border-radius');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-current-hover-foreground');
+
+ &::after {
+ background: var-get($_theme, 'date-current-hover-background');
+ border-color: var-get($_theme, 'date-current-hover-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('current', 'special', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-focus-foreground');
+
+ &::after {
+ background: var-get($_theme, 'date-current-focus-background');
+ border-color: var-get($_theme, 'date-current-focus-foreground');
+ }
+ }
+ }
+
+ // CURRENT + SPECIAL + SELECTED
+ @include mx('current', 'special', 'selected') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-foreground');
+
+ &::after {
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-foreground');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-hover-foreground');
+
+ &::after {
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('current', 'special', 'selected', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-focus-foreground');
+
+ &::after {
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-foreground');
+ }
+ }
+ }
+
+ // CURRENT + SPECIAL + SELECTED + RANGE-PREVIEW + FIRST/LAST
+ @include mx('current', 'special', 'selected', 'range-preview', 'first') {
+ @include e(inner) {
+ &:hover {
+ color: var-get($_theme, 'date-current-foreground');
+
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('current', 'special', 'selected', 'range-preview', 'last') {
+ @include e(inner) {
+ &:hover {
+ color: var-get($_theme, 'date-current-foreground');
+
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+ }
+
+ // FIRST + LAST (not current, not special)
+ @include mx('first', 'last', ('not': ('current', 'special'))) {
+ @include e(inner) {
+ color: inherit;
+ background: transparent;
+ border-color: var-get($_theme, 'date-range-preview-border-color');
+ border-radius: var-get($_theme, 'date-range-border-radius');
+
+ &:hover {
+ border-color: var-get($_theme, 'date-range-preview-border-color');
+ }
+ }
+ }
+
+ @include mx('first', 'last', 'active', ('not': ('current', 'special'))) {
+ @include e(inner) {
+ border-color: var-get($_theme, 'date-range-preview-border-color');
+ }
+ }
+
+ // RANGE
+ @include m(range) {
+ background: var-get($_theme, 'date-selected-range-background');
+ border-block-color: var-get($_theme, 'date-range-border-color');
+
+ @include e(inner) {
+ height: 100%;
+ }
+ }
+
+ @include mx('range', 'first') {
+ &::before,
+ &::after {
+ height: var(--_date-size);
+ width: $fake-bg-size;
+ }
+
+ &::before {
+ content: '';
+ position: absolute;
+ width: var(--_date-size);
+ z-index: 3;
+ pointer-events: none;
+ inset-inline-end: initial;
+ border-block: var(--_range-border-size) var(--_range-border-style) var-get($_theme, 'date-range-border-color');
+ border-start-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-start-end-radius: 0;
+ border-end-end-radius: 0;
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-selected-range-background');
+ border-block: var(--_range-border-size) var(--_range-border-style) var-get($_theme, 'date-range-border-color');
+ inset-inline-start: $fake-bg-position;
+ border-start-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-inline-end: 0;
+ }
+
+ @include e(inner) {
+ background: transparent;
+ border-color: transparent;
+
+ &:hover {
+ border-color: transparent;
+ }
+ }
+ }
+
+ @include mx('range', 'last') {
+ &::before,
+ &::after {
+ height: var(--_date-size);
+ width: $fake-bg-size;
+ }
+
+ &::before {
+ content: '';
+ position: absolute;
+ width: var(--_date-size);
+ z-index: 3;
+ pointer-events: none;
+ inset-inline-start: initial;
+ border-block: var(--_range-border-size) var(--_range-border-style) var-get($_theme, 'date-range-border-color');
+ border-start-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-start-start-radius: 0;
+ border-end-start-radius: 0;
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-selected-range-background');
+ border-block: var(--_range-border-size) var(--_range-border-style) var-get($_theme, 'date-range-border-color');
+ inset-inline-end: $fake-bg-position;
+ border-start-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-inline-start: 0;
+ }
+
+ @include e(inner) {
+ background: transparent;
+ border-color: transparent;
+
+ &:hover {
+ border-color: transparent;
+ }
+ }
+ }
+
+ // RANGE-PREVIEW
+ @include mx('range-preview') {
+ @include e(inner) {
+ background: transparent;
+ border-color: transparent;
+
+ &:hover {
+ background: transparent;
+ border-color: transparent;
+ }
+ }
+ }
+
+ @include mx('range-preview', ('not': ('disabled', 'inactive', 'weekend'))) {
+ @include e(inner) {
+ color: inherit;
+ }
+ }
+
+ @include mx('range-preview', 'inactive', ('not': 'current')) {
+ @include e(inner) {
+ color: var-get($_theme, 'inactive-color');
+
+ &:hover {
+ color: var-get($_theme, 'inactive-color');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'weekend', ('not': ('current', 'special', 'inactive', 'disabled'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'weekend-color');
+
+ &:hover {
+ color: var-get($_theme, 'weekend-color');
+ }
+ }
+ }
+
+ @include mx('range-preview', ('not': ('first', 'last', 'current', 'special'))) {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+ @include mx('range-preview', 'first') {
+ color: inherit;
+ border-block-color: transparent;
+
+ &::before,
+ &::after {
+ height: var(--_date-size);
+ width: $fake-bg-size;
+ }
+
+ &::before {
+ content: '';
+ position: absolute;
+ width: var(--_date-size);
+ z-index: 3;
+ pointer-events: none;
+ inset-inline-end: initial;
+ border-start-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-start-end-radius: 0;
+ border-end-end-radius: 0;
+ }
+
+ &::after {
+ background: transparent !important;
+ border-style: var(--_preview-border-style);
+ border-color: var-get($_theme, 'date-range-preview-border-color');
+ inset-inline-start: $fake-bg-position;
+ border-start-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-inline-end: 0;
+ }
+
+ @include e(inner) {
+ border-color: transparent;
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('range-preview', 'last') {
+ color: inherit;
+ border-block-color: transparent;
+
+ &::before,
+ &::after {
+ height: var(--_date-size);
+ width: $fake-bg-size;
+ }
+
+ &::before {
+ content: '';
+ position: absolute;
+ width: var(--_date-size);
+ z-index: 3;
+ pointer-events: none;
+ inset-inline-start: initial;
+ border-start-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-start-start-radius: 0;
+ border-end-start-radius: 0;
+ }
+
+ &::after {
+ background: transparent !important;
+ border-style: var(--_preview-border-style);
+ border-color: var-get($_theme, 'date-range-preview-border-color');
+ inset-inline-end: $fake-bg-position;
+ border-start-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-inline-start: 0;
+ }
+
+ @include e(inner) {
+ border-color: transparent;
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('range-preview', 'first', 'selected') {
+ @include e(inner) {
+ &::after {
+ border-block-color: var-get($_theme, 'date-range-preview-border-color');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'last', 'selected') {
+ @include e(inner) {
+ &::after {
+ border-block-color: var-get($_theme, 'date-range-preview-border-color');
+ }
+ }
+ }
+
+ @include mx('first', 'last', 'current', ('not': 'special')) {
+ @include e(inner) {
+ &::after {
+ display: none;
+ }
+ }
+ }
+
+ @include mx('range-preview', 'first', 'current', ('not': 'special')) {
+ @include e(inner) {
+ &::after {
+ display: none;
+ }
+ }
+ }
+
+ @include mx('range-preview', 'last', 'current', ('not': 'special')) {
+ @include e(inner) {
+ &::after {
+ display: none;
+ }
+ }
+ }
+
+ + .igx-day-item--last {
+ &::after {
+ inset-inline-end: $fake-bg-position;
+ }
+ }
+
+ // RESET HOVER/FOCUS STYLES IN PREVIEW
+ @include mx('range-preview', 'special') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-foreground');
+ background: transparent;
+
+ &::after {
+ background: var-get($_theme, 'date-special-background');
+ border-color: var-get($_theme, 'date-special-border-color');
+ }
+
+ &:hover {
+ background: transparent;
+ color: var-get($_theme, 'date-special-foreground');
+
+ &::after {
+ background: var-get($_theme, 'date-special-background');
+ border-color: var-get($_theme, 'date-special-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('range-preview', 'special', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-foreground');
+ background: transparent;
+
+ &::after {
+ background: var-get($_theme, 'date-special-focus-background');
+ border-color: var-get($_theme, 'date-special-focus-border-color');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'current') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+ background: transparent;
+ border-color: transparent;
+
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-current-foreground');
+ background: transparent;
+ border-color: transparent;
+
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('range-preview', 'current', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+ background: transparent;
+ border-color: transparent;
+
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'current', 'special') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+ background: transparent;
+ border-color: transparent;
+
+ &::after {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+
+ &:hover {
+ &::after {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('range-preview', 'current', 'special', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+ background: transparent;
+ border-color: transparent;
+
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-current-foreground');
+ background: transparent;
+ border-color: transparent;
+
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('selected', 'first', 'last') {
+ @include e(inner) {
+ background: transparent;
+ border-color: var-get($_theme, 'date-range-preview-border-color');
+ border-radius: var-get($_theme, 'date-range-border-radius');
+ }
+ }
+
+ @include mx('selected', 'first', 'last', 'special') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-foreground');
+
+ &::before {
+ border-color: transparent;
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-special-background');
+ border-color: var-get($_theme, 'date-special-border-color');
+ }
+
+ &:hover {
+ &::after {
+ background: var-get($_theme, 'date-special-background');
+ border-color: var-get($_theme, 'date-special-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('selected', 'first', 'last', 'current') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+
+ &:hover {
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('selected', 'first', 'last', 'current', 'special') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-current-foreground');
+
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+
+ &:hover {
+ &::after {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('selected', 'first', 'last', 'current', 'special', 'active') {
+ @include e(inner) {
+ &::after {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'selected', 'special', 'first') {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+ @include mx('range-preview', 'selected', 'special', 'last') {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+ @include mx('range-preview', 'selected', 'current', 'first') {
+ @include e(inner) {
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+ }
+ }
+
+ @include mx('range-preview', 'selected', 'current', 'last') {
+ @include e(inner) {
+ &::before {
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+ }
+ }
+ }
+
+
+
+ // RANGE + SELECTED
+ @include mx('range', 'selected') {
+ background: var-get($_theme, 'date-selected-range-background');
+}
+
+ @include mx('range', 'selected', 'first') {
+ background: transparent;
+ border-color: transparent;
+
+ &::before {
+ background: transparent;
+ border-inline-start: var(--_range-border-size) var(--_range-border-style) var-get($_theme, 'date-range-border-color');
+ border-inline-end: 0;
+ border-start-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-start-radius: var-get($_theme, 'date-range-border-radius');
+ border-start-end-radius: 0;
+ border-end-end-radius: 0;
+
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-selected-range-background');
+ }
+ }
+
+ @include mx('range', 'selected', 'last') {
+ background: transparent;
+ border-color: transparent;
+
+ &::before {
+ background: transparent;
+ border-inline-end: var(--_range-border-size) var(--_range-border-style) var-get($_theme, 'date-range-border-color');
+ border-inline-start: 0;
+ border-start-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-end-end-radius: var-get($_theme, 'date-range-border-radius');
+ border-start-start-radius: 0;
+ border-end-start-radius: 0;
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-selected-range-background');
+ }
+ }
+
+ @include mx('range', 'selected', ('not': ('range-preview', 'special', 'current', 'disabled'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-range-foreground');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-range-hover-foreground');
+ background: var-get($_theme, 'date-selected-range-hover-background');
+ }
+
+ &::before {
+ background: var-get($_theme, 'date-selected-range-background');
+ }
+ }
+ }
+
+ @include mx('range', 'selected', 'active', ('not': ('range-preview', 'special', 'current', 'disabled'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-range-focus-foreground');
+ background: var-get($_theme, 'date-selected-range-focus-background');
+ }
+ }
+
+ @include mx('range', 'selected', 'inactive', ('not': ('range-preview', 'special', 'current', 'disabled'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-range-foreground');
+ }
+ }
+
+ @include mx('range', 'selected', 'special', ('not': 'range-preview')) {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+ @include mx('range', 'selected', 'current', ('not': 'range-preview')) {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+
+ // RANGE + SPECIAL (not preview)
+ @include mx('range', 'special', ('not': 'range-preview')) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-range-foreground');
+ background: transparent;
+ border-radius: var-get($_theme, 'date-range-border-radius');
+
+ &::after {
+ background: var-get($_theme, 'date-special-range-background');
+ border-color: var-get($_theme, 'date-special-range-border-color');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-special-range-hover-foreground');
+ background: var-get($_theme, 'date-selected-range-hover-background');
+
+ &::after {
+ background: var-get($_theme, 'date-special-range-hover-background');
+ border-color: var-get($_theme, 'date-special-range-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('range', 'special', 'active', ('not': 'range-preview')) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-range-focus-foreground');
+ background: var-get($_theme, 'date-selected-range-focus-background');
+
+ &::after {
+ background: var-get($_theme, 'date-special-range-focus-background');
+ border-color: var-get($_theme, 'date-special-range-focus-border-color');
+ }
+ }
+ }
+
+ @include mx('range', 'current', ('not': 'range-preview')) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-range-foreground');
+ background: transparent;
+ border-radius: var-get($_theme, 'date-range-border-radius');
+
+ &::before {
+ background: var-get($_theme, 'date-selected-current-range-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-range-hover-foreground');
+ background: var-get($_theme, 'date-selected-range-hover-background');
+
+ &::before {
+ background: var-get($_theme, 'date-selected-current-range-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('range', 'current', 'active', ('not': 'range-preview')) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-range-focus-foreground');
+ background: var-get($_theme, 'date-selected-range-focus-background');
+
+ &::before {
+ background: var-get($_theme, 'date-selected-current-range-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+ }
+
+ @include mx('range', 'current', 'special', ('not': 'range-preview')) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-range-foreground');
+
+ &::before {
+ background: var-get($_theme, 'date-selected-current-range-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-selected-current-range-background');
+ border-color: var-get($_theme, 'date-selected-current-foreground');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-range-hover-foreground');
+
+ &::before {
+ background: var-get($_theme, 'date-selected-current-range-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-selected-current-range-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-foreground');
+ }
+ }
+ }
+ }
+
+ @include mx('range', 'current', 'special', 'active', ('not': 'range-preview')) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-range-focus-foreground');
+
+ &::before {
+ background: var-get($_theme, 'date-selected-current-range-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+
+ &::after {
+ background: var-get($_theme, 'date-selected-current-range-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-foreground');
+ }
+ }
+ }
+
+ // DISABLED
+ @include mx('range', 'special', 'disabled', ('not': 'range-preview')) {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+ @include mx('range', 'current', 'disabled', ('not': 'range-preview')) {
+ @include e(inner) {
+ border-color: transparent;
+ }
+ }
+
+ @include mx('range', 'special', 'current', 'disabled', ('not': 'range-preview')) {
+ @include e(inner) {
+ &::after {
+ border-color: var-get($_theme, 'date-current-foreground');
+ }
+ }
+ }
+
+}
+
+@include themed-block(igx-day-label, fluent) {
+ @include m('week-number') {
+ $date-view-row-gap: rem(4px);
+
+ span {
+ color: var-get($_theme, 'week-number-foreground');
+ background: var-get($_theme, 'week-number-background');
+
+ &::before {
+ content: '';
+ position: absolute;
+ background: var-get($_theme, 'week-number-background');
+ border-inline: var(--_date-border-size) var(--_date-border-style) var-get($_theme, 'week-number-background');
+ inset-block-start: 100%;
+ height: calc($date-view-row-gap + rem(2px));
+ width: var(--_date-size);
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_index.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_index.scss
new file mode 100644
index 00000000000..0ca60c75786
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_index.scss
@@ -0,0 +1,4 @@
+@forward 'material';
+@forward 'bootstrap';
+@forward 'fluent';
+@forward 'indigo';
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_indigo.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_indigo.scss
new file mode 100644
index 00000000000..1a48458d8a2
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_indigo.scss
@@ -0,0 +1,418 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/animations/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $indigo;
+$date-view-row-gap: rem(4px);
+
+@include themed-block(igx-day-item, indigo) {
+ --_date-border-size: #{rem(2px)};
+
+ // Week number label
+ @include mx('label', 'week-number') {
+ span {
+ border: 0;
+
+ &::before {
+ height: $date-view-row-gap;
+ inset-block-start: 100%;
+ inset-inline-start: 0;
+ border: 0;
+ }
+ }
+ }
+
+ @include m('week-number') {
+ span {
+ border: 0;
+
+ &::before {
+ height: $date-view-row-gap;
+ inset-block-start: 100%;
+ inset-inline-start: 0;
+ border: 0;
+ }
+ }
+ }
+
+ // Special date
+ @include m('special') {
+ @include e(inner) {
+ font-weight: 700;
+
+ &::after {
+ border-width: var(--_date-border-size);
+ }
+ }
+ }
+
+ // CURRENT + SELECTED + FIRST/LAST
+ @include mx('current', 'selected', 'first') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'selected', 'last') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'selected', 'first', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('current', 'selected', 'last', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ // CURRENT + SELECTED + RANGE + FIRST/LAST
+ @include mx('current', 'selected', 'range', 'first') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'selected', 'range', 'last') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-current-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('current', 'selected', 'range', 'first', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('current', 'selected', 'range', 'last', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-current-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ // SPECIAL + SELECTED + FIRST/LAST
+ @include mx('special', 'selected', 'first') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-foreground');
+ background: var-get($_theme, 'date-selected-special-background');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-special-hover-foreground');
+ background: var-get($_theme, 'date-selected-special-hover-background');
+ }
+
+ &::after {
+ border-radius: calc(var-get($_theme, 'date-special-border-radius') - var(--_date-border-size));
+ }
+ }
+ }
+
+ @include mx('special', 'selected', 'last') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-foreground');
+ background: var-get($_theme, 'date-selected-special-background');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-special-hover-foreground');
+ background: var-get($_theme, 'date-selected-special-hover-background');
+ }
+
+ &::after {
+ border-radius: calc(var-get($_theme, 'date-special-border-radius') - var(--_date-border-size));
+ }
+ }
+ }
+
+ @include mx('special', 'selected', 'first', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-focus-foreground');
+ background: var-get($_theme, 'date-selected-special-focus-background');
+ }
+ }
+
+ @include mx('special', 'selected', 'last', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-focus-foreground');
+ background: var-get($_theme, 'date-selected-special-focus-background');
+ }
+ }
+
+ // SPECIAL + SELECTED (not range, preview)
+ @include mx('special', 'selected', ('not': ('range', 'preview'))) {
+ @include e(inner) {
+ &::after {
+ border-radius: calc(var-get($_theme, 'date-special-border-radius') - var(--_date-border-size));
+ }
+ }
+ }
+
+ // SPECIAL + CURRENT + RANGE
+ @include mx('special', 'current') {
+ @include e(inner) {
+ border-radius: var-get($_theme, 'date-current-border-radius');
+
+ &::after {
+ width: calc(var(--_date-inner-size) - #{rem(4px)});
+ height: calc(var(--_date-inner-size) - #{rem(4px)});
+ border-radius: calc(var-get($_theme, 'date-special-border-radius') - var(--_date-border-size));
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'range') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-special-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'range', 'active') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('special', 'current', 'range', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-range-foreground');
+ background: var-get($_theme, 'date-selected-current-range-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-special-range-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-range-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'range', 'active', ('not': ('first', 'last'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-range-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-range-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('special', 'current', 'range', 'first') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-special-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'range', 'last') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-special-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'range', 'active', 'first') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ @include mx('special', 'current', 'range', 'active', 'last') {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+ }
+ }
+
+ // SPECIAL + CURRENT (not range)
+ @include mx('special', 'current', ('not': ('range'))) {
+ @include e(inner) {
+ &::after {
+ width: calc(var(--_date-inner-size) - #{rem(4px)});
+ height: calc(var(--_date-inner-size) - #{rem(4px)});
+ border-radius: calc(var-get($_theme, 'date-special-border-radius') - var(--_date-border-size));
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'active', ('not': ('range'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-special-focus-border-color');
+ }
+ }
+
+ @include mx('special', 'current', ('not': ('selected', 'range'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-foreground');
+ background: var-get($_theme, 'date-current-background');
+ border-color: var-get($_theme, 'date-current-border-color');
+
+ &::after {
+ border-color: var-get($_theme, 'date-special-border-color');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-special-hover-foreground');
+ background: var-get($_theme, 'date-current-hover-background');
+ border-color: var-get($_theme, 'date-current-hover-border-color');
+
+ &::after {
+ border-color: var-get($_theme, 'date-special-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'active', ('not': ('selected', 'range'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-special-focus-foreground');
+ background: var-get($_theme, 'date-current-focus-background');
+ border-color: var-get($_theme, 'date-current-focus-border-color');
+
+ &::after {
+ border-color: var-get($_theme, 'date-special-focus-border-color');
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'selected', ('not': ('range'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-foreground');
+ background: var-get($_theme, 'date-selected-current-background');
+ border-color: var-get($_theme, 'date-selected-current-border-color');
+
+ &::after {
+ border-color: var-get($_theme, 'date-selected-special-border-color');
+ }
+
+ &:hover {
+ color: var-get($_theme, 'date-selected-special-hover-foreground');
+ background: var-get($_theme, 'date-selected-current-hover-background');
+ border-color: var-get($_theme, 'date-selected-current-hover-border-color');
+
+ &::after {
+ border-color: var-get($_theme, 'date-selected-special-hover-border-color');
+ }
+ }
+ }
+ }
+
+ @include mx('special', 'current', 'selected', 'active', ('not': ('range'))) {
+ @include e(inner) {
+ color: var-get($_theme, 'date-selected-special-focus-foreground');
+ background: var-get($_theme, 'date-selected-current-focus-background');
+ border-color: var-get($_theme, 'date-selected-current-focus-border-color');
+
+ &::after {
+ border-color: var-get($_theme, 'date-selected-special-focus-border-color');
+ }
+ }
+ }
+}
+
+@include themed-block(igx-day-label, indigo) {
+ @include e(inner, $m: 'week-number') {
+ border: 0;
+
+ &::before {
+ height: $date-view-row-gap;
+ inset-block-start: 100%;
+ inset-inline-start: 0;
+ border: 0;
+ }
+ }
+
+ @include m(week-number) {
+ span {
+ color: var-get($_theme, 'week-number-foreground');
+ background: var-get($_theme, 'week-number-background');
+ border: 0;
+
+ &::before {
+ content: '';
+ position: absolute;
+ background: var-get($_theme, 'week-number-background');
+ border-inline: var(--_date-border-size) var(--_date-border-style) var-get($_theme, 'week-number-background');
+ inset-block-start: 100%;
+ height: $date-view-row-gap;
+ width: var(--_date-size);
+ inset-inline-start: 0;
+ border: 0;
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_material.scss b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_material.scss
new file mode 100644
index 00000000000..0260309c1d2
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/days-view/themes/shared/_material.scss
@@ -0,0 +1,48 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $material;
+
+@include themed-block(igx-days-row, material) {
+ &:nth-child(2) {
+ @include e(day, $m: week-number) {
+ border-start-start-radius: var-get($_theme, 'week-number-border-radius');
+ border-start-end-radius: var-get($_theme, 'week-number-border-radius');
+ }
+ }
+}
+
+@include themed-block(igx-day-item, material) {
+ @include mx('selected', 'first', 'last') {
+ @include e(inner) {
+ &::after {
+ width: var(--_date-inner-size);
+ height: var(--_date-inner-size);
+ }
+ }
+ }
+}
+
+@include themed-block(igx-day-label, material) {
+ $date-view-row-gap: rem(4px);
+
+ @include m(week-number) {
+ span {
+ color: var-get($_theme, 'week-number-foreground');
+ background: var-get($_theme, 'week-number-background');
+
+ &::before {
+ content: '';
+ position: absolute;
+ background: var-get($_theme, 'week-number-background');
+ border-inline: rem(1px) solid var-get($_theme, 'week-number-background');
+ inset-block-start: 100%;
+ height: calc($date-view-row-gap + rem(2px));
+ width: var(--_date-size);
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.html b/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.html
index 38d59f48875..346cf89d5ce 100644
--- a/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.html
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.html
@@ -66,7 +66,7 @@
-
+
@@ -81,7 +81,7 @@
-
+
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.scss b/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.scss
new file mode 100644
index 00000000000..b65b9dac3ba
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared/bootstrap';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.spec.ts b/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.spec.ts
index ba98c73cb48..8be24bd8611 100644
--- a/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.spec.ts
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.spec.ts
@@ -42,8 +42,8 @@ describe('IgxMonthPicker', () => {
const dom = fixture.debugElement;
- const months = dom.queryAll(By.css('.igx-calendar-view__item'));
- const current = dom.query(By.css('.igx-calendar-view__item--selected'));
+ const months = dom.queryAll(By.css('.igx-calendar-view-item'));
+ const current = dom.query(By.css('.igx-calendar-view-item--selected'));
expect(months.length).toEqual(12);
expect(current.nativeElement.textContent.trim()).toMatch('Feb');
@@ -52,8 +52,8 @@ describe('IgxMonthPicker', () => {
UIInteractions.simulateMouseDownEvent(yearBtn.nativeElement);
fixture.detectChanges();
- const years = dom.queryAll(By.css('.igx-calendar-view__item'));
- const currentYear = dom.query(By.css('.igx-calendar-view__item--selected'));
+ const years = dom.queryAll(By.css('.igx-calendar-view-item'));
+ const currentYear = dom.query(By.css('.igx-calendar-view-item--selected'));
expect(years.length).toEqual(15);
expect(currentYear.nativeElement.textContent.trim()).toMatch('2019');
@@ -123,7 +123,7 @@ describe('IgxMonthPicker', () => {
const defaultViews = { day: false, month: true, year: false };
const yearBtn = dom.query(By.css('.igx-calendar-picker__date'));
- const month = dom.queryAll(By.css('.igx-calendar-view__item'))[0];
+ const month = dom.queryAll(By.css('.igx-calendar-view-item'))[0];
expect(monthPicker.formatOptions).toEqual(jasmine.objectContaining(defaultOptions));
expect(monthPicker.formatViews).toEqual(jasmine.objectContaining(defaultViews));
@@ -137,7 +137,7 @@ describe('IgxMonthPicker', () => {
monthPicker.formatOptions = formatOptions;
fixture.detectChanges();
- const march = dom.queryAll(By.css('.igx-calendar-view__item'))[2];
+ const march = dom.queryAll(By.css('.igx-calendar-view-item'))[2];
expect(monthPicker.formatOptions).toEqual(jasmine.objectContaining(Object.assign(defaultOptions, formatOptions)));
expect(monthPicker.formatViews).toEqual(jasmine.objectContaining(Object.assign(defaultViews, formatViews)));
@@ -146,7 +146,7 @@ describe('IgxMonthPicker', () => {
UIInteractions.simulateMouseDownEvent(yearBtn.nativeElement);
fixture.detectChanges();
- const year = dom.queryAll(By.css('.igx-calendar-view__item'))[0];
+ const year = dom.queryAll(By.css('.igx-calendar-view-item'))[0];
expect(year.nativeElement.textContent.trim()).toMatch('10');
});
@@ -163,7 +163,7 @@ describe('IgxMonthPicker', () => {
fixture.detectChanges();
const yearBtn = dom.query(By.css('.igx-calendar-picker__date'));
- const month = dom.queryAll(By.css('.igx-calendar-view__item'))[2];
+ const month = dom.queryAll(By.css('.igx-calendar-view-item'))[2];
expect(yearBtn.nativeElement.textContent.trim()).toMatch('2019');
expect(month.nativeElement.textContent.trim()).toMatch('Mär');
@@ -176,14 +176,14 @@ describe('IgxMonthPicker', () => {
const dom = fixture.debugElement;
const monthPicker = fixture.componentInstance.monthPicker;
- const months = dom.queryAll(By.css('.igx-calendar-view__item'));
+ const months = dom.queryAll(By.css('.igx-calendar-view-item'));
spyOn(monthPicker.selected, 'emit');
UIInteractions.simulateMouseDownEvent(months[2].nativeElement.firstChild);
fixture.detectChanges();
- const currentMonth = dom.query(By.css('.igx-calendar-view__item--selected'));
+ const currentMonth = dom.query(By.css('.igx-calendar-view-item--selected'));
expect(monthPicker.selected.emit).toHaveBeenCalled();
expect(currentMonth.nativeElement.textContent.trim()).toEqual('Mar');
@@ -204,7 +204,7 @@ describe('IgxMonthPicker', () => {
monthPicker.selectDate(nextDay);
fixture.detectChanges();
- const currentMonth = dom.query(By.css('.igx-calendar-view__item--selected'));
+ const currentMonth = dom.query(By.css('.igx-calendar-view-item--selected'));
const yearBtn = dom.query(By.css('.igx-calendar-picker__date'));
expect(currentMonth.nativeElement.textContent.trim()).toEqual('Apr');
@@ -383,7 +383,7 @@ describe('IgxMonthPicker', () => {
UIInteractions.simulateMouseDownEvent(yearBtn.nativeElement);
fixture.detectChanges();
- const year = dom.query(By.css('.igx-calendar-view__item'));
+ const year = dom.query(By.css('.igx-calendar-view-item'));
UIInteractions.simulateMouseDownEvent(year.nativeElement);
fixture.detectChanges();
@@ -404,20 +404,20 @@ describe('IgxMonthPicker', () => {
wrapper.nativeElement.focus();
fixture.detectChanges();
- let selectedYear = dom.query(By.css('.igx-calendar-view__item--selected'));
+ let selectedYear = dom.query(By.css('.igx-calendar-view-item--selected'));
expect(selectedYear.nativeElement.textContent.trim()).toMatch('2019');
UIInteractions.triggerKeyDownEvtUponElem('ArrowDown' , document.activeElement);
fixture.detectChanges();
- selectedYear = dom.query(By.css('.igx-calendar-view__item--selected'));
+ selectedYear = dom.query(By.css('.igx-calendar-view-item--selected'));
expect(selectedYear.nativeElement.textContent.trim()).toMatch('2022');
UIInteractions.triggerKeyDownEvtUponElem('ArrowUp' , document.activeElement);
UIInteractions.triggerKeyDownEvtUponElem('ArrowUp' , document.activeElement);
fixture.detectChanges();
- selectedYear = dom.query(By.css('.igx-calendar-view__item--selected'));
+ selectedYear = dom.query(By.css('.igx-calendar-view-item--selected'));
expect(selectedYear.nativeElement.textContent.trim()).toMatch('2016');
UIInteractions.triggerKeyDownEvtUponElem('Enter' , document.activeElement);
@@ -433,8 +433,8 @@ describe('IgxMonthPicker', () => {
const dom = fixture.debugElement;
const monthPicker = fixture.componentInstance.monthPicker;
- const months = dom.queryAll(By.css('.igx-calendar-view__item'));
- let currentMonth = dom.query(By.css('.igx-calendar-view__item--selected'));
+ const months = dom.queryAll(By.css('.igx-calendar-view-item'));
+ let currentMonth = dom.query(By.css('.igx-calendar-view-item--selected'));
expect(months.length).toEqual(12);
expect(currentMonth.nativeElement.textContent.trim()).toMatch('Feb');
@@ -445,16 +445,16 @@ describe('IgxMonthPicker', () => {
UIInteractions.triggerKeyDownEvtUponElem('Home' , document.activeElement);
fixture.detectChanges();
- currentMonth = dom.query(By.css('.igx-calendar-view__item--selected'));
+ currentMonth = dom.query(By.css('.igx-calendar-view-item--selected'));
- expect(months.at(0).nativeElement.classList).toContain('igx-calendar-view__item--selected');
+ expect(months.at(0).nativeElement.classList).toContain('igx-calendar-view-item--selected');
expect(currentMonth.nativeElement.textContent.trim()).toMatch('Jan');
UIInteractions.triggerKeyDownEvtUponElem('End' , currentMonth.nativeElement );
fixture.detectChanges();
- currentMonth = dom.query(By.css('.igx-calendar-view__item--selected'));
+ currentMonth = dom.query(By.css('.igx-calendar-view-item--selected'));
- expect(months.at(-1).nativeElement.classList).toContain('igx-calendar-view__item--selected');
+ expect(months.at(-1).nativeElement.classList).toContain('igx-calendar-view-item--selected');
expect(currentMonth.nativeElement.textContent.trim()).toMatch('Dec');
UIInteractions.triggerKeyDownEvtUponElem('ArrowLeft' , document.activeElement );
@@ -465,7 +465,7 @@ describe('IgxMonthPicker', () => {
UIInteractions.triggerKeyDownEvtUponElem('ArrowRight' , document.activeElement );
fixture.detectChanges();
- currentMonth = dom.query(By.css('.igx-calendar-view__item--selected'));
+ currentMonth = dom.query(By.css('.igx-calendar-view-item--selected'));
expect(currentMonth.nativeElement.textContent.trim()).toMatch('Sep');
UIInteractions.triggerKeyDownEvtUponElem('Enter' , document.activeElement );
@@ -516,7 +516,7 @@ describe('IgxMonthPicker', () => {
expect(monthPicker.activeViewChanged.emit).toHaveBeenCalled();
expect(monthPicker.activeView).toEqual('decade');
- const selectedYear = dom.query(By.css('.igx-calendar-view__item--selected'));
+ const selectedYear = dom.query(By.css('.igx-calendar-view-item--selected'));
UIInteractions.simulateMouseDownEvent(selectedYear.nativeElement.firstChild);
fixture.detectChanges();
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.ts b/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.ts
index d41f3b4721d..fdf82fe16f8 100644
--- a/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.ts
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.ts
@@ -7,6 +7,7 @@ import {
ElementRef,
AfterViewInit,
OnInit,
+ ViewEncapsulation,
} from "@angular/core";
import { NgTemplateOutlet } from "@angular/common";
import { NG_VALUE_ACCESSOR } from "@angular/forms";
@@ -35,6 +36,8 @@ let NEXT_ID = 0;
],
selector: "igx-month-picker",
templateUrl: "month-picker.component.html",
+ styleUrls: ['month-picker.component.css', '../shared-themes/calendar-picker/calendar-picker.component.css'],
+ encapsulation: ViewEncapsulation.None,
imports: [
NgTemplateOutlet,
IgxDateFormatterPipe,
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/_base.scss b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/_base.scss
new file mode 100644
index 00000000000..6558c554e17
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/_base.scss
@@ -0,0 +1,52 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+@include layer(base) {
+ @include b(igx-month-picker) {
+ display: flex;
+ overflow: hidden;
+ min-width: sizable(rem(290px), rem(314px), rem(360px));
+ color: var-get($theme, 'content-foreground');
+ background: var-get($theme, 'content-background');
+ box-shadow: 0 0 0 rem(1px) var-get($theme, 'border-color');
+ border-radius: var-get($theme, 'border-radius');
+
+ outline: none;
+
+ .igx-calendar-view {
+ color: inherit;
+ background: inherit;
+ box-shadow: none;
+ border-radius: 0;
+ }
+
+ .igx-calendar__wrapper {
+ display: flex;
+ width: 100%;
+ flex-direction: column;
+ outline-style: none;
+ }
+
+ .igx-calendar__aria-off-screen {
+ position: absolute !important;
+ border: none !important;
+ height: 1px !important;
+ width: 1px !important;
+ inset-inline-start: 0 !important;
+ top: 0 !important;
+ overflow: hidden !important;
+ padding: 0 !important;
+ margin: 0 !important;
+ user-select: none;
+ pointer-events: none;
+
+ &:focus {
+ outline: none;
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/dark/_index.scss b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/dark/_index.scss
new file mode 100644
index 00000000000..e9f15eac213
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-month-picker, $tokens, dark);
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/dark/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..090c646657c
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/calendar/year-month-view' as *;
+
+$material: digest-schema($dark-material-year-month);
+$bootstrap: digest-schema($dark-bootstrap-year-month);
+$fluent: digest-schema($dark-fluent-year-month);
+$indigo: digest-schema($dark-indigo-year-month);
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/light/_index.scss b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/light/_index.scss
new file mode 100644
index 00000000000..3f9ee6dae67
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-month-picker, $tokens, light);
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/light/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/light/_tokens.scss
new file mode 100644
index 00000000000..4de32013b1a
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/calendar/year-month-view' as *;
+
+$base: digest-schema($light-year-month);
+$material: digest-schema($material-year-month);
+$bootstrap: digest-schema($bootstrap-year-month);
+$fluent: digest-schema($fluent-year-month);
+$indigo: digest-schema($indigo-year-month);
diff --git a/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/shared/_bootstrap.scss b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/shared/_bootstrap.scss
new file mode 100644
index 00000000000..6b580c2dbfd
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/month-picker/themes/shared/_bootstrap.scss
@@ -0,0 +1,16 @@
+@use 'sass:math';
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $bootstrap;
+
+@include themed-block(igx-month-picker, bootstrap) {
+ .igx-calendar-picker {
+ // TODO, EXPOUSE NEW VARIABLE ON VIEW LEVEL
+ //border-block-end: rem(1px) solid var-get($_theme, 'border-color');
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.html b/projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.html
index 8fcda69dff5..cb0e35e4f6d 100644
--- a/projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.html
+++ b/projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.html
@@ -3,7 +3,7 @@
-
+
{{ formattedMonth(month).formatted | titlecase }}
diff --git a/projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.ts b/projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.ts
index 41e34c6e3c8..8b3bb947e7b 100644
--- a/projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.ts
+++ b/projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.ts
@@ -4,6 +4,7 @@ import {
HostBinding,
ElementRef,
booleanAttribute,
+ ViewEncapsulation,
inject,
} from "@angular/core";
import { IgxCalendarMonthDirective } from "../calendar.directives";
@@ -32,6 +33,8 @@ let NEXT_ID = 0;
],
selector: "igx-months-view",
templateUrl: "months-view.component.html",
+ styleUrl: '../shared-themes/years-months/years-months.component.css',
+ encapsulation: ViewEncapsulation.None,
imports: [IgxCalendarMonthDirective, TitleCasePipe]
})
export class IgxMonthsViewComponent extends IgxCalendarViewDirective implements ControlValueAccessor {
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/calendar-picker.component.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/calendar-picker.component.scss
new file mode 100644
index 00000000000..0216db48578
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/calendar-picker.component.scss
@@ -0,0 +1,7 @@
+// igx-calendar-picker picker is used in inside igx-calendar and igx-month-picker
+// both of witch are standalone components.
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
+
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/_base.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/_base.scss
new file mode 100644
index 00000000000..8096f183b53
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/_base.scss
@@ -0,0 +1,83 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+
+@include layer(base) {
+ @include b(igx-calendar-picker) {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: rem(24px);
+ position: relative;
+ color: var-get($theme, 'picker-foreground');
+ background: var-get($theme, 'picker-background');
+ margin: 0;
+
+ &:focus,
+ &:focus-within {
+ outline: none;
+ }
+
+ @include e(dates) {
+ display: flex;
+ gap: rem(4px);
+ }
+
+ @include e(nav) {
+ display: flex;
+ position: absolute;
+ inset-inline-end: rem(16px);
+ }
+
+ @include e(date) {
+ color: var-get($theme, 'picker-foreground');
+ text-align: center;
+ outline: none;
+ transition: color 150ms ease-in-out 0s;
+
+ &:hover {
+ color: var-get($theme, 'picker-hover-foreground');
+ cursor: pointer;
+ }
+
+ &:focus {
+ color: var-get($theme, 'picker-focus-foreground');
+ }
+ }
+
+ // Styles for the previous/next month/year view
+ %igx-calendar-picker__prev-next {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: var-get($theme, 'navigation-color');
+ user-select: none;
+ outline: none;
+ cursor: pointer;
+
+ &:hover {
+ color: var-get($theme, 'navigation-hover-color');
+ }
+
+ &:focus {
+ color: var-get($theme, 'navigation-focus-color');
+ }
+
+ [dir='rtl'] & {
+ transform: scaleX(-1);
+ }
+ }
+
+ @include e(prev) {
+ @extend %igx-calendar-picker__prev-next;
+ }
+
+ @include e(next) {
+ @extend %igx-calendar-picker__prev-next;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/dark/_index.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/dark/_index.scss
new file mode 100644
index 00000000000..ed154599b38
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-calendar-picker--standalone, $tokens, dark);
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/dark/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..97892e930b4
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/calendar/picker' as *;
+
+$material: digest-schema($dark-material-picker);
+$bootstrap: digest-schema($dark-bootstrap-picker);
+$fluent: digest-schema($dark-fluent-picker);
+$indigo: digest-schema($dark-indigo-picker);
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/light/_index.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/light/_index.scss
new file mode 100644
index 00000000000..ee5ba349548
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-calendar-picker--standalone, $tokens, light);
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/light/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/light/_tokens.scss
new file mode 100644
index 00000000000..4f34564acb7
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/calendar/picker' as *;
+
+$base: digest-schema($light-picker);
+$material: digest-schema($material-picker);
+$bootstrap: digest-schema($bootstrap-picker);
+$fluent: digest-schema($fluent-picker);
+$indigo: digest-schema($indigo-picker);
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_bootstrap.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_bootstrap.scss
new file mode 100644
index 00000000000..5445e6e71b9
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_bootstrap.scss
@@ -0,0 +1,36 @@
+@use 'sass:math';
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $bootstrap;
+
+@include themed-block(igx-calendar-picker, bootstrap) {
+ height: rem(56px);
+ padding-inline: rem(16px);
+
+ igx-icon {
+ --size: #{rem(24px)};
+ }
+
+ @include e(dates) {
+ @include type-style(subtitle-1) {
+ margin: 0;
+ }
+ }
+
+ @include e(nav) {
+ gap: rem(24px);
+ }
+
+ @include e(prev) {
+ top: rem(4px);
+ }
+
+ @include e(next) {
+ top: rem(4px);
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_fluent.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_fluent.scss
new file mode 100644
index 00000000000..b9bfd69d606
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_fluent.scss
@@ -0,0 +1,28 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/animations/index' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $fluent;
+
+@include themed-block(igx-calendar-picker, fluent) {
+ height: rem(56px);
+ padding-inline: rem(16px);
+
+ igx-icon {
+ --size: #{rem(24px)};
+ }
+
+ @include e(dates) {
+ @include type-style(subtitle-2) {
+ margin: 0;
+ }
+ }
+
+ @include e(nav) {
+ gap: rem(8px);
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_index.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_index.scss
new file mode 100644
index 00000000000..0ca60c75786
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_index.scss
@@ -0,0 +1,4 @@
+@forward 'material';
+@forward 'bootstrap';
+@forward 'fluent';
+@forward 'indigo';
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_indigo.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_indigo.scss
new file mode 100644
index 00000000000..2fd808885ca
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_indigo.scss
@@ -0,0 +1,35 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/animations/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $indigo;
+
+@include themed-block(igx-calendar-picker, indigo) {
+ height: rem(50px);
+ padding-inline: rem(16px);
+
+ igx-icon {
+ --size: #{rem(14px)};
+ }
+
+ @include e(dates) {
+ @include type-style(subtitle-2) {
+ margin: 0;
+ }
+ }
+
+ @include e(nav) {
+ gap: rem(8px);
+ }
+
+ @include e(prev) {
+ padding: rem(5px);
+ }
+
+ @include e(next) {
+ padding: rem(5px);
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_material.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_material.scss
new file mode 100644
index 00000000000..6ca2c7f180e
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/calendar-picker/themes/shared/_material.scss
@@ -0,0 +1,26 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $material;
+
+@include themed-block(igx-calendar-picker, material) {
+ height: rem(56px);
+ padding-inline: rem(24px);
+
+ igx-icon {
+ --size: #{rem(24px)};
+ }
+
+ @include e(nav) {
+ gap: rem(24px);
+ }
+
+ @include e(dates) {
+ @include type-style(subtitle-1) {
+ margin: 0;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/_base.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/_base.scss
new file mode 100644
index 00000000000..f659df62706
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/_base.scss
@@ -0,0 +1,127 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+
+@include layer(base) {
+ @include b(igx-calendar-view) {
+ @include sizable();
+
+ --component-size: var(--ig-size, #{var-get($theme, 'default-size')});
+ --dropdown-size: var(--component-size);
+
+ display: flex;
+ justify-content: center;
+ position: relative;
+ z-index: 1;
+ grid-column: 1 / -1;
+ padding-inline: pad-inline(rem(8px), rem(8px), rem(16px));
+ color: var-get($theme, 'content-foreground');
+ background: var-get($theme, 'content-background');
+ box-shadow: 0 0 0 rem(1px) var-get($theme, 'border-color');
+ border-radius: var-get($theme, 'border-radius');
+ padding-block: pad-block(rem(16px));
+
+ &:focus,
+ &:focus-within,
+ &:focus-visible {
+ outline: none;
+ }
+
+ @include type-style(body-1, false) {
+ font-size: sizable(var(--ig-body-2-font-size), var(--ig-body-2-font-size), var(--ig-body-1-font-size));
+ font-weight: sizable(var(--ig-body-2-font-weight), var(--ig-body-2-font-weight), var(--ig-body-1-font-weight));
+ font-style: sizable(var(--ig-body-2-font-style), var(--ig-body-2-font-style), var(--ig-body-1-font-style));
+ line-height: sizable(var(--ig-body-2-line-height), var(--ig-body-2-line-height), var(--ig-body-1-line-height));
+ letter-spacing: sizable(var(--ig-body-2-letter-spacing), var(--ig-body-2-letter-spacing), var(--ig-body-1-letter-spacing));
+ text-transform: sizable(var(--ig-body-2-text-transform), var(--ig-body-2-text-transform), var(--ig-body-1-text-transform));
+ margin: 0;
+ }
+
+ @include e(items) {
+ display: grid;
+ grid-template-columns: repeat(3, minmax(max-content, 1fr));
+ row-gap: rem(4px);
+ column-gap: rem(8px);
+ width: 100%;
+ }
+ }
+
+ @include b(igx-calendar-view-item) {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ @include m('current') {
+ @include e(inner) {
+ color: var-get($theme, 'ym-current-foreground');
+ background: var-get($theme, 'ym-current-background');
+
+ &:hover {
+ color: var-get($theme, 'ym-current-hover-foreground');
+ background: var-get($theme, 'ym-current-hover-background');
+ }
+ }
+ }
+
+ @include m('selected') {
+ @include e(inner) {
+ color: var-get($theme, 'ym-selected-foreground');
+ background: var-get($theme, 'ym-selected-background');
+
+ &:hover {
+ color: var-get($theme, 'ym-selected-hover-foreground');
+ background: var-get($theme, 'ym-selected-hover-background');
+ }
+ }
+ }
+
+ @include mx('selected', 'active') {
+ @include e(inner) {
+ color: var-get($theme, 'ym-selected-hover-foreground');
+ background: var-get($theme, 'ym-selected-hover-background');
+ }
+ }
+
+ @include mx('selected', 'current') {
+ @include e(inner) {
+ color: var-get($theme, 'ym-selected-current-foreground');
+ background: var-get($theme, 'ym-selected-current-background');
+
+ &:hover {
+ color: var-get($theme, 'ym-selected-current-hover-foreground');
+ background: var-get($theme, 'ym-selected-current-hover-background');
+ }
+ }
+ }
+
+ @include mx('selected', 'current', 'active') {
+ @include e(inner) {
+ color: var-get($theme, 'ym-selected-current-hover-foreground');
+ background: var-get($theme, 'ym-selected-current-hover-background');
+ }
+ }
+
+ @include e(inner) {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: var-get($theme, 'size');
+ width: 100%;
+ border-radius: var-get($theme, 'ym-border-radius');
+ padding: 0 rem(12px);
+ outline: none;
+ cursor: pointer;
+ position: relative;
+ max-width: rem(240px);
+
+ &:hover {
+ color: var-get($theme, 'ym-hover-foreground');
+ background: var-get($theme, 'ym-hover-background');
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/dark/_index.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/dark/_index.scss
new file mode 100644
index 00000000000..b5734074272
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-calendar-view--standalone, $tokens, dark);
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/dark/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..090c646657c
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/calendar/year-month-view' as *;
+
+$material: digest-schema($dark-material-year-month);
+$bootstrap: digest-schema($dark-bootstrap-year-month);
+$fluent: digest-schema($dark-fluent-year-month);
+$indigo: digest-schema($dark-indigo-year-month);
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/light/_index.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/light/_index.scss
new file mode 100644
index 00000000000..308ea36d2f5
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-calendar-view--standalone, $tokens, light);
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/light/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/light/_tokens.scss
new file mode 100644
index 00000000000..4de32013b1a
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes/index' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/calendar/year-month-view' as *;
+
+$base: digest-schema($light-year-month);
+$material: digest-schema($material-year-month);
+$bootstrap: digest-schema($bootstrap-year-month);
+$fluent: digest-schema($fluent-year-month);
+$indigo: digest-schema($indigo-year-month);
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_bootstrap.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_bootstrap.scss
new file mode 100644
index 00000000000..41d365d02c4
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_bootstrap.scss
@@ -0,0 +1,57 @@
+@use 'sass:math';
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $bootstrap;
+
+@include themed-block(igx-calendar-view-item, bootstrap) {
+ @include m('current') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-hover-color');
+ }
+ }
+ }
+
+ @include mx('current', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-focus-color');
+ }
+ }
+
+ @include m('selected') {
+ @include e(inner) {
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-hover-outline-color');
+ }
+ }
+ }
+
+ @include mx('selected', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-focus-outline-color');
+ }
+ }
+
+ @include mx('selected', 'current') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-hover-color');
+ }
+ }
+ }
+
+ @include mx('selected', 'current', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-focus-color');
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_fluent.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_fluent.scss
new file mode 100644
index 00000000000..06b0fddde91
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_fluent.scss
@@ -0,0 +1,57 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/animations/index' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $fluent;
+
+@include themed-block(igx-calendar-view-item, fluent) {
+ @include m('current') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-hover-color');
+ }
+ }
+ }
+
+ @include mx('current', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-focus-color');
+ }
+ }
+
+ @include m('selected') {
+ @include e(inner) {
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-hover-outline-color');
+ }
+ }
+ }
+
+ @include mx('selected', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-focus-outline-color');
+ }
+ }
+
+ @include mx('selected', 'current') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-hover-color');
+ }
+ }
+ }
+
+ @include mx('selected', 'current', 'active') {
+ .igx-calendar-view__item-inner {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-focus-color');
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_index.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_index.scss
new file mode 100644
index 00000000000..0ca60c75786
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_index.scss
@@ -0,0 +1,4 @@
+@forward 'material';
+@forward 'bootstrap';
+@forward 'fluent';
+@forward 'indigo';
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_indigo.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_indigo.scss
new file mode 100644
index 00000000000..1e7997939e4
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_indigo.scss
@@ -0,0 +1,80 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/animations/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $indigo;
+
+@include themed-block(igx-calendar-view-item, indigo) {
+ @include m('current') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(2px) var-get($_theme, 'ym-current-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(2px) var-get($_theme, 'ym-current-outline-hover-color');
+ }
+ }
+ }
+
+ @include mx('current', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(2px) var(--content-background),
+ 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-focus-color');
+ }
+ }
+
+ @include m('selected') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(2px) var-get($_theme, 'ym-selected-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(2px) var-get($_theme, 'ym-selected-hover-outline-color');
+ }
+ }
+ }
+
+ @include mx('selected', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(2px) var-get($_theme, 'ym-selected-focus-outline-color');
+ }
+ }
+
+ @include mx('selected', 'current') {
+ @include e(inner) {
+ &::after {
+ border-color: var-get($_theme, 'ym-selected-current-outline-color');
+ }
+
+ &:hover {
+ &::after {
+ border-color: var-get($_theme, 'ym-selected-current-outline-hover-color');
+ }
+ }
+ }
+ }
+
+ @include mx('selected', 'current', 'active') {
+ @include e(inner) {
+ &::after {
+ border-color: var-get($_theme, 'ym-selected-current-outline-focus-color');
+ }
+ }
+ }
+
+ @include e(inner) {
+ &::after {
+ content: '';
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ inset-inline-start: 0;
+ inset-block-start: 0;
+ z-index: 0;
+ border-radius: inherit;
+ border: rem(2px) solid transparent;
+ pointer-events: none;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_material.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_material.scss
new file mode 100644
index 00000000000..51356eb184d
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/themes/shared/_material.scss
@@ -0,0 +1,58 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $material;
+
+@include themed-block(igx-calendar-view-item, material) {
+ @include m('current') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-hover-color');
+ }
+ }
+ }
+
+ @include mx('current', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var(--content-background),
+ 0 0 0 rem(1px) var-get($_theme, 'ym-current-outline-focus-color');
+ }
+ }
+
+ @include m('selected') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-hover-outline-color');
+ }
+ }
+ }
+
+ @include mx('selected', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-focus-outline-color');
+ }
+ }
+
+ @include mx('selected', 'current') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-color');
+
+ &:hover {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-hover-color');
+ }
+ }
+ }
+
+ @include mx('selected', 'current', 'active') {
+ @include e(inner) {
+ box-shadow: inset 0 0 0 rem(1px) var-get($_theme, 'ym-selected-current-outline-focus-color');
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/years-months.component.scss b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/years-months.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/shared-themes/years-months/years-months.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/_base.scss b/projects/igniteui-angular/calendar/src/calendar/themes/_base.scss
new file mode 100644
index 00000000000..93d5567e83b
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/_base.scss
@@ -0,0 +1,135 @@
+@use 'igniteui-theming/sass/animations' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+
+@include layer(base) {
+ @include b(igx-calendar) {
+ @include sizable();
+
+ --component-size: var(--ig-size, #{var-get($theme, 'default-size')});
+ --dropdown-size: var(--component-size);
+
+ display: flex;
+ flex-flow: column nowrap;
+ width: 100%;
+ color: var-get($theme, 'content-foreground');
+ background: var-get($theme, 'content-background');
+ box-shadow: 0 0 0 rem(1px) var-get($theme, 'border-color');
+ border-radius: var-get($theme, 'border-radius');
+ min-width: sizable(rem(290px), rem(314px), rem(360px));
+ overflow: hidden;
+ outline: none;
+
+ .igx-days-view,
+ .igx-calendar-view {
+ background: inherit;
+ color: inherit;
+ box-shadow: none;
+ }
+
+ .igx-days-view,
+ .igx-calendar-view,
+ .igx-calendar-picker {
+ border-radius: 0;
+ }
+
+ @include e(header) {
+ display: flex;
+ flex-direction: column;
+ color: var-get($theme, 'header-foreground');
+ background: var-get($theme, 'header-background');
+ position: relative;
+ }
+
+ @include e(wrapper) {
+ display: flex;
+ width: 100%;
+ flex-direction: column;
+ outline-style: none;
+ }
+
+ @include e(wrapper, $m: 'vertical') {
+ display: grid;
+ grid-template-rows: repeat(#{calc(var(--calendar-months) * 2)}, auto);
+
+ .igx-days-view {
+ grid-row: var(--calendar-row-start);
+ }
+ }
+
+ @include e(pickers) {
+ display: flex;
+ flex-grow: 1;
+ grid-row: var(--calendar-row-start);
+
+ &:focus-visible {
+ outline: none;
+ }
+
+ > * {
+ flex-grow: 1;
+ }
+ }
+
+ @include e(pickers, $m: 'days') {
+ display: grid;
+ grid-template-columns: repeat(var(--calendar-months), 1fr);
+ }
+
+ @include e(pickers, $m: 'vertical') {
+ display: contents;
+ }
+
+ @include e(body) {
+ display: grid;
+ grid-template-columns: repeat(var(--calendar-months), 1fr);
+ }
+
+ @include e(body, $m: 'vertical') {
+ display: contents;
+ }
+
+ @include e(header-year) {
+ color: currentColor;
+ }
+
+ @include e(header-date) {
+ display: flex;
+
+ > span {
+ @include ellipsis();
+ }
+ }
+
+ @include m(vertical) {
+ flex-flow: row nowrap;
+
+ @include e(header-date) {
+ flex-wrap: wrap;
+ }
+ }
+
+ @include e(aria-off-screen) {
+ position: absolute !important;
+ border: none !important;
+ height: 1px !important;
+ width: 1px !important;
+ inset-inline-start: 0 !important;
+ top: 0 !important;
+ overflow: hidden !important;
+ padding: 0 !important;
+ margin: 0 !important;
+ user-select: none;
+ pointer-events: none;
+
+ &:focus {
+ outline: none;
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/dark/_index.scss b/projects/igniteui-angular/calendar/src/calendar/themes/dark/_index.scss
new file mode 100644
index 00000000000..57ae4882b8c
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-calendar, $tokens, dark);
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/dark/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..c53c918d42b
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/calendar' as *;
+
+$material: digest-schema($dark-material-calendar);
+$bootstrap: digest-schema($dark-bootstrap-calendar);
+$fluent: digest-schema($dark-fluent-calendar);
+$indigo: digest-schema($dark-indigo-calendar);
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/light/_index.scss b/projects/igniteui-angular/calendar/src/calendar/themes/light/_index.scss
new file mode 100644
index 00000000000..e823eee44dd
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-calendar, $tokens, light);
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/light/_tokens.scss b/projects/igniteui-angular/calendar/src/calendar/themes/light/_tokens.scss
new file mode 100644
index 00000000000..aadd28b7384
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/calendar' as *;
+
+$base: digest-schema($light-calendar);
+$material: digest-schema($material-calendar);
+$bootstrap: digest-schema($bootstrap-calendar);
+$fluent: digest-schema($fluent-calendar);
+$indigo: digest-schema($indigo-calendar);
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/shared/_bootstrap.scss b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_bootstrap.scss
new file mode 100644
index 00000000000..ff225fcdf15
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_bootstrap.scss
@@ -0,0 +1,44 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $bootstrap;
+
+@include themed-block(igx-calendar, bootstrap) {
+ @include e(header) {
+ padding: rem(16px);
+ }
+
+ @include e(pickers, $m: 'vertical') {
+ .igx-calendar-picker__prev,
+ .igx-calendar-picker__next, {
+ transform: rotate(90deg)
+ }
+ }
+
+ @include e(header-year) {
+ @include type-style(body-2);
+ min-height: rem(24px);
+ margin: 0;
+ }
+
+ @include e(header-date) {
+ @include type-style(h4);
+ padding-block-end: rem(8px);
+ margin: 0;
+ }
+
+ @include m(vertical) {
+ @include e(header) {
+ min-width: rem(168px);
+ width: rem(168px);
+ }
+
+ @include e(header-date) {
+ padding-block-end: rem(8px);
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/shared/_fluent.scss b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_fluent.scss
new file mode 100644
index 00000000000..653d4dbfc49
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_fluent.scss
@@ -0,0 +1,44 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/color/functions' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/animations/index' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $fluent;
+
+@include themed-block(igx-calendar, fluent) {
+ @include e(header) {
+ padding: rem(16px);
+ }
+
+ @include e(pickers, $m: 'days') {
+ gap: rem(40px);
+ }
+
+ @include e(body) {
+ column-gap: rem(44px);
+ }
+
+ @include e(header-year) {
+ @include type-style(overline);
+ margin: 0;
+ }
+
+ @include e(header-date) {
+ @include type-style(h4);
+ margin: 0;
+ }
+
+ @include m(vertical) {
+ @include e(header) {
+ min-width: rem(168px);
+ width: rem(168px);
+ }
+
+ @include e(header-date) {
+ margin: 0;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/shared/_index.scss b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_index.scss
new file mode 100644
index 00000000000..0ca60c75786
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_index.scss
@@ -0,0 +1,4 @@
+@forward 'material';
+@forward 'bootstrap';
+@forward 'fluent';
+@forward 'indigo';
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/shared/_indigo.scss b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_indigo.scss
new file mode 100644
index 00000000000..9c5ce285a2f
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_indigo.scss
@@ -0,0 +1,69 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/animations/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $indigo;
+
+@include themed-block(igx-calendar, indigo) {
+ @include e(header) {
+ padding: rem(16px);
+ gap: rem(2px);
+
+ &::after {
+ content: '';
+ position: absolute;
+ background: var-get($_theme, 'border-color');
+ inset-block-start: calc(100% - #{rem(1px)});
+ inset-inline-start: 0;
+ height: rem(1px);
+ width: 100%;
+ }
+ }
+
+ @include e(pickers, $m: 'vertical') {
+ .igx-calendar-picker__prev,
+ .igx-calendar-picker__next, {
+ transform: rotate(90deg)
+ }
+ }
+
+ @include e(pickers, $m: 'days') {
+ gap: rem(40px);
+ }
+
+ @include e(body) {
+ column-gap: rem(44px);
+ }
+
+ @include e(header-year) {
+ @include type-style(body-2);
+ margin: 0;
+ }
+
+ @include e(header-date) {
+ @include type-style(h5);
+ margin: 0;
+ }
+
+ @include m(vertical) {
+ @include e(header) {
+ min-width: rem(136px);
+ width: rem(136px);
+
+ &::after {
+ inset-inline-start: calc(100% - #{rem(1px)});
+ inset-block-start: 0;
+ height: 100%;
+ width: rem(1px);
+ }
+ }
+
+ @include e(header-date) {
+ margin: 0;
+ }
+ }
+
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/themes/shared/_material.scss b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_material.scss
new file mode 100644
index 00000000000..e2efb77edc9
--- /dev/null
+++ b/projects/igniteui-angular/calendar/src/calendar/themes/shared/_material.scss
@@ -0,0 +1,59 @@
+@use 'igniteui-theming/sass/bem/index' as *;
+@use 'igniteui-theming/sass/typography/index' as *;
+@use 'igniteui-theming/sass/themes/functions' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $material;
+
+@include themed-block(igx-calendar, material) {
+ @include e(header) {
+ padding: rem(16px) rem(24px);
+ gap: rem(28px);
+ }
+
+ @include e(pickers, $m: 'vertical') {
+ .igx-calendar-picker__prev,
+ .igx-calendar-picker__next, {
+ transform: rotate(90deg)
+ }
+ }
+
+ @include e(pickers, $m: 'days') {
+ gap: rem(40px);
+ }
+
+ @include e(body) {
+ &:not(.igx-calendar__body--vertical) {
+ .igx-days-view + .igx-days-view {
+ padding-inline-start: rem(22px);
+ }
+
+ .igx-days-view:first-child,
+ .igx-days-view:nth-child(even) {
+ padding-inline-end: rem(22px);
+ }
+
+ .igx-days-view:last-child {
+ padding-inline-end: pad-block(rem(12px));
+ }
+ }
+ }
+
+ @include e(header-year) {
+ @include type-style(overline);
+ margin: 0;
+ }
+
+ @include e(header-date) {
+ @include type-style(h4);
+ margin: 0;
+ }
+
+ @include m(vertical) {
+ @include e(header) {
+ min-width: rem(168px);
+ width: rem(168px);
+ }
+ }
+}
diff --git a/projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.html b/projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.html
index 2f83bea48d9..98d4b33ca53 100644
--- a/projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.html
+++ b/projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.html
@@ -3,7 +3,7 @@
-
+
{{ formattedYear(year).formatted }}
diff --git a/projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.ts b/projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.ts
index adde79ae3d5..6fab7ed01e8 100644
--- a/projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.ts
+++ b/projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.ts
@@ -3,6 +3,7 @@ import {
Input,
HostBinding,
ElementRef,
+ ViewEncapsulation,
inject,
} from "@angular/core";
import { IgxCalendarYearDirective } from "../calendar.directives";
@@ -28,6 +29,8 @@ import { CalendarDay, calendarRange, PlatformUtil } from 'igniteui-angular/core'
],
selector: "igx-years-view",
templateUrl: "years-view.component.html",
+ styleUrl: '../shared-themes/years-months/years-months.component.css',
+ encapsulation: ViewEncapsulation.None,
imports: [IgxCalendarYearDirective]
})
export class IgxYearsViewComponent extends IgxCalendarViewDirective implements ControlValueAccessor {
diff --git a/projects/igniteui-angular/card/src/card/card.component.scss b/projects/igniteui-angular/card/src/card/card.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/card.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/card/src/card/card.component.ts b/projects/igniteui-angular/card/src/card/card.component.ts
index 8e1dda11c68..f3fd025405c 100644
--- a/projects/igniteui-angular/card/src/card/card.component.ts
+++ b/projects/igniteui-angular/card/src/card/card.component.ts
@@ -1,4 +1,15 @@
-import { Component, Directive, HostBinding, Input, OnInit, OnChanges, SimpleChanges, booleanAttribute, inject } from '@angular/core';
+import {
+ Component,
+ Directive,
+ HostBinding,
+ Input,
+ OnInit,
+ OnChanges,
+ SimpleChanges,
+ booleanAttribute,
+ ViewEncapsulation,
+ inject
+} from '@angular/core';
let NEXT_ID = 0;
@@ -185,6 +196,8 @@ export class IgxCardFooterDirective {
@Component({
selector: 'igx-card',
templateUrl: 'card.component.html',
+ encapsulation: ViewEncapsulation.None,
+ styleUrl: 'card.component.css',
standalone: true
})
export class IgxCardComponent {
diff --git a/projects/igniteui-angular/card/src/card/themes/_base.scss b/projects/igniteui-angular/card/src/card/themes/_base.scss
new file mode 100644
index 00000000000..6f21514ff78
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/_base.scss
@@ -0,0 +1,242 @@
+@use 'igniteui-theming/sass/animations' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+@use 'light/tokens' as *;
+
+$theme: $material;
+
+@include layer(base) {
+ %h-actions {
+ display: flex;
+ align-items: center;
+ gap: rem(8px);
+ color: var-get($theme, 'actions-text-color');
+
+ &:empty {
+ display: none;
+ }
+ }
+
+ %v-actions {
+ flex-direction: column;
+
+ [igxButton] ~ [igxButton] {
+ margin-inline-start: 0;
+ margin-top: rem(8px);
+ }
+ }
+
+ %actions--justified {
+ justify-content: space-around;
+ flex-grow: 1;
+
+ &:empty {
+ display: none;
+ }
+ }
+
+ @include b(igx-card) {
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ border-radius: var-get($theme, 'border-radius');
+ background: var-get($theme, 'background');
+ transition: box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
+ backface-visibility: hidden;
+ border: rem(1px) solid var-get($theme, 'outline-color');
+
+ &:hover {
+ box-shadow: none;
+ }
+
+ igx-avatar {
+ --ig-size: 1;
+ }
+
+ @include e(media) {
+ display: block;
+ overflow: hidden;
+ line-height: 0;
+
+ > * {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+ }
+
+ @include e(media, $m: right) {
+ width: auto;
+ margin-inline-start: auto;
+ order: 9999;
+ }
+
+ @include m(elevated) {
+ box-shadow: var-get($theme, 'resting-elevation');
+ border: rem(1px) solid var-get($theme, 'outline-color');
+
+ &:hover {
+ box-shadow: var-get($theme, 'hover-elevation');
+ }
+ }
+
+ @include m(horizontal) {
+ flex-direction: row;
+ }
+ }
+
+ @include b(igx-card-header) {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: center;
+ width: 100%;
+ padding: rem(16px);
+ color: var-get($theme, 'header-text-color');
+
+ &:empty {
+ display: block;
+ padding: 0;
+ }
+
+ @include e(thumbnail) {
+ margin-inline-end: rem(16px);
+
+ &:empty {
+ display: none;
+ }
+ }
+
+ @include e(titles) {
+ display: flex;
+ flex-flow: column nowrap;
+ overflow: hidden;
+ flex: 1 1 auto;
+ justify-content: center;
+
+ &:empty {
+ display: none;
+ }
+ }
+
+ @include e(subtitle) {
+ color: var-get($theme, 'subtitle-text-color');
+ }
+
+ @include m(vertical) {
+ flex-flow: column nowrap;
+
+ @include e(titles) {
+ text-align: center;
+ }
+
+ @include e(thumbnail) {
+ display: flex;
+ justify-content: center;
+ align-self: unset;
+ margin-inline-end: 0;
+ margin-bottom: rem(16px);
+ }
+ }
+ }
+
+ @include b(igx-card-content) {
+ display: block;
+ width: 100%;
+ padding: rem(16px);
+ color: var-get($theme, 'content-text-color');
+ overflow: auto;
+ }
+
+ @include b(igx-card-actions) {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-between;
+ align-items: center;
+ padding: rem(8px) rem(16px);
+
+ &:first-child {
+ margin-block-end: auto;
+ }
+
+ &:last-child {
+ margin-block-start: auto;
+ }
+
+ @include e(start) {
+ @extend %h-actions;
+
+ order: 0;
+ }
+
+ @include e(end) {
+ @extend %h-actions;
+
+ order: 1;
+ margin-inline-start: auto;
+ gap: rem(8px);
+
+ &:empty {
+ display: none;
+ }
+ }
+
+ @include m(vertical) {
+ flex-direction: column;
+
+ &:is(:first-child, :last-child) {
+ margin-block: initial;
+ }
+
+ [dir='rtl'] & {
+ order: -1;
+ }
+
+ @include e(start) {
+ @extend %v-actions;
+ }
+
+ @include e(end) {
+ @extend %v-actions;
+
+ margin-top: auto;
+ margin-inline-start: 0;
+ }
+ }
+
+ @include m(reverse) {
+ @include e(start) {
+ order: 1;
+ margin-inline-start: auto;
+ }
+
+ @include e(end) {
+ order: 0;
+ margin-inline-start: 0;
+ }
+ }
+
+ @include mx(vertical, reverse) {
+ @include e(start) {
+ margin: 0;
+ margin-top: auto;
+ }
+
+ @include e(end) {
+ margin: 0;
+ margin-bottom: auto;
+ }
+ }
+
+ @include m(justify) {
+ @include e(start) {
+ @extend %actions--justified !optional;
+ }
+
+ @include e(end) {
+ @extend %actions--justified !optional;
+ }
+ }
+ }
+}
diff --git a/projects/igniteui-angular/card/src/card/themes/dark/_index.scss b/projects/igniteui-angular/card/src/card/themes/dark/_index.scss
new file mode 100644
index 00000000000..c5bdbf3d19d
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-card, $tokens, dark);
diff --git a/projects/igniteui-angular/card/src/card/themes/dark/_tokens.scss b/projects/igniteui-angular/card/src/card/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..32378f9942d
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/card' as *;
+
+$material: digest-schema($dark-material-card);
+$bootstrap: digest-schema($dark-bootstrap-card);
+$fluent: digest-schema($dark-fluent-card);
+$indigo: digest-schema($dark-indigo-card);
diff --git a/projects/igniteui-angular/card/src/card/themes/light/_index.scss b/projects/igniteui-angular/card/src/card/themes/light/_index.scss
new file mode 100644
index 00000000000..eee6db1f7bf
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-card, $tokens, light);
diff --git a/projects/igniteui-angular/card/src/card/themes/light/_tokens.scss b/projects/igniteui-angular/card/src/card/themes/light/_tokens.scss
new file mode 100644
index 00000000000..9d509cb82bc
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/card' as *;
+
+$base: digest-schema($light-card);
+$material: digest-schema($material-card);
+$bootstrap: digest-schema($bootstrap-card);
+$fluent: digest-schema($fluent-card);
+$indigo: digest-schema($indigo-card);
diff --git a/projects/igniteui-angular/card/src/card/themes/shared/_bootstrap.scss b/projects/igniteui-angular/card/src/card/themes/shared/_bootstrap.scss
new file mode 100644
index 00000000000..2a3e9aab81f
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/shared/_bootstrap.scss
@@ -0,0 +1,38 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+
+@include themed-block(igx-card-header, bootstrap) {
+ @include e(title) {
+ @include type-style(h5) {
+ margin: 0;
+ }
+ }
+
+ @include e(title, $m: small) {
+ @include type-style(subtitle-2) {
+ margin: 0;
+ }
+ }
+
+ @include e(subtitle) {
+ @include type-style(body-1) {
+ margin: 0;
+ }
+ }
+}
+
+@include themed-block(igx-card-content, bootstrap) {
+ padding-block: rem(16px) rem(24px);
+ padding-inline: rem(16px);
+
+ > *:not(igx-icon) {
+ @include type-style(body-1) {
+ margin: 0;
+ }
+ }
+}
+
+@include themed-block(igx-card-actions, bootstrap) {
+ padding: rem(16px);
+}
diff --git a/projects/igniteui-angular/card/src/card/themes/shared/_fluent.scss b/projects/igniteui-angular/card/src/card/themes/shared/_fluent.scss
new file mode 100644
index 00000000000..8c1652d0a18
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/shared/_fluent.scss
@@ -0,0 +1,31 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+
+@include themed-block(igx-card-header, fluent) {
+ @include e(title) {
+ @include type-style(subtitle-1) {
+ margin: 0;
+ }
+ }
+
+ @include e(title, $m: small) {
+ @include type-style(subtitle-2) {
+ margin: 0;
+ }
+ }
+
+ @include e(subtitle) {
+ @include type-style(body-2) {
+ margin: 0;
+ }
+ }
+}
+
+@include themed-block(igx-card-content, fluent) {
+ > *:not(igx-icon) {
+ @include type-style(body-2) {
+ margin: 0;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/card/src/card/themes/shared/_index.scss b/projects/igniteui-angular/card/src/card/themes/shared/_index.scss
new file mode 100644
index 00000000000..0ca60c75786
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/shared/_index.scss
@@ -0,0 +1,4 @@
+@forward 'material';
+@forward 'bootstrap';
+@forward 'fluent';
+@forward 'indigo';
diff --git a/projects/igniteui-angular/card/src/card/themes/shared/_indigo.scss b/projects/igniteui-angular/card/src/card/themes/shared/_indigo.scss
new file mode 100644
index 00000000000..eff4ef06b0c
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/shared/_indigo.scss
@@ -0,0 +1,75 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+
+@include themed-block(igx-card, indigo) {
+ igx-avatar {
+ --ig-size: 3;
+ }
+}
+
+@include themed-block(igx-card-header, indigo) {
+ + .igx-card-content {
+ padding-block-start: 0;
+ }
+
+ @include e(thumbnail) {
+ margin-inline-end: rem(8px);
+ margin-block: auto;
+ }
+
+ @include e(titles) {
+ gap: rem(2px);
+
+ .igx-card-header__subtitle {
+ margin-block-end: rem(2px);
+ }
+ }
+
+ @include e(title) {
+ @include type-style(h6) {
+ margin: 0;
+ }
+ }
+
+ @include e(title, $m: small) {
+ @include type-style(body-2) {
+ margin: 0;
+ }
+ }
+
+ @include e(subtitle) {
+ @include type-style(body-2) {
+ margin: 0;
+ }
+ }
+
+ @include m(vertical) {
+ @include e(thumbnail) {
+ margin-bottom: rem(8px);
+ }
+ }
+}
+
+@include themed-block(igx-card-content, indigo) {
+ padding: rem(16px);
+
+ + .igx-card-actions {
+ padding-block-start: rem(8px);
+ }
+
+ > *:not(igx-icon) {
+ @include type-style(body-2) {
+ margin: 0;
+ }
+ }
+}
+
+@include themed-block(igx-card-actions, indigo) {
+ padding: rem(16px);
+
+ [igxButton],
+ [igxIconButton] {
+ --ig-size: 2;
+ }
+}
diff --git a/projects/igniteui-angular/card/src/card/themes/shared/_material.scss b/projects/igniteui-angular/card/src/card/themes/shared/_material.scss
new file mode 100644
index 00000000000..c894f973c82
--- /dev/null
+++ b/projects/igniteui-angular/card/src/card/themes/shared/_material.scss
@@ -0,0 +1,37 @@
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'styles/themes/standalone' as *;
+
+@include themed-block(igx-card, material) {
+ @include m(elevated) {
+ border: none;
+ }
+}
+
+@include themed-block(igx-card-header, material) {
+ @include e(title) {
+ @include type-style(h6) {
+ margin: 0;
+ }
+ }
+
+ @include e(title, $m: small) {
+ @include type-style(subtitle-2) {
+ margin: 0;
+ }
+ }
+
+ @include e(subtitle) {
+ @include type-style(subtitle-2) {
+ margin: 0;
+ }
+ }
+}
+
+@include themed-block(igx-card-content, material) {
+ > *:not(igx-icon) {
+ @include type-style(body-2) {
+ margin: 0;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/carousel/src/carousel/carousel.component.html b/projects/igniteui-angular/carousel/src/carousel/carousel.component.html
index d79dc110577..f182f061a2e 100644
--- a/projects/igniteui-angular/carousel/src/carousel/carousel.component.html
+++ b/projects/igniteui-angular/carousel/src/carousel/carousel.component.html
@@ -19,7 +19,7 @@
@if (navigation && slides.length) {
@if (displayValue && !disableClear) {
-
@if (clearIconTemplate) {
@@ -29,7 +29,7 @@
}
}
-
+
@if (toggleIconTemplate) {
}
@@ -42,72 +42,79 @@
[labelledBy]="ariaLabelledBy || label?.id || placeholder || ''"
[width]="itemsWidth || '100%'" (opening)="handleOpening($event)" (closing)="handleClosing($event)"
(opened)="handleOpened()" (closed)="handleClosed()">
- @if (displaySearchInput) {
-
-
-
- @if (showSearchCaseIcon) {
-
-
+
+
+
+ @if (displaySearchInput) {
+
+
+
+ @if (showSearchCaseIcon) {
+
+ family="default"
+ name="case_sensitive"
+ [active]="filteringOptions.caseSensitive">
-
-
- }
-
-
- }
-
-
-
-
+ }
+
+
+ }
+
+
+
+
- @if (item?.isHeader) {
-
+ @if (item?.isHeader) {
+
-
- }
-
- @if (!item?.isHeader) {
-
-
- }
-
-
- @if (filteredData.length === 0 || isAddButtonVisible()) {
-
- @if (filteredData.length === 0) {
-
-
-
- }
- @if (isAddButtonVisible()) {
-
-
+ }
+
+ @if (!item?.isHeader) {
+
-
- }
+ }
+
- }
-
-
+
+ @if (filteredData.length === 0 || isAddButtonVisible()) {
+
+ @if (filteredData.length === 0) {
+
+
+
+
+ }
+ @if (isAddButtonVisible()) {
+
+
+
+
+ }
+
+ }
+
+
+
{{display[key]}}
diff --git a/projects/igniteui-angular/combo/src/combo/combo.component.scss b/projects/igniteui-angular/combo/src/combo/combo.component.scss
new file mode 100644
index 00000000000..dd684163cd7
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/combo.component.scss
@@ -0,0 +1,4 @@
+@use 'themes/base';
+@use 'themes/shared';
+@use 'themes/light';
+@use 'themes/dark';
diff --git a/projects/igniteui-angular/combo/src/combo/combo.component.spec.ts b/projects/igniteui-angular/combo/src/combo/combo.component.spec.ts
index 5aef5e69f8e..095478b3841 100644
--- a/projects/igniteui-angular/combo/src/combo/combo.component.spec.ts
+++ b/projects/igniteui-angular/combo/src/combo/combo.component.spec.ts
@@ -44,7 +44,7 @@ const CSS_CLASS_HEADERITEM = 'igx-drop-down__header';
const CSS_CLASS_SCROLLBAR_VERTICAL = 'igx-vhelper--vertical';
const CSS_CLASS_INPUTGROUP = 'igx-input-group';
const CSS_CLASS_COMBO_INPUTGROUP = 'igx-input-group__input';
-const CSS_CLASS_INPUTGROUP_WRAPPER = 'igx-input-group__wrapper';
+const CSS_CLASS_INPUTGROUP_BUNDLE = 'igx-input-group__bundle';
const CSS_CLASS_INPUTGROUP_REQUIRED = 'igx-input-group--required';
const CSS_CLASS_INPUTGROUP_LABEL = 'igx-input-group__label';
const CSS_CLASS_SEARCHINPUT = 'input[name=\'searchInput\']';
@@ -966,20 +966,23 @@ describe('igxCombo', () => {
expect(combo.type).toEqual('box');
});
it('should apply all appropriate classes on combo initialization', () => {
- const comboWrapper = fixture.nativeElement.querySelector(CSS_CLASS_COMBO);
- expect(comboWrapper).not.toBeNull();
- expect(comboWrapper.classList.contains(CSS_CLASS_COMBO)).toBeTruthy();
- expect(comboWrapper.childElementCount).toEqual(2);
-
- const dropDownElement = comboWrapper.children[1];
- expect(dropDownElement.classList.contains(CSS_CLASS_COMBO_DROPDOWN)).toBeTruthy();
- expect(dropDownElement.classList.contains(CSS_CLASS_DROPDOWN)).toBeTruthy();
- expect(dropDownElement.childElementCount).toEqual(1);
-
- const dropDownList = dropDownElement.children[0];
- const dropDownScrollList = dropDownElement.children[0].children[0];
- expect(dropDownList.classList.contains(CSS_CLASS_DROPDOWNLIST)).toBeTruthy();
- expect(dropDownList.classList.contains('igx-toggle--hidden')).toBeTruthy();
+ const comboComponent = fixture.nativeElement.querySelector(CSS_CLASS_COMBO);
+ expect(comboComponent).not.toBeNull();
+ expect(comboComponent.classList.contains(CSS_CLASS_COMBO)).toBeTruthy();
+ expect(comboComponent.childElementCount).toEqual(2);
+
+ // Children [1] refers to .igx-combo__drop-down
+ const comboDropDown = comboComponent.children[1];
+ expect(comboDropDown.classList.contains(CSS_CLASS_COMBO_DROPDOWN)).toBeTruthy();
+
+ // Children [0] refers to .igx-drop-down
+ expect(comboDropDown.children[0].classList.contains(CSS_CLASS_DROPDOWN)).toBeTruthy();
+ expect(comboDropDown.childElementCount).toEqual(1);
+
+ const dropDown = comboDropDown.children[0];
+ const dropDownScrollList = dropDown.children[0];
+ expect(dropDownScrollList.classList.contains(CSS_CLASS_DROPDOWNLIST_SCROLL)).toBeTruthy();
+ expect(dropDown.classList.contains('igx-toggle--hidden')).toBeTruthy();
expect(dropDownScrollList.childElementCount).toEqual(0);
});
it('should render aria attributes properly', fakeAsync(() => {
@@ -1096,19 +1099,32 @@ describe('igxCombo', () => {
let dropdownContainer;
let dropdownItems;
const headers: Array = Array.from(new Set(combo.data.map(item => item.region)));
+ let scrollIndex = 0;
+
combo.toggle();
await wait();
fixture.detectChanges();
const checkGroupedItemsClass = () => {
fixture.detectChanges();
- dropdownContainer = fixture.debugElement.query(By.css(`.${CSS_CLASS_CONTAINER}`)).nativeElement;
- dropdownItems = dropdownContainer.children;
- Array.from(dropdownItems).forEach((item) => {
- const itemElement = item as HTMLElement;
- const itemText = itemElement.innerText.toString();
- const expectedClass: string = headers.includes(itemText) ? CSS_CLASS_HEADERITEM : CSS_CLASS_DROPDOWNLISTITEM;
- expect(itemElement.classList.contains(expectedClass)).toBeTruthy();
+
+ const comboItems = fixture.debugElement.queryAll(By.css('igx-combo-item'));
+ expect(comboItems.length).withContext('No combo items found').toBeGreaterThan(0);
+
+ comboItems.forEach((itemDebugElement) => {
+ const itemElement = itemDebugElement.nativeElement as HTMLElement;
+ const isHeader = itemElement.getAttribute('ng-reflect-is-header') === 'true';
+ const itemText = itemElement.innerText.trim();
+ const hasHeaderClass = itemElement.classList.contains(CSS_CLASS_HEADERITEM);
+ const hasItemClass = itemElement.classList.contains(CSS_CLASS_DROPDOWNLISTITEM);
+
+ if (isHeader) {
+ expect(hasHeaderClass)
+ .withContext(`Expected HEADER class '${CSS_CLASS_HEADERITEM}' for header item with text "${itemText}"`).toBeTrue();
+ } else {
+ expect(hasItemClass)
+ .withContext(`Expected ITEM class '${CSS_CLASS_DROPDOWNLISTITEM}' for dropdown item with text "${itemText}"`).toBeTrue();
+ }
});
};
@@ -1193,25 +1209,48 @@ describe('igxCombo', () => {
expect(combo.headerItemTemplate).toBeUndefined();
});
it('should properly render header and footer templates', () => {
- let headerElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_HEADER}`));
- let footerElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_FOOTER}`));
- expect(headerElement).toBeNull();
- expect(footerElement).toBeNull();
+ const getElement = (cssClass: string): HTMLElement | null =>
+ fixture.debugElement.query(By.css(`.${cssClass}`))?.nativeElement || null;
+
+ const assertElementHierarchy = (
+ element: HTMLElement | null,
+ expectedParentClass: string,
+ expectedGrandparentClass: string,
+ label: string
+ ) => {
+ expect(element).withContext(`${label} should be rendered`).not.toBeNull();
+
+ const parent = element!.parentElement;
+ expect(parent).withContext(`${label} should have a parent element`).not.toBeNull();
+ expect(parent!.classList.contains(expectedParentClass))
+ .withContext(`${label} parent should have class '${expectedParentClass}'`).toBeTrue();
+
+ const grandparent = parent!.parentElement;
+ expect(grandparent).withContext(`${label} should have a grandparent element`).not.toBeNull();
+ expect(grandparent!.classList.contains(expectedGrandparentClass))
+ .withContext(`${label} grandparent should have class '${expectedGrandparentClass}'`).toBeTrue();
+ };
+
+ // Before opening the combo, header and footer should not be present
+ expect(getElement(CSS_CLASS_HEADER)).withContext('Header should not be present before opening').toBeNull();
+ expect(getElement(CSS_CLASS_FOOTER)).withContext('Footer should not be present before opening').toBeNull();
+
+ // Open combo and check templates
combo.toggle();
fixture.detectChanges();
- expect(combo.headerTemplate).toBeDefined();
- expect(combo.footerTemplate).toBeDefined();
- const dropdownList: HTMLElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_DROPDOWNLIST_SCROLL}`)).nativeElement;
- headerElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_HEADER}`));
- footerElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_FOOTER}`));
- expect(headerElement).not.toBeNull();
- const headerHTMLElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_HEADER}`)).nativeElement;
- expect(headerHTMLElement.parentNode).toEqual(dropdownList);
- expect(headerHTMLElement.textContent).toEqual('This is a header');
- expect(footerElement).not.toBeNull();
- const footerHTMLElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_FOOTER}`)).nativeElement;
- expect(footerHTMLElement.parentNode).toEqual(dropdownList);
- expect(footerHTMLElement.textContent).toEqual('This is a footer');
+
+ expect(combo.headerTemplate).withContext('Header template should be defined').toBeDefined();
+ expect(combo.footerTemplate).withContext('Footer template should be defined').toBeDefined();
+
+ // Validate Header
+ const headerElement = getElement(CSS_CLASS_HEADER);
+ assertElementHierarchy(headerElement, 'igx-combo', CSS_CLASS_DROPDOWNLIST_SCROLL, 'Header');
+ expect(headerElement!.textContent?.trim()).toBe('This is a header');
+
+ // Validate Footer
+ const footerElement = getElement(CSS_CLASS_FOOTER);
+ assertElementHierarchy(footerElement, 'igx-combo', CSS_CLASS_DROPDOWNLIST_SCROLL, 'Footer');
+ expect(footerElement!.textContent?.trim()).toBe('This is a footer');
});
it('should render case-sensitive icon properly', () => {
combo.showSearchCaseIcon = true;
@@ -1278,7 +1317,7 @@ describe('igxCombo', () => {
combo.toggle();
tick();
fixture.detectChanges();
- const inputElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_INPUTGROUP_WRAPPER}`)).nativeElement;
+ const inputElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_INPUTGROUP_BUNDLE}`)).nativeElement;
const dropDownElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_DROPDOWNLIST_SCROLL}`)).nativeElement;
containerElementWidth = containerElement.getBoundingClientRect().width;
wrapperWidth = comboWrapper.getBoundingClientRect().width;
@@ -1304,7 +1343,7 @@ describe('igxCombo', () => {
tick();
fixture.detectChanges();
- let inputElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_INPUTGROUP_WRAPPER}`)).nativeElement;
+ let inputElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_INPUTGROUP_BUNDLE}`)).nativeElement;
let dropDownElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_DROPDOWNLIST_SCROLL}`)).nativeElement;
containerElementWidth = containerElement.style.width;
wrapperWidth = comboWrapper.style.width;
@@ -1328,7 +1367,7 @@ describe('igxCombo', () => {
fixture.detectChanges();
comboWrapper = fixture.debugElement.query(By.css(CSS_CLASS_COMBO)).nativeElement;
- inputElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_INPUTGROUP_WRAPPER}`)).nativeElement;
+ inputElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_INPUTGROUP_BUNDLE}`)).nativeElement;
dropDownElement = fixture.debugElement.query(By.css(`.${CSS_CLASS_DROPDOWNLIST_SCROLL}`)).nativeElement;
containerElementWidth = containerElement.style.width;
wrapperWidth = comboWrapper.style.width;
@@ -1360,19 +1399,15 @@ describe('igxCombo', () => {
it('should render empty template when combo data source is not set', () => {
combo.data = [];
fixture.detectChanges();
+
combo.toggle();
fixture.detectChanges();
- const dropdownList = fixture.debugElement.query(By.css(`.${CSS_CLASS_DROPDOWNLIST_SCROLL}`)).nativeElement;
- const dropdownItemsContainer = fixture.debugElement.query(By.css(`.${CSS_CLASS_CONTENT}`)).nativeElement;
- const dropDownContainer = fixture.debugElement.query(By.css(`.${CSS_CLASS_CONTAINER}`)).nativeElement;
- const listItems = dropDownContainer.querySelectorAll(`.${CSS_CLASS_DROPDOWNLISTITEM}`);
- expect(listItems.length).toEqual(0);
- expect(dropdownList.childElementCount).toEqual(3);
- // Expect no items to be rendered in the virtual container
- expect(dropdownItemsContainer.children[0].childElementCount).toEqual(0);
- // Expect the list child (NOT COMBO ITEM) to be a container with "The list is empty";
- const dropdownItem = dropdownList.lastElementChild as HTMLElement;
- expect(dropdownItem.firstElementChild.textContent).toEqual('The list is empty');
+
+ const emptyStateElement = fixture.debugElement.query(By.css('.igx-combo__empty'))?.nativeElement;
+ expect(emptyStateElement).withContext('Empty state element should be present').not.toBeNull();
+ expect(emptyStateElement.textContent?.trim())
+ .withContext('Empty state text should match')
+ .toEqual('The list is empty');
});
it('should bind combo data properly when changing data source runtime', () => {
const newData = ['Item 1', 'Item 2'];
@@ -2694,23 +2729,23 @@ describe('igxCombo', () => {
expect(combo.data.length).toEqual(initialDataLength + 3);
expect(combo.dropdown.items.length).toEqual(4); // Add Item button is included
expect(combo.dropdown.headers.length).toEqual(1);
- expect(combo.dropdown.headers[0].element.nativeElement.innerText).toEqual(fallBackGroup);
+ expect(combo.dropdown.headers[0].element.nativeElement.textContent?.trim()).toEqual(fallBackGroup);
});
it('should sort groups correctly', () => {
combo.groupSortingDirection = SortingDirection.Asc;
combo.toggle();
fixture.detectChanges();
- expect(combo.dropdown.headers[0].element.nativeElement.innerText).toEqual('East North Central');
+ expect(combo.dropdown.headers[0].element.nativeElement.textContent?.trim()).toEqual('East North Central');
combo.groupSortingDirection = SortingDirection.Desc;
combo.toggle();
fixture.detectChanges();
- expect(combo.dropdown.headers[0].element.nativeElement.innerText).toEqual('West South Cent');
+ expect(combo.dropdown.headers[0].element.nativeElement.textContent?.trim()).toEqual('West South Cent');
combo.groupSortingDirection = SortingDirection.None;
combo.toggle();
fixture.detectChanges();
- expect(combo.dropdown.headers[0].element.nativeElement.innerText).toEqual('New England')
+ expect(combo.dropdown.headers[0].element.nativeElement.textContent?.trim()).toEqual('New England')
});
it('should sort groups with diacritics correctly', async() => {
combo.data = [
@@ -2726,19 +2761,19 @@ describe('igxCombo', () => {
combo.toggle();
await wait();
fixture.detectChanges();
- let headers = combo.dropdown.headers.map(header => header.element.nativeElement.innerText);
+ let headers = combo.dropdown.headers.map(header => header.element.nativeElement.textContent?.trim());
expect(headers).toEqual(['Ángel', 'Boris', 'México']);
combo.groupSortingDirection = SortingDirection.Desc;
combo.toggle();
fixture.detectChanges();
- headers = combo.dropdown.headers.map(header => header.element.nativeElement.innerText);
+ headers = combo.dropdown.headers.map(header => header.element.nativeElement.textContent?.trim());
expect(headers).toEqual(['Méxícó', 'México', 'Boris']);
combo.groupSortingDirection = SortingDirection.None;
combo.toggle();
fixture.detectChanges();
- headers = combo.dropdown.headers.map(header => header.element.nativeElement.innerText);
+ headers = combo.dropdown.headers.map(header => header.element.nativeElement.textContent?.trim());
expect(headers).toEqual(['Méxícó', 'Ángel', 'México']);
});
});
diff --git a/projects/igniteui-angular/combo/src/combo/combo.component.ts b/projects/igniteui-angular/combo/src/combo/combo.component.ts
index 359ace7083c..cc57d4fdb5e 100644
--- a/projects/igniteui-angular/combo/src/combo/combo.component.ts
+++ b/projects/igniteui-angular/combo/src/combo/combo.component.ts
@@ -1,5 +1,18 @@
import { NgClass, NgTemplateOutlet } from '@angular/common';
-import { AfterViewInit, Component, OnInit, OnDestroy, ViewChild, Input, Output, EventEmitter, HostListener, DoCheck, booleanAttribute } from '@angular/core';
+import {
+ AfterViewInit,
+ Component,
+ OnInit,
+ OnDestroy,
+ ViewChild,
+ Input,
+ Output,
+ EventEmitter,
+ HostListener,
+ DoCheck,
+ booleanAttribute,
+ ViewEncapsulation,
+} from '@angular/core';
import { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
@@ -94,6 +107,8 @@ const diffInSets = (set1: Set, set2: Set): any[] => {
@Component({
selector: 'igx-combo',
templateUrl: 'combo.component.html',
+ styleUrl: 'combo.component.css',
+ encapsulation: ViewEncapsulation.None,
providers: [
IgxComboAPIService,
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
diff --git a/projects/igniteui-angular/combo/src/combo/themes/_base.scss b/projects/igniteui-angular/combo/src/combo/themes/_base.scss
new file mode 100644
index 00000000000..6e67ea7e937
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/_base.scss
@@ -0,0 +1,103 @@
+@use 'sass:map';
+@use 'igniteui-theming/sass/bem' as *;
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/color' as *;
+@use 'styles/themes/standalone' as *;
+@use 'igniteui-theming/sass/animations/easings' as *;
+@use './light/tokens' as *;
+
+$theme: $base;
+
+@include layer(base) {
+ @include b(igx-drop-down) {
+ --item-count: 6;
+ --_search-input-inline-padding: #{pad-inline(rem(4px), rem(8px), rem(16px))};
+ --_search-input-block-padding: #{pad-block(rem(8px))};
+
+ .igx-combo {
+ display: contents;
+ }
+ }
+
+ @include b(igx-combo) {
+ position: relative;
+ display: block;
+
+ @include e(checkbox) {
+ margin-inline-end: rem(8px);
+ }
+
+ @include e(search) {
+ --ig-input-group-border-border-radius: 0;
+
+ padding-inline: var(--_search-input-inline-padding);
+ padding-block: var(--_search-input-block-padding);
+ z-index: 26;
+ border-bottom: rem(1px) dashed var-get($theme, 'search-separator-border-color');
+
+ igx-input-group {
+ --ig-size: 1;
+ }
+ }
+
+ @include e(case-icon) {
+ cursor: pointer;
+
+ color: color($color: 'gray', $variant: 600);
+ background: transparent;
+
+ .igx-icon--inactive {
+ --ig-icon-disabled-color: color($color: 'gray', $variant: 600);
+
+ opacity: 1;
+ }
+ }
+
+ @include e(case-icon, $m: 'active') {
+ color: color($color: 'primary')
+ }
+
+ @include e(content) {
+ .igx-vhelper--vertical {
+ position: relative;
+ }
+
+ position: relative;
+ overflow: hidden;
+ max-height: calc(var(--size) * var(--item-count));
+
+ &:focus {
+ outline: transparent;
+ }
+ }
+
+ @include e(add) {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ padding: rem(16px) rem(24px);
+ gap: rem(16px);
+ background: var-get($theme, 'empty-list-background');
+ }
+
+ @include e(add-item) {
+ height: auto;
+ background: var-get($theme, 'empty-list-background');
+ justify-content: center;
+ outline: none;
+ }
+
+ @include e(empty) {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ color: var-get($theme, 'empty-list-placeholder-color');
+ padding: 0 rem(24px);
+ font-size: rem(13px);
+ }
+ }
+}
diff --git a/projects/igniteui-angular/combo/src/combo/themes/dark/_index.scss b/projects/igniteui-angular/combo/src/combo/themes/dark/_index.scss
new file mode 100644
index 00000000000..906eff06d2c
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/dark/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-combo, $tokens, dark);
diff --git a/projects/igniteui-angular/combo/src/combo/themes/dark/_tokens.scss b/projects/igniteui-angular/combo/src/combo/themes/dark/_tokens.scss
new file mode 100644
index 00000000000..20787c0acfb
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/dark/_tokens.scss
@@ -0,0 +1,7 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/dark/combo' as *;
+
+$material: digest-schema($dark-material-combo);
+$bootstrap: digest-schema($dark-bootstrap-combo);
+$fluent: digest-schema($dark-fluent-combo);
+$indigo: digest-schema($dark-indigo-combo);
diff --git a/projects/igniteui-angular/combo/src/combo/themes/light/_index.scss b/projects/igniteui-angular/combo/src/combo/themes/light/_index.scss
new file mode 100644
index 00000000000..deb0ba7fdf6
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/light/_index.scss
@@ -0,0 +1,6 @@
+@use 'sass:meta';
+@use 'tokens';
+@use 'styles/themes/standalone' as *;
+
+$tokens: meta.module-variables(tokens);
+@include themes(igx-combo, $tokens, light);
diff --git a/projects/igniteui-angular/combo/src/combo/themes/light/_tokens.scss b/projects/igniteui-angular/combo/src/combo/themes/light/_tokens.scss
new file mode 100644
index 00000000000..7110316d4b3
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/light/_tokens.scss
@@ -0,0 +1,8 @@
+@use 'igniteui-theming/sass/themes' as *;
+@use 'igniteui-theming/sass/themes/schemas/components/light/combo' as *;
+
+$base: digest-schema($light-combo);
+$material: digest-schema($material-combo);
+$bootstrap: digest-schema($bootstrap-combo);
+$fluent: digest-schema($fluent-combo);
+$indigo: digest-schema($indigo-combo);
diff --git a/projects/igniteui-angular/combo/src/combo/themes/shared/_index.scss b/projects/igniteui-angular/combo/src/combo/themes/shared/_index.scss
new file mode 100644
index 00000000000..0ca60c75786
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/shared/_index.scss
@@ -0,0 +1,4 @@
+@forward 'material';
+@forward 'bootstrap';
+@forward 'fluent';
+@forward 'indigo';
diff --git a/projects/igniteui-angular/combo/src/combo/themes/shared/bootstrap.scss b/projects/igniteui-angular/combo/src/combo/themes/shared/bootstrap.scss
new file mode 100644
index 00000000000..1ad00d18e84
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/shared/bootstrap.scss
@@ -0,0 +1,52 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $bootstrap;
+
+@include themed-block(igx-combo, bootstrap) {
+ @include e(search) {
+ --ig-input-group-border-border-radius: 0;
+
+ igx-input-group {
+ --size: #{rem(28px)};
+ }
+
+ .igx-input-group--focused {
+ .igx-input-group__bundle-start,
+ .igx-input-group__bundle-end {
+ border-block-end-color: var(--focused-border-color);
+ border-block-end-width: rem(2px);
+ }
+
+ .igx-input-group__bundle-main {
+ border-block-end-width: rem(2px);
+ }
+ }
+
+ igx-input-group:not(.igx-input-group--prefixed),
+ igx-input-group:not(.igx-input-group--suffixed) {
+ .igx-input-group__bundle-main {
+ border-inline-width: 0;
+ border-block-start-width: 0;
+ }
+ }
+
+ igx-input-group.igx-input-group--suffixed {
+ .igx-input-group__bundle-end {
+ border-inline-end-width: 0;
+ border-block-start-width: 0;
+ }
+ }
+
+ .igx-input-group__input {
+ padding-inline: 0;
+ }
+
+ .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main {
+ box-shadow: none;
+ }
+ }
+}
+
diff --git a/projects/igniteui-angular/combo/src/combo/themes/shared/fluent.scss b/projects/igniteui-angular/combo/src/combo/themes/shared/fluent.scss
new file mode 100644
index 00000000000..dd960c94550
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/shared/fluent.scss
@@ -0,0 +1,29 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/color' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+@use '../light/tokens' as *;
+
+$_theme: $fluent;
+
+@include themed-block(igx-combo, fluent) {
+ --_search-input-inline-padding: #{pad-inline(rem(2px), rem(4px), rem(8px))};
+ --_search-input-block-padding: #{pad-block(rem(2px), rem(4px), rem(8px))};
+
+ @include e(search) {
+ .igx-input-group__bundle {
+ border-inline-width: 0;
+ border-block-start-width: 0;
+ }
+
+ .igx-input-group__input {
+ padding-inline-start: 0;
+ }
+
+ .igx-input-group--focused .igx-input-group__bundle::after {
+ border-inline-width: 0;
+ border-block-start-width: 0;
+ }
+ }
+}
+
diff --git a/projects/igniteui-angular/combo/src/combo/themes/shared/indigo.scss b/projects/igniteui-angular/combo/src/combo/themes/shared/indigo.scss
new file mode 100644
index 00000000000..f0061339830
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/shared/indigo.scss
@@ -0,0 +1,22 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+@use 'igniteui-theming/sass/animations/easings' as *;
+@use '../light/tokens' as *;
+
+$_theme: $indigo;
+
+@include themed-block(igx-combo, indigo) {
+ --_search-input-inline-padding: #{pad-inline(rem(8px), rem(12px), rem(12px))};
+ --_search-input-block-padding: #{pad-block(rem(12px))};
+
+ @include e(search) {
+ igx-input-group {
+ --ig-size: 2;
+ }
+ }
+
+ @include e(content) {
+ max-height: calc(var(--size) * var(--item-count) + rem(16px));
+ }
+}
diff --git a/projects/igniteui-angular/combo/src/combo/themes/shared/material.scss b/projects/igniteui-angular/combo/src/combo/themes/shared/material.scss
new file mode 100644
index 00000000000..fa7806b2644
--- /dev/null
+++ b/projects/igniteui-angular/combo/src/combo/themes/shared/material.scss
@@ -0,0 +1,38 @@
+@use 'igniteui-theming/sass/typography' as *;
+@use 'igniteui-theming/sass/bem' as *;
+@use 'styles/themes/standalone' as *;
+@use 'igniteui-theming/sass/animations/easings' as *;
+@use '../light/tokens' as *;
+
+$_theme: $material;
+
+@include themed-block(igx-combo, material) {
+ @include e(checkbox) {
+ margin-inline-end: rem(16px);
+
+ div {
+ padding: 0;
+ }
+ }
+
+ @include e(search) {
+ igx-input-group {
+ --size: #{rem(38px)};
+ }
+
+ .igx-input-group__bundle {
+ padding-block-start: 0;
+ height: auto;
+ }
+
+ .igx-input-group__bundle-main {
+ // The important here can't be removed, otherwise we have to break BEM
+ padding-inline-start: 0 !important;
+ }
+
+ .igx-input-group__bundle-start,
+ .igx-input-group__bundle-end {
+ min-width: 0;
+ }
+ }
+}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/avatar/_avatar-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/avatar/_avatar-theme.scss
index c01b4128d44..8a5abde63ec 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/avatar/_avatar-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/avatar/_avatar-theme.scss
@@ -23,7 +23,7 @@
color: var-get($theme, 'color');
background: var-get($theme, 'background');
vertical-align: middle;
- outline-style: none;
+ // outline-style: none;
flex-shrink: 0;
width: var-get($theme, 'size');
height: var-get($theme, 'size');
diff --git a/projects/igniteui-angular/core/src/core/styles/components/button/_button-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/button/_button-theme.scss
index 37d2ded6e42..e675626101d 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/button/_button-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/button/_button-theme.scss
@@ -1,8 +1,10 @@
+/* stylelint-disable max-nesting-depth */
@use 'sass:map';
@use 'sass:meta';
@use 'sass:list';
@use 'sass:string';
@use '../../base' as *;
+@use '../../../styles/themes/standalone' as *;
/// @deprecated Use the `css-vars` mixin instead.
/// @see {mixin} css-vars
@@ -11,848 +13,899 @@
/// @param {Map} $outlined [null] - The outlined theme used to style the component.
/// @param {Map} $fab [null] - The fab theme used to style the component.
@mixin button($themes...) {
- $button-width: rem(88px);
- $flat-theme: null;
- $contained-theme: null;
- $outlined-theme: null;
- $fab-theme: null;
- $variant: 'material';
-
- $required: ('flat', 'contained', 'outlined', 'fab');
- $added: ();
- $missing: ();
-
- @each $key, $theme in meta.keywords($themes) {
- $type: map.get($theme, _meta, type);
-
- $added: list.append($added, $key);
-
- @if $type == 'flat' {
- $flat-theme: $theme;
- } @else if $type == 'contained' {
- $contained-theme: $theme;
- } @else if $type == 'outlined' {
- $outlined-theme: $theme;
- } @else if $type == 'fab' {
- $fab-theme: $theme;
- }
+ @include layer(base) {
+ $button-width: rem(88px);
+ $flat-theme: null;
+ $contained-theme: null;
+ $outlined-theme: null;
+ $fab-theme: null;
+ $variant: 'material';
- $variant: map.get($theme, '_meta', 'theme');
- @include css-vars($theme);
- }
+ $required: ('flat', 'contained', 'outlined', 'fab');
+ $added: ();
+ $missing: ();
+
+ @each $key, $theme in meta.keywords($themes) {
+ $type: map.get($theme, _meta, type);
+
+ $added: list.append($added, $key);
+
+ @if $type == 'flat' {
+ $flat-theme: $theme;
+ } @else if $type == 'contained' {
+ $contained-theme: $theme;
+ } @else if $type == 'outlined' {
+ $outlined-theme: $theme;
+ } @else if $type == 'fab' {
+ $fab-theme: $theme;
+ }
- @each $item in $required {
- @if not(list.index($added, $item)) {
- $missing: list.append($missing, '$#{$item}', $separator: comma);
+ $variant: map.get($theme, '_meta', 'theme');
+ @include css-vars($theme);
}
- }
- @if list.length($missing) != 0 {
- @error meta.inspect(string.unquote("Missing theme properties:") #{$missing});
- }
+ @each $item in $required {
+ @if not(list.index($added, $item)) {
+ $missing: list.append($missing, '$#{$item}', $separator: comma);
+ }
+ }
- $time: map.get(
- (
- 'material': 0.1s,
- 'fluent': 0.1s,
- 'bootstrap': 0.15s,
- 'indigo': 0.15s,
- ),
- $variant
- );
-
- $button-disabled-shadow: none;
-
- $button-floating-width: rem(56px);
- $button-floating-height: $button-floating-width;
-
- $button-padding-inline: (
- comfortable: rem(16px, 16px),
- cosy: rem(12px, 16px),
- compact: rem(8px, 16px),
- );
-
- $button-padding-indigo-inline: (
- comfortable: rem(24px, 16px),
- cosy: rem(16px, 16px),
- compact: rem(10px, 16px),
- );
-
- $button-padding-material-block: (
- comfortable: rem(7px, 16px),
- cosy: rem(4px, 16px),
- compact: rem(1px, 16px),
- );
-
- $button-padding-fluent-block: (
- comfortable: 0,
- cosy: 0,
- compact: 0,
- );
-
- $button-padding-bootstrap-block: (
- comfortable: rem(6px, 16px),
- cosy: rem(4px, 16px),
- compact: rem(2px, 16px),
- );
-
- $button-padding-indigo-block: (
- comfortable: 0,
- cosy: 0,
- compact: 0,
- );
-
- $button-padding-inline: map.get(
- (
- 'material': $button-padding-inline,
- 'fluent': $button-padding-inline,
- 'bootstrap': $button-padding-inline,
- 'indigo': $button-padding-indigo-inline,
- ),
- $variant
- );
-
- $button-padding-block: map.get(
- (
- 'material': $button-padding-material-block,
- 'fluent': $button-padding-fluent-block,
- 'bootstrap': $button-padding-bootstrap-block,
- 'indigo': $button-padding-indigo-block,
- ),
- $variant
- );
-
- $outlined-button-padding-inline: map.get(
- (
- 'material': $button-padding-inline,
- 'fluent': $button-padding-inline,
- 'bootstrap': $button-padding-inline,
- 'indigo': $button-padding-indigo-inline,
- ),
- $variant
- );
-
- $outlined-button-padding-block: map.get(
- (
- 'material': $button-padding-material-block,
- 'fluent': $button-padding-fluent-block,
- 'bootstrap': $button-padding-bootstrap-block,
- 'indigo': $button-padding-indigo-block,
- ),
- $variant
- );
-
- $button-floating-padding-block: (
- comfortable: rem(8px),
- cosy: rem(4px),
- compact: 0,
- );
-
- $button-floating-padding-inline: (
- comfortable: rem(14px),
- cosy: rem(10px),
- compact: rem(6px),
- );
-
- $button-floating-padding-indigo-inline: (
- comfortable: rem(10px),
- cosy: rem(8px),
- compact: rem(6px),
- );
-
- $items-gap: (
- comfortable: rem(12px),
- cosy: rem(8px),
- compact: rem(4px),
- );
-
- $items-gap-indigo-comfortable: rem(8px);
-
- $filtering-row-button-size: (
- comfortable: rem(40px),
- cosy: rem(30px),
- compact: rem(21px),
- );
-
- $icon-sizes: map.get(
- (
- 'material': rem(18px),
- 'fluent': rem(18px),
- 'bootstrap': rem(18px),
- 'indigo': rem(16px),
- ),
- $variant
- );
-
- $icon-in-button-size: $icon-sizes;
-
- $contained-shadow: map.get(
- (
- 'material': var-get($contained-theme, 'resting-elevation'),
- 'fluent': none,
- 'bootstrap': none,
- 'indigo': none,
- ),
- $variant
- );
-
- $contained-shadow--hover: map.get(
- (
- 'material': var-get($contained-theme, 'hover-elevation'),
- 'fluent': none,
- 'bootstrap': none,
- 'indigo': none,
- ),
- $variant
- );
-
- $contained-shadow--focus: map.get(
- (
- 'material': var-get($contained-theme, 'focus-elevation'),
- 'fluent': none,
- 'bootstrap': 0 0 0 rem(4px)
- var-get($contained-theme, 'shadow-color'),
- 'indigo': 0 0 0 rem(3px) var-get($contained-theme, 'shadow-color'),
- ),
- $variant
- );
-
- $contained-shadow--active: map.get(
- (
- 'material': var-get($contained-theme, 'active-elevation'),
- 'fluent': none,
- 'bootstrap': 0 0 0 rem(4px)
- var-get($contained-theme, 'shadow-color'),
- 'indigo': 0 0 0 rem(3px) var-get($contained-theme, 'shadow-color'),
- ),
- $variant
- );
-
- $fab-shadow: map.get(
- (
- 'material': var-get($fab-theme, 'resting-elevation'),
- 'fluent': none,
- 'bootstrap': none,
- 'indigo': none,
- ),
- $variant
- );
-
- $fab-shadow--hover: map.get(
- (
- 'material': var-get($fab-theme, 'hover-elevation'),
- 'fluent': none,
- 'bootstrap': none,
- 'indigo': none,
- ),
- $variant
- );
-
- $fab-shadow--focus: map.get(
- (
- 'material': var-get($fab-theme, 'focus-elevation'),
- 'fluent': none,
- 'bootstrap': 0 0 0 rem(4px) var-get($fab-theme, 'shadow-color'),
- 'indigo': 0 0 0 rem(3px) var-get($fab-theme, 'shadow-color'),
- ),
- $variant
- );
-
- $fab-shadow--active: map.get(
- (
- 'material': var-get($fab-theme, 'active-elevation'),
- 'fluent': none,
- 'bootstrap': 0 0 0 rem(4px) var-get($fab-theme, 'shadow-color'),
- 'indigo': 0 0 0 rem(3px) var-get($fab-theme, 'shadow-color'),
- ),
- $variant
- );
-
- %fluent-border {
- &::after {
- $btn-indent: rem(2px);
- content: '';
- position: absolute;
- top: $btn-indent;
- inset-inline-start: $btn-indent;
- pointer-events: none;
- width: calc(100% - (#{$btn-indent} * 2));
- height: calc(100% - (#{$btn-indent} * 2));
+ @if list.length($missing) != 0 {
+ @error meta.inspect(string.unquote("Missing theme properties:") #{$missing});
}
- }
- %igx-button-display {
- --_button-transition:
- color var(--_init-transition, #{$time}) ease-in-out,
- background-color var(--_init-transition, #{$time}) ease-in-out,
- border-color var(--_init-transition, #{$time}) ease-in-out,
- box-shadow var(--_init-transition, #{$time}) ease-in-out;
-
- @include sizable();
-
- position: relative;
- display: inline-flex;
- align-items: center;
- justify-content: center;
- min-width: $button-width;
- padding-inline: pad-inline(
- map.get($button-padding-inline, 'compact'),
- map.get($button-padding-inline, 'cosy'),
- map.get($button-padding-inline, 'comfortable')
+ $time: map.get(
+ (
+ 'material': 0.1s,
+ 'fluent': 0.1s,
+ 'bootstrap': 0.15s,
+ 'indigo': 0.15s,
+ ),
+ $variant
);
- padding-block: pad-block(
- map.get($button-padding-block, 'compact'),
- map.get($button-padding-block, 'cosy'),
- map.get($button-padding-block, 'comfortable')
+
+ $button-disabled-shadow: none;
+
+ $button-floating-width: rem(56px);
+ $button-floating-height: $button-floating-width;
+
+ $button-padding-inline: (
+ comfortable: rem(16px, 16px),
+ cosy: rem(12px, 16px),
+ compact: rem(8px, 16px),
);
- min-height: var-get($flat-theme, 'size');
- border: rem(1px) solid var-get($flat-theme, 'border-color');
- cursor: pointer;
- user-select: none;
- outline-style: none;
- -webkit-tap-highlight-color: transparent;
- overflow: hidden;
- white-space: nowrap;
- transition: var(--_button-transition);
- gap: pad-inline(
- map.get($items-gap, 'compact'),
- map.get($items-gap, 'cosy'),
- map.get($items-gap, 'comfortable')
+
+ $button-padding-indigo-inline: (
+ comfortable: rem(24px, 16px),
+ cosy: rem(16px, 16px),
+ compact: rem(10px, 16px),
);
- @if $variant == 'indigo' {
- min-width: rem(28px);
- }
+ $button-padding-material-block: (
+ comfortable: rem(7px, 16px),
+ cosy: rem(4px, 16px),
+ compact: rem(1px, 16px),
+ );
- igx-icon {
- --component-size: var(--ig-size, var(--ig-size-large));
- display: flex;
- justify-content: center;
- width: var(--ig-icon-size, #{$icon-in-button-size});
- height: var(--ig-icon-size, #{$icon-in-button-size});
- font-size: var(--ig-icon-size, #{$icon-in-button-size});
- transition: var(--_button-transition);
- }
- }
+ $button-padding-fluent-block: (
+ comfortable: 0,
+ cosy: 0,
+ compact: 0,
+ );
- igx-grid-filtering-row {
- @if $variant == 'bootstrap' {
- --filtering-row-button-size: #{sizable(
- #{map.get($filtering-row-button-size, 'compact')},
- #{map.get($filtering-row-button-size, 'cosy')},
- #{map.get($filtering-row-button-size, 'comfortable')}
- )};
+ $button-padding-bootstrap-block: (
+ comfortable: rem(6px, 16px),
+ cosy: rem(4px, 16px),
+ compact: rem(2px, 16px),
+ );
- %igx-button-display {
- min-height: var(--filtering-row-button-size);
- padding-block: 0;
+ $button-padding-indigo-block: (
+ comfortable: 0,
+ cosy: 0,
+ compact: 0,
+ );
- > * {
- display: flex;
- align-items: center;
- height: rem(18px);
- }
- }
- }
- }
+ $button-padding-inline: map.get(
+ (
+ 'material': $button-padding-inline,
+ 'fluent': $button-padding-inline,
+ 'bootstrap': $button-padding-inline,
+ 'indigo': $button-padding-indigo-inline,
+ ),
+ $variant
+ );
- %igx-button--flat {
- --component-size: var(--ig-size, #{var-get($flat-theme, 'default-size')});
- background: var-get($flat-theme, 'background');
- color: var-get($flat-theme, 'foreground');
- border-radius: var-get($flat-theme, 'border-radius');
+ $button-padding-block: map.get(
+ (
+ 'material': $button-padding-material-block,
+ 'fluent': $button-padding-fluent-block,
+ 'bootstrap': $button-padding-bootstrap-block,
+ 'indigo': $button-padding-indigo-block,
+ ),
+ $variant
+ );
- igx-icon {
- color: var-get($flat-theme, 'icon-color');
- }
+ $outlined-button-padding-inline: map.get(
+ (
+ 'material': $button-padding-inline,
+ 'fluent': $button-padding-inline,
+ 'bootstrap': $button-padding-inline,
+ 'indigo': $button-padding-indigo-inline,
+ ),
+ $variant
+ );
- &:hover {
- background: var-get($flat-theme, 'hover-background');
- color: var-get($flat-theme, 'hover-foreground');
- border-color: var-get($flat-theme, 'hover-border-color');
+ $outlined-button-padding-block: map.get(
+ (
+ 'material': $button-padding-material-block,
+ 'fluent': $button-padding-fluent-block,
+ 'bootstrap': $button-padding-bootstrap-block,
+ 'indigo': $button-padding-indigo-block,
+ ),
+ $variant
+ );
- igx-icon {
- color: var-get($flat-theme, 'icon-color-hover');
- }
- }
+ $button-floating-padding-block: (
+ comfortable: rem(8px),
+ cosy: rem(4px),
+ compact: 0,
+ );
- &:active {
- background: var-get($flat-theme, 'active-background');
- color: var-get($flat-theme, 'active-foreground');
- border-color: var-get($flat-theme, 'active-border-color');
+ $button-floating-padding-inline: (
+ comfortable: rem(14px),
+ cosy: rem(10px),
+ compact: rem(6px),
+ );
- igx-icon {
- color: var-get($flat-theme, 'active-foreground');
- }
+ $button-floating-padding-indigo-inline: (
+ comfortable: rem(10px),
+ cosy: rem(8px),
+ compact: rem(6px),
+ );
- @if $variant == 'indigo' {
- igx-icon {
- color: var-get($flat-theme, 'icon-color-hover');
- }
+ $items-gap: (
+ comfortable: rem(12px),
+ cosy: rem(8px),
+ compact: rem(4px),
+ );
+
+ $items-gap-indigo-comfortable: rem(8px);
+
+ $filtering-row-button-size: (
+ comfortable: rem(40px),
+ cosy: rem(30px),
+ compact: rem(21px),
+ );
+
+ $icon-sizes: map.get(
+ (
+ 'material': rem(18px),
+ 'fluent': rem(18px),
+ 'bootstrap': rem(18px),
+ 'indigo': rem(16px),
+ ),
+ $variant
+ );
+
+ $icon-in-button-size: $icon-sizes;
+
+ $contained-shadow: map.get(
+ (
+ 'material': var-get($contained-theme, 'resting-elevation'),
+ 'fluent': none,
+ 'bootstrap': none,
+ 'indigo': none,
+ ),
+ $variant
+ );
+
+ $contained-shadow--hover: map.get(
+ (
+ 'material': var-get($contained-theme, 'hover-elevation'),
+ 'fluent': none,
+ 'bootstrap': none,
+ 'indigo': none,
+ ),
+ $variant
+ );
+
+ $contained-shadow--focus: map.get(
+ (
+ 'material': var-get($contained-theme, 'focus-elevation'),
+ 'fluent': none,
+ 'bootstrap': 0 0 0 rem(4px)
+ var-get($contained-theme, 'shadow-color'),
+ 'indigo': 0 0 0 rem(3px)
+ var-get($contained-theme, 'shadow-color'),
+ ),
+ $variant
+ );
+
+ $contained-shadow--active: map.get(
+ (
+ 'material': var-get($contained-theme, 'active-elevation'),
+ 'fluent': none,
+ 'bootstrap': 0 0 0 rem(4px)
+ var-get($contained-theme, 'shadow-color'),
+ 'indigo': 0 0 0 rem(3px)
+ var-get($contained-theme, 'shadow-color'),
+ ),
+ $variant
+ );
+
+ $fab-shadow: map.get(
+ (
+ 'material': var-get($fab-theme, 'resting-elevation'),
+ 'fluent': none,
+ 'bootstrap': none,
+ 'indigo': none,
+ ),
+ $variant
+ );
+
+ $fab-shadow--hover: map.get(
+ (
+ 'material': var-get($fab-theme, 'hover-elevation'),
+ 'fluent': none,
+ 'bootstrap': none,
+ 'indigo': none,
+ ),
+ $variant
+ );
+
+ $fab-shadow--focus: map.get(
+ (
+ 'material': var-get($fab-theme, 'focus-elevation'),
+ 'fluent': none,
+ 'bootstrap': 0 0 0 rem(4px) var-get($fab-theme, 'shadow-color'),
+ 'indigo': 0 0 0 rem(3px) var-get($fab-theme, 'shadow-color'),
+ ),
+ $variant
+ );
+
+ $fab-shadow--active: map.get(
+ (
+ 'material': var-get($fab-theme, 'active-elevation'),
+ 'fluent': none,
+ 'bootstrap': 0 0 0 rem(4px) var-get($fab-theme, 'shadow-color'),
+ 'indigo': 0 0 0 rem(3px) var-get($fab-theme, 'shadow-color'),
+ ),
+ $variant
+ );
+
+ %fluent-border {
+ &::after {
+ $btn-indent: rem(2px);
+ content: '';
+ position: absolute;
+ top: $btn-indent;
+ inset-inline-start: $btn-indent;
+ pointer-events: none;
+ width: calc(100% - (#{$btn-indent} * 2));
+ height: calc(100% - (#{$btn-indent} * 2));
}
}
- @if $variant == 'indigo' {
- border-width: rem(2px);
+ %igx-button-display {
+ --_button-transition:
+ color var(--_init-transition, #{$time}) ease-in-out,
+ background-color var(--_init-transition, #{$time}) ease-in-out,
+ border-color var(--_init-transition, #{$time}) ease-in-out,
+ box-shadow var(--_init-transition, #{$time}) ease-in-out;
+
+ @include sizable();
+
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ min-width: $button-width;
+ padding-inline: pad-inline(
+ map.get($button-padding-inline, 'compact'),
+ map.get($button-padding-inline, 'cosy'),
+ map.get($button-padding-inline, 'comfortable')
+ );
+ padding-block: pad-block(
+ map.get($button-padding-block, 'compact'),
+ map.get($button-padding-block, 'cosy'),
+ map.get($button-padding-block, 'comfortable')
+ );
+ min-height: var-get($flat-theme, 'size');
+ border: rem(1px) solid var-get($flat-theme, 'border-color');
+ cursor: pointer;
+ user-select: none;
+ outline-style: none;
+ -webkit-tap-highlight-color: transparent;
+ overflow: hidden;
+ white-space: nowrap;
+ transition: var(--_button-transition);
gap: pad-inline(
map.get($items-gap, 'compact'),
map.get($items-gap, 'cosy'),
- $items-gap-indigo-comfortable
+ map.get($items-gap, 'comfortable')
);
- }
- }
- %igx-button--flat-focused {
- background: var-get($flat-theme, 'focus-visible-background');
- color: var-get($flat-theme, 'focus-visible-foreground');
- border-color: var-get($flat-theme, 'focus-visible-border-color');
+ @if $variant == 'indigo' {
+ min-width: rem(28px);
+ }
- igx-icon {
- @if $variant == 'material' {
- color: var-get($flat-theme, 'icon-color-hover');
- } @else {
- color: var-get($flat-theme, 'icon-color');
+ igx-icon {
+ --component-size: var(--ig-size, var(--ig-size-large));
+ --size: var(--ig-icon-size, #{$icon-in-button-size});
+
+ display: flex;
+ justify-content: center;
+ width: var(--ig-icon-size, #{$icon-in-button-size});
+ height: var(--ig-icon-size, #{$icon-in-button-size});
+ transition: var(--_button-transition);
+ }
+ }
+
+ igx-grid-filtering-row {
+ @if $variant == 'bootstrap' {
+ --filtering-row-button-size: #{sizable(
+ #{map.get($filtering-row-button-size, 'compact')},
+ #{map.get($filtering-row-button-size, 'cosy')},
+ #{map.get($filtering-row-button-size, 'comfortable')}
+ )};
+
+ %igx-button-display {
+ min-height: var(--filtering-row-button-size);
+ padding-block: 0;
+
+ > * {
+ display: flex;
+ align-items: center;
+ height: rem(18px);
+ }
+ }
}
}
- &:hover {
- background: var-get($flat-theme, 'focus-hover-background');
- color: var-get($flat-theme, 'focus-hover-foreground');
+ %igx-button--flat {
+ --component-size: var(
+ --ig-size,
+ #{var-get($flat-theme, 'default-size')}
+ );
+ background: var-get($flat-theme, 'background');
+ color: var-get($flat-theme, 'foreground');
+ border-radius: var-get($flat-theme, 'border-radius');
igx-icon {
- color: var-get($flat-theme, 'icon-color-hover');
+ color: var-get($flat-theme, 'icon-color');
}
- }
- &:active {
- background: var-get($flat-theme, 'focus-background');
- color: var-get($flat-theme, 'focus-foreground');
- border-color: var-get($flat-theme, 'focus-border-color');
+ &:hover {
+ background: var-get($flat-theme, 'hover-background');
+ color: var-get($flat-theme, 'hover-foreground');
+ border-color: var-get($flat-theme, 'hover-border-color');
- igx-icon {
- color: var-get($flat-theme, 'focus-foreground');
+ igx-icon {
+ color: var-get($flat-theme, 'icon-color-hover');
+ }
}
- }
- @if $variant == 'bootstrap' {
- box-shadow: 0 0 0 rem(4px) var-get($flat-theme, 'shadow-color');
- }
+ &:active {
+ background: var-get($flat-theme, 'active-background');
+ color: var-get($flat-theme, 'active-foreground');
+ border-color: var-get($flat-theme, 'active-border-color');
- @if $variant == 'fluent' {
- border-color: var-get($flat-theme, 'active-border-color');
+ igx-icon {
+ color: var-get($flat-theme, 'active-foreground');
+ }
- &::after {
- @extend %fluent-border;
+ @if $variant == 'indigo' {
+ igx-icon {
+ color: var-get($flat-theme, 'icon-color-hover');
+ }
+ }
+ }
- box-shadow: 0 0 0 rem(1px) var-get($flat-theme, 'focus-visible-border-color');
+ @if $variant == 'indigo' {
+ border-width: rem(2px);
+ gap: pad-inline(
+ map.get($items-gap, 'compact'),
+ map.get($items-gap, 'cosy'),
+ $items-gap-indigo-comfortable
+ );
}
}
- @if $variant == 'indigo' {
- box-shadow: 0 0 0 rem(3px) var-get($flat-theme, 'shadow-color');
+ %igx-button--flat-focused {
+ background: var-get($flat-theme, 'focus-visible-background');
+ color: var-get($flat-theme, 'focus-visible-foreground');
+ border-color: var-get($flat-theme, 'focus-visible-border-color');
- &:active {
- igx-icon {
+ igx-icon {
+ @if $variant == 'material' {
color: var-get($flat-theme, 'icon-color-hover');
+ } @else {
+ color: var-get($flat-theme, 'icon-color');
}
}
- }
- }
- %igx-button--outlined {
- --component-size: var(--ig-size, #{var-get($outlined-theme, 'default-size')});
- background: var-get($outlined-theme, 'background');
- color: var-get($outlined-theme, 'foreground');
- border-color: var-get($outlined-theme, 'border-color');
- border-radius: var-get($outlined-theme, 'border-radius');
- padding-block: pad-block(
- map.get($outlined-button-padding-block, 'compact'),
- map.get($outlined-button-padding-block, 'cosy'),
- map.get($outlined-button-padding-block, 'comfortable')
- );
- padding-inline: pad-inline(
- map.get($outlined-button-padding-inline, 'compact'),
- map.get($outlined-button-padding-inline, 'cosy'),
- map.get($outlined-button-padding-inline, 'comfortable')
- );
-
- @if $variant == 'indigo' {
- gap: pad-inline(
- map.get($items-gap, 'compact'),
- map.get($items-gap, 'cosy'),
- $items-gap-indigo-comfortable
- );
+ &:hover {
+ background: var-get($flat-theme, 'focus-hover-background');
+ color: var-get($flat-theme, 'focus-hover-foreground');
- border: rem(2px) solid var-get($outlined-theme, 'border-color');
- }
+ igx-icon {
+ color: var-get($flat-theme, 'icon-color-hover');
+ }
+ }
- igx-icon {
- color: var-get($outlined-theme, 'icon-color');
- }
+ &:active {
+ background: var-get($flat-theme, 'focus-background');
+ color: var-get($flat-theme, 'focus-foreground');
+ border-color: var-get($flat-theme, 'focus-border-color');
- &:hover {
- background: var-get($outlined-theme, 'hover-background');
- color: var-get($outlined-theme, 'hover-foreground');
- border-color: var-get($outlined-theme, 'hover-border-color');
+ igx-icon {
+ color: var-get($flat-theme, 'focus-foreground');
+ }
+ }
- igx-icon {
- color: var-get($outlined-theme, 'icon-color-hover');
+ @if $variant == 'bootstrap' {
+ box-shadow: 0 0 0 rem(4px) var-get($flat-theme, 'shadow-color');
}
- }
- &:active {
- background: var-get($outlined-theme, 'active-background');
- color: var-get($outlined-theme, 'active-foreground');
- border-color: var-get($outlined-theme, 'active-border-color');
+ @if $variant == 'fluent' {
+ border-color: var-get($flat-theme, 'active-border-color');
- igx-icon {
- color: var-get($outlined-theme, 'active-foreground');
+ &::after {
+ @extend %fluent-border;
+
+ box-shadow: 0
+ 0
+ 0
+ rem(1px)
+ var-get($flat-theme, 'focus-visible-border-color');
+ }
}
@if $variant == 'indigo' {
- igx-icon {
- color: var-get($outlined-theme, 'icon-color-hover');
+ box-shadow: 0 0 0 rem(3px) var-get($flat-theme, 'shadow-color');
+
+ &:active {
+ igx-icon {
+ color: var-get($flat-theme, 'icon-color-hover');
+ }
}
}
}
- @if $variant == 'fluent' {
- border: rem(1px) solid var-get($flat-theme, 'border-color');
- }
- }
+ %igx-button--outlined {
+ --component-size: var(
+ --ig-size,
+ #{var-get($outlined-theme, 'default-size')}
+ );
+ background: var-get($outlined-theme, 'background');
+ color: var-get($outlined-theme, 'foreground');
+ border-color: var-get($outlined-theme, 'border-color');
+ border-radius: var-get($outlined-theme, 'border-radius');
+ padding-block: pad-block(
+ map.get($outlined-button-padding-block, 'compact'),
+ map.get($outlined-button-padding-block, 'cosy'),
+ map.get($outlined-button-padding-block, 'comfortable')
+ );
+ padding-inline: pad-inline(
+ map.get($outlined-button-padding-inline, 'compact'),
+ map.get($outlined-button-padding-inline, 'cosy'),
+ map.get($outlined-button-padding-inline, 'comfortable')
+ );
- %igx-button--outlined-focused {
- background: var-get($outlined-theme, 'focus-visible-background');
- color: var-get($outlined-theme, 'focus-visible-foreground');
- border-color: var-get($outlined-theme, 'focus-visible-border-color');
+ @if $variant == 'indigo' {
+ gap: pad-inline(
+ map.get($items-gap, 'compact'),
+ map.get($items-gap, 'cosy'),
+ $items-gap-indigo-comfortable
+ );
- @if $variant == 'material' or $variant == 'bootstrap' {
- igx-icon {
- color: var-get($outlined-theme, 'icon-color-hover');
+ border: rem(2px) solid var-get($outlined-theme, 'border-color');
}
- } @else {
+
igx-icon {
color: var-get($outlined-theme, 'icon-color');
}
- }
- @if $variant == 'bootstrap' {
- box-shadow: 0 0 0 rem(4px) var-get($outlined-theme, 'shadow-color');
- } @else if $variant == 'indigo' {
- box-shadow: 0 0 0 rem(3px) var-get($outlined-theme, 'shadow-color');
- }
-
- &:hover {
- background: var-get($outlined-theme, 'focus-hover-background');
- color: var-get($outlined-theme, 'focus-hover-foreground');
- border-color: var-get($outlined-theme, 'hover-border-color');
+ &:hover {
+ background: var-get($outlined-theme, 'hover-background');
+ color: var-get($outlined-theme, 'hover-foreground');
+ border-color: var-get($outlined-theme, 'hover-border-color');
- igx-icon {
- color: var-get($outlined-theme, 'icon-color-hover');
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color-hover');
+ }
}
- }
- &:active {
- background: var-get($outlined-theme, 'focus-background');
- color: var-get($outlined-theme, 'focus-foreground');
- border-color: var-get($outlined-theme, 'focus-border-color');
+ &:active {
+ background: var-get($outlined-theme, 'active-background');
+ color: var-get($outlined-theme, 'active-foreground');
+ border-color: var-get($outlined-theme, 'active-border-color');
- igx-icon {
- color: var-get($outlined-theme, 'focus-foreground');
+ igx-icon {
+ color: var-get($outlined-theme, 'active-foreground');
+ }
+
+ @if $variant == 'indigo' {
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color-hover');
+ }
+ }
}
- @if $variant == 'indigo' {
+ @if $variant == 'fluent' {
+ border: rem(1px) solid var-get($flat-theme, 'border-color');
+ }
+ }
+
+ %igx-button--outlined-focused {
+ background: var-get($outlined-theme, 'focus-visible-background');
+ color: var-get($outlined-theme, 'focus-visible-foreground');
+ border-color: var-get(
+ $outlined-theme,
+ 'focus-visible-border-color'
+ );
+
+ @if $variant == 'material' or $variant == 'bootstrap' {
igx-icon {
color: var-get($outlined-theme, 'icon-color-hover');
}
+ } @else {
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color');
+ }
}
- }
- @if $variant == 'fluent' {
- border-color: var-get($outlined-theme, 'focus-border-color');
+ @if $variant == 'bootstrap' {
+ box-shadow: 0
+ 0
+ 0
+ rem(4px)
+ var-get($outlined-theme, 'shadow-color');
+ } @else if $variant == 'indigo' {
+ box-shadow: 0
+ 0
+ 0
+ rem(3px)
+ var-get($outlined-theme, 'shadow-color');
+ }
- &::after {
- @extend %fluent-border;
+ &:hover {
+ background: var-get($outlined-theme, 'focus-hover-background');
+ color: var-get($outlined-theme, 'focus-hover-foreground');
+ border-color: var-get($outlined-theme, 'hover-border-color');
- box-shadow: 0 0 0 rem(1px) var-get($outlined-theme, 'focus-visible-border-color');
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color-hover');
+ }
}
- }
- }
- %igx-button--contained {
- --component-size: var(--ig-size, #{var-get($contained-theme, 'default-size')});
- color: var-get($contained-theme, 'foreground');
- background: var-get($contained-theme, 'background');
- border-color: var-get($contained-theme, 'border-color');
- border-radius: var-get($contained-theme, 'border-radius');
+ &:active {
+ background: var-get($outlined-theme, 'focus-background');
+ color: var-get($outlined-theme, 'focus-foreground');
+ border-color: var-get($outlined-theme, 'focus-border-color');
- @if $variant == 'material' {
- box-shadow: var-get($contained-theme, 'resting-elevation');
- }
+ igx-icon {
+ color: var-get($outlined-theme, 'focus-foreground');
+ }
- igx-icon {
- color: var-get($contained-theme, 'icon-color');
- }
+ @if $variant == 'indigo' {
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color-hover');
+ }
+ }
+ }
- &:hover {
- color: var-get($contained-theme, 'hover-foreground');
- background: var-get($contained-theme, 'hover-background');
- border-color: var-get($contained-theme, 'hover-border-color');
+ @if $variant == 'fluent' {
+ border-color: var-get($outlined-theme, 'focus-border-color');
- @if $variant == 'material' {
- box-shadow: var-get($contained-theme, 'hover-elevation');
- }
+ &::after {
+ @extend %fluent-border;
- igx-icon {
- color: var-get($contained-theme, 'icon-color-hover');
+ box-shadow: 0
+ 0
+ 0
+ rem(1px)
+ var-get($outlined-theme, 'focus-visible-border-color');
+ }
}
}
- &:active {
- color: var-get($contained-theme, 'active-foreground');
- background: var-get($contained-theme, 'active-background');
- border-color: var-get($contained-theme, 'active-border-color');
+ %igx-button--contained {
+ --component-size: var(
+ --ig-size,
+ #{var-get($contained-theme, 'default-size')}
+ );
+ color: var-get($contained-theme, 'foreground');
+ background: var-get($contained-theme, 'background');
+ border-color: var-get($contained-theme, 'border-color');
+ border-radius: var-get($contained-theme, 'border-radius');
@if $variant == 'material' {
- box-shadow: var-get($contained-theme, 'active-elevation');
+ box-shadow: var-get($contained-theme, 'resting-elevation');
}
igx-icon {
- color: var-get($contained-theme, 'active-foreground');
+ color: var-get($contained-theme, 'icon-color');
}
- }
- @if $variant == 'indigo' {
- border-width: rem(2px);
- gap: pad-inline(
- map.get($items-gap, 'compact'),
- map.get($items-gap, 'cosy'),
- $items-gap-indigo-comfortable
- );
+ &:hover {
+ color: var-get($contained-theme, 'hover-foreground');
+ background: var-get($contained-theme, 'hover-background');
+ border-color: var-get($contained-theme, 'hover-border-color');
+
+ @if $variant == 'material' {
+ box-shadow: var-get($contained-theme, 'hover-elevation');
+ }
- &:active {
igx-icon {
- color: var-get($outlined-theme, 'icon-color-hover');
+ color: var-get($contained-theme, 'icon-color-hover');
}
}
- }
- }
- %igx-button--contained-focused {
- background: var-get($contained-theme, 'focus-visible-background');
- color: var-get($contained-theme, 'focus-visible-foreground');
- border-color: var-get($contained-theme, 'focus-visible-border-color');
-
- igx-icon {
- color: var-get($contained-theme, 'icon-color');
- }
-
- @if $variant == 'material' {
- box-shadow: var-get($contained-theme, 'focus-elevation');
- } @else {
- box-shadow: $contained-shadow--active;
- }
+ &:active {
+ color: var-get($contained-theme, 'active-foreground');
+ background: var-get($contained-theme, 'active-background');
+ border-color: var-get($contained-theme, 'active-border-color');
- @if $variant == 'fluent' {
- border-color: var-get($contained-theme, 'active-border-color');
+ @if $variant == 'material' {
+ box-shadow: var-get($contained-theme, 'active-elevation');
+ }
- &::after {
- @extend %fluent-border;
+ igx-icon {
+ color: var-get($contained-theme, 'active-foreground');
+ }
+ }
- box-shadow: 0 0 0 rem(1px) var-get($contained-theme, 'focus-visible-border-color');
+ @if $variant == 'indigo' {
+ border-width: rem(2px);
+ gap: pad-inline(
+ map.get($items-gap, 'compact'),
+ map.get($items-gap, 'cosy'),
+ $items-gap-indigo-comfortable
+ );
+
+ &:active {
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color-hover');
+ }
+ }
}
}
- &:hover {
- color: var-get($contained-theme, 'focus-hover-foreground');
- background: var-get($contained-theme, 'focus-hover-background');
- border-color: var-get($contained-theme, 'hover-border-color');
+ %igx-button--contained-focused {
+ background: var-get($contained-theme, 'focus-visible-background');
+ color: var-get($contained-theme, 'focus-visible-foreground');
+ border-color: var-get(
+ $contained-theme,
+ 'focus-visible-border-color'
+ );
igx-icon {
- color: var-get($contained-theme, 'icon-color-hover');
+ color: var-get($contained-theme, 'icon-color');
}
@if $variant == 'material' {
box-shadow: var-get($contained-theme, 'focus-elevation');
+ } @else {
+ box-shadow: $contained-shadow--active;
}
- }
- &:active {
- color: var-get($contained-theme, 'focus-foreground');
- background: var-get($contained-theme, 'focus-background');
- border-color: var-get($contained-theme, 'focus-border-color');
+ @if $variant == 'fluent' {
+ border-color: var-get($contained-theme, 'active-border-color');
- igx-icon {
- color: var-get($contained-theme, 'focus-foreground');
+ &::after {
+ @extend %fluent-border;
+
+ box-shadow: 0
+ 0
+ 0
+ rem(1px)
+ var-get($contained-theme, 'focus-visible-border-color');
+ }
}
- @if $variant == 'indigo' {
+ &:hover {
+ color: var-get($contained-theme, 'focus-hover-foreground');
+ background: var-get($contained-theme, 'focus-hover-background');
+ border-color: var-get($contained-theme, 'hover-border-color');
+
igx-icon {
- color: var-get($outlined-theme, 'icon-color-hover');
+ color: var-get($contained-theme, 'icon-color-hover');
+ }
+
+ @if $variant == 'material' {
+ box-shadow: var-get($contained-theme, 'focus-elevation');
}
}
- }
- }
- %igx-button--round {
- display: inline-flex;
- position: relative;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- outline: none;
- cursor: pointer;
- transition: var(--_button-transition);
- user-select: none;
- -webkit-tap-highlight-color: transparent;
- overflow: hidden;
- // hack to allow circular overflow in safari...
- filter: blur(0);
- }
+ &:active {
+ color: var-get($contained-theme, 'focus-foreground');
+ background: var-get($contained-theme, 'focus-background');
+ border-color: var-get($contained-theme, 'focus-border-color');
- %igx-button--fab {
- --component-size: var(--ig-size, #{var-get($fab-theme, 'default-size')});
- padding-block: pad-block(
- map.get($button-floating-padding-block, 'compact'),
- map.get($button-floating-padding-block, 'cosy'),
- map.get($button-floating-padding-block, 'comfortable')
- );
- padding-inline: pad-inline(
- map.get($button-floating-padding-inline, 'compact'),
- map.get($button-floating-padding-inline, 'cosy'),
- map.get($button-floating-padding-inline, 'comfortable')
- );
+ igx-icon {
+ color: var-get($contained-theme, 'focus-foreground');
+ }
- @if $variant == 'indigo' {
- padding-inline: pad-inline(
- map.get($button-floating-padding-indigo-inline, 'compact'),
- map.get($button-floating-padding-indigo-inline, 'cosy'),
- map.get($button-floating-padding-indigo-inline, 'comfortable')
- );
+ @if $variant == 'indigo' {
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color-hover');
+ }
+ }
+ }
}
- min-width: var-get($fab-theme, 'size');
- min-height: var-get($fab-theme, 'size');
- line-height: unset;
- white-space: nowrap;
- color: var-get($fab-theme, 'foreground');
- background: var-get($fab-theme, 'background');
- border-color: var-get($fab-theme, 'border-color');
- border-radius: var-get($fab-theme, 'border-radius');
-
- @if $variant == 'material' {
- box-shadow: var-get($fab-theme, 'resting-elevation');
+ %igx-button--round {
+ display: inline-flex;
+ position: relative;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ outline: none;
+ cursor: pointer;
+ transition: var(--_button-transition);
+ user-select: none;
+ -webkit-tap-highlight-color: transparent;
+ overflow: hidden;
+ // hack to allow circular overflow in safari...
+ filter: blur(0);
}
- igx-icon {
- color: var-get($fab-theme, 'icon-color');
- }
+ %igx-button--fab {
+ --component-size: var(
+ --ig-size,
+ #{var-get($fab-theme, 'default-size')}
+ );
+ padding-block: pad-block(
+ map.get($button-floating-padding-block, 'compact'),
+ map.get($button-floating-padding-block, 'cosy'),
+ map.get($button-floating-padding-block, 'comfortable')
+ );
+ padding-inline: pad-inline(
+ map.get($button-floating-padding-inline, 'compact'),
+ map.get($button-floating-padding-inline, 'cosy'),
+ map.get($button-floating-padding-inline, 'comfortable')
+ );
- &:hover {
- color: var-get($fab-theme, 'hover-foreground');
- background: var-get($fab-theme, 'hover-background');
- border-color: var-get($fab-theme, 'hover-border-color');
+ @if $variant == 'indigo' {
+ padding-inline: pad-inline(
+ map.get($button-floating-padding-indigo-inline, 'compact'),
+ map.get($button-floating-padding-indigo-inline, 'cosy'),
+ map.get(
+ $button-floating-padding-indigo-inline,
+ 'comfortable'
+ )
+ );
+ }
+
+ min-width: var-get($fab-theme, 'size');
+ min-height: var-get($fab-theme, 'size');
+ line-height: unset;
+ white-space: nowrap;
+ color: var-get($fab-theme, 'foreground');
+ background: var-get($fab-theme, 'background');
+ border-color: var-get($fab-theme, 'border-color');
+ border-radius: var-get($fab-theme, 'border-radius');
@if $variant == 'material' {
- box-shadow: var-get($fab-theme, 'hover-elevation');
+ box-shadow: var-get($fab-theme, 'resting-elevation');
}
igx-icon {
- color: var-get($fab-theme, 'icon-color-hover');
+ color: var-get($fab-theme, 'icon-color');
}
- }
- &:active {
- color: var-get($fab-theme, 'active-foreground');
- background: var-get($fab-theme, 'active-background');
- border-color: var-get($fab-theme, 'active-border-color');
+ &:hover {
+ color: var-get($fab-theme, 'hover-foreground');
+ background: var-get($fab-theme, 'hover-background');
+ border-color: var-get($fab-theme, 'hover-border-color');
- @if $variant == 'material' {
- box-shadow: var-get($fab-theme, 'active-elevation');
- }
-
- igx-icon {
- color: var-get($fab-theme, 'active-foreground');
- }
+ @if $variant == 'material' {
+ box-shadow: var-get($fab-theme, 'hover-elevation');
+ }
- @if $variant == 'indigo' {
igx-icon {
- color: var-get($outlined-theme, 'icon-color-hover');
+ color: var-get($fab-theme, 'icon-color-hover');
}
}
- }
- }
-
- %igx-button--fab-focused {
- background: var-get($fab-theme, 'focus-visible-background');
- color: var-get($fab-theme, 'focus-visible-foreground');
- border-color: var-get($fab-theme, 'focus-visible-border-color');
- igx-icon {
- color: var-get($fab-theme, 'icon-color');
- }
+ &:active {
+ color: var-get($fab-theme, 'active-foreground');
+ background: var-get($fab-theme, 'active-background');
+ border-color: var-get($fab-theme, 'active-border-color');
- @if $variant == 'material' {
- box-shadow: var-get($fab-theme, 'focus-elevation');
- } @else {
- box-shadow: $contained-shadow--focus;
- }
+ @if $variant == 'material' {
+ box-shadow: var-get($fab-theme, 'active-elevation');
+ }
- @if $variant == 'fluent' {
- border-color: var-get($contained-theme, 'active-border-color');
+ igx-icon {
+ color: var-get($fab-theme, 'active-foreground');
+ }
- &::after {
- @extend %fluent-border;
- $btn-indent: rem(2px);
- border-radius: calc(#{var-get($fab-theme, 'border-radius')} - #{$btn-indent});
- box-shadow: 0 0 0 rem(1px) var-get($fab-theme, 'focus-visible-border-color');
+ @if $variant == 'indigo' {
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color-hover');
+ }
+ }
}
}
- &:hover {
- color: var-get($fab-theme, 'focus-hover-foreground');
- background: var-get($fab-theme, 'focus-hover-background');
- border-color: var-get($fab-theme, 'hover-border-color');
+ %igx-button--fab-focused {
+ background: var-get($fab-theme, 'focus-visible-background');
+ color: var-get($fab-theme, 'focus-visible-foreground');
+ border-color: var-get($fab-theme, 'focus-visible-border-color');
igx-icon {
- color: var-get($fab-theme, 'icon-color-hover');
+ color: var-get($fab-theme, 'icon-color');
}
- }
-
- &:active {
- background: var-get($fab-theme, 'focus-background');
- color: var-get($fab-theme, 'focus-foreground');
- border-color: var-get($fab-theme, 'focus-border-color');
- igx-icon {
- color: var-get($contained-theme, 'focus-foreground');
+ @if $variant == 'material' {
+ box-shadow: var-get($fab-theme, 'focus-elevation');
+ } @else {
+ box-shadow: $contained-shadow--focus;
+ }
+
+ @if $variant == 'fluent' {
+ border-color: var-get($contained-theme, 'active-border-color');
+
+ &::after {
+ @extend %fluent-border;
+ $btn-indent: rem(2px);
+ border-radius: calc(
+ #{var-get($fab-theme, 'border-radius')} - #{$btn-indent}
+ );
+ box-shadow: 0
+ 0
+ 0
+ rem(1px)
+ var-get($fab-theme, 'focus-visible-border-color');
+ }
}
- @if $variant == 'indigo' {
+ &:hover {
+ color: var-get($fab-theme, 'focus-hover-foreground');
+ background: var-get($fab-theme, 'focus-hover-background');
+ border-color: var-get($fab-theme, 'hover-border-color');
+
igx-icon {
- color: var-get($outlined-theme, 'icon-color-hover');
+ color: var-get($fab-theme, 'icon-color-hover');
}
}
- }
- }
- %igx-button--disabled {
- background: var-get($flat-theme, 'disabled-background');
- color: var-get($flat-theme, 'disabled-foreground');
- border-color: var-get($flat-theme, 'disabled-border-color');
- pointer-events: none;
- box-shadow: none;
+ &:active {
+ background: var-get($fab-theme, 'focus-background');
+ color: var-get($fab-theme, 'focus-foreground');
+ border-color: var-get($fab-theme, 'focus-border-color');
+
+ igx-icon {
+ color: var-get($contained-theme, 'focus-foreground');
+ }
- igx-icon {
- color: var-get($flat-theme, 'disabled-icon-color');
+ @if $variant == 'indigo' {
+ igx-icon {
+ color: var-get($outlined-theme, 'icon-color-hover');
+ }
+ }
+ }
}
- &:focus {
+ %igx-button--disabled {
+ background: var-get($flat-theme, 'disabled-background');
+ color: var-get($flat-theme, 'disabled-foreground');
+ border-color: var-get($flat-theme, 'disabled-border-color');
+ pointer-events: none;
box-shadow: none;
+
+ igx-icon {
+ color: var-get($flat-theme, 'disabled-icon-color');
+ }
+
+ &:focus {
+ box-shadow: none;
+ }
}
}
}
-
/// Adds typography styles for the igx-button component.
/// Uses the 'button' category from the typographic scale.
/// @group typography
diff --git a/projects/igniteui-angular/core/src/core/styles/components/date-range-picker/_date-range-picker-component.scss b/projects/igniteui-angular/core/src/core/styles/components/date-range-picker/_date-range-picker-component.scss
index ca100d03508..f713bdd0f81 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/date-range-picker/_date-range-picker-component.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/date-range-picker/_date-range-picker-component.scss
@@ -38,6 +38,6 @@
}
@include b(igx-date-range-picker-buttons) {
- @extend %igx-date-range-picker-buttons !optional;
+ //@extend %igx-date-range-picker-buttons !optional;
}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/date-range-picker/_date-range-picker-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/date-range-picker/_date-range-picker-theme.scss
index c1cc48bb7b6..1bb214bfa57 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/date-range-picker/_date-range-picker-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/date-range-picker/_date-range-picker-theme.scss
@@ -8,74 +8,74 @@
@include css-vars($theme);
$variant: map.get($theme, '_meta', 'theme');
- %igx-date-range-picker {
- @include sizable();
- --input-group-size: #{map.get($theme, 'size')};
- --component-size: var(--ig-size, #{var-get($theme, 'default-size')});
- display: flex;
-
- > igx-icon {
- cursor: pointer;
- }
-
- igx-input-group {
- flex: 1;
- }
-
- igx-calendar {
- box-shadow: none;
- }
- }
-
- igx-date-range-start,
- igx-date-range-end {
- min-width: 0;
- }
-
- igx-date-range-start,
- igx-date-range-end,
- %igx-date-range-picker__start,
- %igx-date-range-picker__end {
- --size: var(--input-group-size) !important;
-
- flex: 1 0 0%;
- }
-
- %igx-date-range-picker__label {
- display: flex;
- align-items: center;
- color: var-get($theme, 'label-color');
- margin: 0 rem(8px);
- height: var(--input-group-size);
-
- @if $variant != 'material' {
- align-self: flex-end;
-
- &.input-has-hint {
- align-self: center;
- }
- } @else {
- align-self: flex-start;
- }
- }
-
- %igx-date-range-picker-buttons {
- display: flex;
- justify-content: flex-end;
- padding: 0 rem(16px) rem(16px);
-
- > * {
- margin-inline-end: rem(8px);
-
- &:last-of-type {
- margin-inline-end: 0;
- }
- }
-
- &:empty {
- display: none;
- }
- }
+ //%igx-date-range-picker {
+ // @include sizable();
+ // --input-group-size: #{map.get($theme, 'size')};
+ // --component-size: var(--ig-size, #{var-get($theme, 'default-size')});
+ // display: flex;
+ //
+ // > igx-icon {
+ // cursor: pointer;
+ // }
+ //
+ // igx-input-group {
+ // flex: 1;
+ // }
+ //
+ // igx-calendar {
+ // box-shadow: none;
+ // }
+ //}
+ //
+ //igx-date-range-start,
+ //igx-date-range-end {
+ // min-width: 0;
+ //}
+ //
+ //igx-date-range-start,
+ //igx-date-range-end,
+ //%igx-date-range-picker__start,
+ //%igx-date-range-picker__end {
+ // --size: var(--input-group-size) !important;
+ //
+ // flex: 1 0 0%;
+ //}
+ //
+ //%igx-date-range-picker__label {
+ // display: flex;
+ // align-items: center;
+ // color: var-get($theme, 'label-color');
+ // margin: 0 rem(8px);
+ // height: var(--input-group-size);
+ //
+ // @if $variant != 'material' {
+ // align-self: flex-end;
+ //
+ // &.input-has-hint {
+ // align-self: center;
+ // }
+ // } @else {
+ // align-self: flex-start;
+ // }
+ //}
+ //
+ //%igx-date-range-picker-buttons {
+ // display: flex;
+ // justify-content: flex-end;
+ // padding: 0 rem(16px) rem(16px);
+ //
+ // > * {
+ // margin-inline-end: rem(8px);
+ //
+ // &:last-of-type {
+ // margin-inline-end: 0;
+ // }
+ // }
+ //
+ // &:empty {
+ // display: none;
+ // }
+ //}
}
/// Adds typography styles for the igx-date-range-picker component.
diff --git a/projects/igniteui-angular/core/src/core/styles/components/grid/_excel-filtering-component.scss b/projects/igniteui-angular/core/src/core/styles/components/grid/_excel-filtering-component.scss
index 3e2c91e373a..cb88256cad0 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/grid/_excel-filtering-component.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/grid/_excel-filtering-component.scss
@@ -3,180 +3,189 @@
/// @access private
/// @author Simeon Simeonoff
@mixin excel-filtering-partial {
- @include b(igx-excel-filter) {
- @extend %grid-excel-filter !optional;
-
- @include e(loading) {
- @extend %igx-excel-filter__loading !optional;
- }
-
- @include e(sizing) {
- @extend %igx-excel-filter__sizing !optional;
- }
-
- @include e(tree) {
- @extend %igx-excel-filter__tree !optional;
- }
-
- @include e(empty) {
- @extend %igx-excel-filter__empty !optional;
- }
-
- @include e(tree-alike) {
- @extend %igx-excel-filter__tree-alike !optional;
- }
-
- @include e(tree-alike-item) {
- @extend %igx-excel-filter__tree-alike-item !optional;
- }
-
- @include e(menu) {
- @include sizable();
- @extend %grid-excel-menu !optional;
- }
-
- @include e(menu, $m: 'cosy') {
- @extend %grid-excel-menu--cosy !optional;
- }
-
- @include e(menu, $m: 'compact') {
- @extend %grid-excel-menu--compact !optional;
- }
-
- @include e(icon) {
- @extend %grid-excel-icon !optional;
- }
-
- @include e(icon, $m: 'filtered') {
- @extend %grid-excel-icon !optional;
- @extend %grid-excel-icon--filtered !optional;
- }
-
- @include e(menu-header) {
- @extend %grid-excel-menu__header !optional;
- }
-
- @include e(menu-header-actions) {
- @extend %grid-excel-menu__header-actions !optional;
- }
-
- @include e(menu-main) {
- @extend %grid-excel-main !optional;
- }
-
- @include e(menu-footer) {
- @extend %grid-excel-menu__footer !optional;
- }
-
- @include e(sort) {
- @extend %grid-excel-sort !optional;
- }
-
- @include e(move) {
- @extend %grid-excel-move !optional;
- }
-
- @include e(actions) {
- @extend %grid-excel-actions !optional;
- }
-
- @include e(actions-pin) {
- @extend %grid-excel-actions__action !optional;
- }
-
- @include e(actions-pin, $m: disabled) {
- @extend %grid-excel-actions__action !optional;
- @extend %grid-excel-actions__action--disabled !optional;
- }
-
- @include e(actions-unpin) {
- @extend %grid-excel-actions__action !optional;
- }
-
- @include e(actions-hide) {
- @extend %grid-excel-actions__action !optional;
- }
-
- @include e(actions-select) {
- @extend %grid-excel-actions__action !optional;
- }
-
- @include e(actions-selected) {
- @extend %grid-excel-actions__action !optional;
- @extend %grid-excel-actions--selected !optional;
- }
-
- @include e(actions-filter) {
- @extend %grid-excel-actions__action !optional;
- @extend %grid-excel-actions__action-filter !optional;
- }
-
- @include e(actions-filter, $m: active) {
- @extend %grid-excel-actions__action !optional;
- @extend %grid-excel-actions__action--active !optional;
- }
-
- @include e(actions-clear) {
- @extend %grid-excel-actions__action !optional;
- }
-
- @include e(actions-clear, $m: disabled) {
- @extend %grid-excel-actions__action !optional;
- @extend %grid-excel-actions__action--disabled !optional;
- }
-
- @include e(secondary) {
- @extend %grid-excel-menu__secondary !optional;
- }
-
- @include e(secondary, $m: 'cosy') {
- @extend %grid-excel-menu__secondary--cosy !optional;
- }
-
- @include e(secondary, $m: 'compact') {
- @extend %grid-excel-menu__secondary--compact !optional;
- }
-
- @include e(secondary-header) {
- @extend %grid-excel-menu__header !optional;
- @extend %grid-excel-menu__secondary-header !optional;
- }
-
- @include e(secondary-main) {
- @extend %grid-excel-menu__secondary-main !optional;
- }
-
- @include e(secondary-footer) {
- @extend %grid-excel-menu__footer !optional;
- @extend %grid-excel-menu__secondary-footer !optional;
- }
-
- @include e(condition) {
- @extend %grid-excel-menu__condition !optional;
- }
-
- @include e(add-filter) {
- @extend %grid-excel-menu__add-filter !optional;
- }
-
- @include e(clear) {
- @extend %grid-excel-filter__clear !optional;
- }
-
- @include e(cancel) {
- @extend %grid-excel-filter__cancel !optional;
- }
-
- @include e(apply) {
- @extend %grid-excel-filter__apply !optional;
- }
-
- @include m(inline) {
- @extend %grid-excel-filter--inline !optional;
- }
-
- @include e(filter-results) {
- @extend %grid-excel-menu__filter-results !optional;
- }
- }
+ //@include b(igx-excel-filter) {
+ // @extend %grid-excel-filter !optional;
+ //
+ // @include e(loading) {
+ // @extend %igx-excel-filter__loading !optional;
+ // }
+ //
+ // @include e(sizing) {
+ // @extend %igx-excel-filter__sizing !optional;
+ // }
+ //
+ // @include e(tree) {
+ // @extend %igx-excel-filter__tree !optional;
+ // }
+ //
+ // @include e(empty) {
+ // @extend %igx-excel-filter__empty !optional;
+ // }
+ //
+ // @include e(tree-alike) {
+ // @extend %igx-excel-filter__tree-alike !optional;
+ // }
+ //
+ // @include e(tree-alike-item) {
+ // @extend %igx-excel-filter__tree-alike-item !optional;
+ // }
+ //
+ // @include e(menu) {
+ // @include sizable();
+ // @extend %grid-excel-menu !optional;
+ // }
+ //
+ // @include e(menu, $m: 'cosy') {
+ // @extend %grid-excel-menu--cosy !optional;
+ // }
+ //
+ // @include e(menu, $m: 'compact') {
+ // @extend %grid-excel-menu--compact !optional;
+ // }
+ //
+ // @include e(icon) {
+ // @extend %grid-excel-icon !optional;
+ // }
+ //
+ // @include e(icon, $m: 'filtered') {
+ // @extend %grid-excel-icon !optional;
+ // @extend %grid-excel-icon--filtered !optional;
+ // }
+ //
+ // @include e(menu-header) {
+ // @extend %grid-excel-menu__header !optional;
+ // }
+ //
+ // @include e(menu-header-actions) {
+ // @extend %grid-excel-menu__header-actions !optional;
+ // }
+ //
+ // @include e(menu-main) {
+ // @extend %grid-excel-main !optional;
+ // }
+ //
+ // @include e(menu-footer) {
+ // display: flex;
+ // justify-content: space-between;
+ // }
+ //
+ // @include e(sort) {
+ // @extend %grid-excel-action--compact;
+ //
+ // igx-buttongroup {
+ // width: rem(208px);
+ // }
+ // }
+ //
+ // @include e(move) {
+ // @extend %grid-excel-action--compact;
+ //
+ // igx-buttongroup {
+ // width: rem(208px);
+ // }
+ // }
+ //
+ // @include e(actions) {
+ // @extend %grid-excel-actions !optional;
+ // }
+ //
+ // @include e(actions-pin) {
+ // @extend %grid-excel-actions__action !optional;
+ // }
+ //
+ // @include e(actions-pin, $m: disabled) {
+ // @extend %grid-excel-actions__action !optional;
+ // @extend %grid-excel-actions__action--disabled !optional;
+ // }
+ //
+ // @include e(actions-unpin) {
+ // @extend %grid-excel-actions__action !optional;
+ // }
+ //
+ // @include e(actions-hide) {
+ // @extend %grid-excel-actions__action !optional;
+ // }
+ //
+ // @include e(actions-select) {
+ // @extend %grid-excel-actions__action !optional;
+ // }
+ //
+ // @include e(actions-selected) {
+ // @extend %grid-excel-actions__action !optional;
+ // @extend %grid-excel-actions--selected !optional;
+ // }
+ //
+ // @include e(actions-filter) {
+ // @extend %grid-excel-actions__action !optional;
+ // @extend %grid-excel-actions__action-filter !optional;
+ // }
+ //
+ // @include e(actions-filter, $m: active) {
+ // @extend %grid-excel-actions__action !optional;
+ // @extend %grid-excel-actions__action--active !optional;
+ // }
+ //
+ // @include e(actions-clear) {
+ // @extend %grid-excel-actions__action !optional;
+ // }
+ //
+ // @include e(actions-clear, $m: disabled) {
+ // @extend %grid-excel-actions__action !optional;
+ // @extend %grid-excel-actions__action--disabled !optional;
+ // }
+ //
+ // @include e(secondary) {
+ // @extend %grid-excel-menu__secondary !optional;
+ // }
+ //
+ // @include e(secondary, $m: 'cosy') {
+ // @extend %grid-excel-menu__secondary--cosy !optional;
+ // }
+ //
+ // @include e(secondary, $m: 'compact') {
+ // @extend %grid-excel-menu__secondary--compact !optional;
+ // }
+ //
+ // @include e(secondary-header) {
+ // @extend %grid-excel-menu__header !optional;
+ // @extend %grid-excel-menu__secondary-header !optional;
+ // }
+ //
+ // @include e(secondary-main) {
+ // @extend %grid-excel-menu__secondary-main !optional;
+ // }
+ //
+ // @include e(secondary-footer) {
+ // @extend %grid-excel-menu__footer !optional;
+ // @extend %grid-excel-menu__secondary-footer !optional;
+ // }
+ //
+ // @include e(condition) {
+ // @extend %grid-excel-menu__condition !optional;
+ // }
+ //
+ // @include e(add-filter) {
+ // @extend %grid-excel-menu__add-filter !optional;
+ // }
+ //
+ // @include e(clear) {
+ // @extend %grid-excel-filter__clear !optional;
+ // }
+ //
+ // @include e(cancel) {
+ // @extend %grid-excel-filter__cancel !optional;
+ // }
+ //
+ // @include e(apply) {
+ // @extend %grid-excel-filter__apply !optional;
+ // }
+ //
+ // @include m(inline) {
+ // @extend %grid-excel-filter--inline !optional;
+ // }
+ //
+ // @include e(filter-results) {
+ // @extend %grid-excel-menu__filter-results !optional;
+ // }
+ //}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/grid/_grid-component.scss b/projects/igniteui-angular/core/src/core/styles/components/grid/_grid-component.scss
index 3d202f84165..8eb02e2f71e 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/grid/_grid-component.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/grid/_grid-component.scss
@@ -10,664 +10,664 @@
/// @requires {mixin} excel-filtering-partial
/// @requires {mixin} advanced-filtering-partial
@mixin component {
- @include b(igx-grid) {
- $this: bem--selector-to-string(&);
- @include register-component(
- $name: string.slice($this, 2, -1),
- $deps: (
- igx-checkbox,
- igx-chip,
- igx-grid-summary,
- igx-icon-button,
- igx-input-group,
- igx-grid-toolbar,
- igx-paginator,
- igx-watermark,
- )
- );
-
- @extend %grid-host !optional;
-
- @extend %grid-display !optional;
-
- @include e(caption) {
- @extend %grid-caption !optional;
- }
-
- @include e(tbody) {
- @extend %grid-tbody-container !optional;
- }
-
- @include e(tbody-content) {
- @extend %grid-tbody !optional;
-
- &:focus {
- @extend %disable-focus-styles !optional;
- }
- }
-
- @include e(tbody-message) {
- @extend %grid-tbody-message !optional;
- }
-
- @include e(loading) {
- @extend %igx-grid__loading !optional;
- }
-
- @include e(tbody-scrollbar) {
- @extend %grid-tbody-scrollbar !optional;
- }
-
- @include e(tbody-scrollbar-main) {
- @extend %grid-tbody-scrollbar-main !optional;
- }
-
- @include e(tbody-scrollbar-start) {
- @extend %grid-tbody-scrollbar-start !optional;
- }
-
- @include e(tbody-scrollbar-end) {
- @extend %grid-tbody-scrollbar-end !optional;
- }
-
- @include e(scroll) {
- @extend %grid-scroll !optional;
- }
-
- @include e(scroll-start) {
- @extend %grid-scroll-start !optional;
- }
-
- @include e(scroll-main) {
- @extend %grid-scroll-main !optional;
- }
-
- @include e(tfoot) {
- @extend %grid-tfoot !optional;
-
- &:focus {
- @extend %disable-focus-styles !optional;
- }
- }
-
- @include e(tfoot-thumb) {
- @extend %grid-tfoot-thumb !optional;
- }
-
- @include e(footer) {
- @extend %grid-footer !optional;
- }
-
- @include e(tr) {
- @extend %grid-row !optional;
-
- igx-display-container {
- @extend %grid-display-container-tr !optional;
- }
- }
-
- @include e(tr-action) {
- @extend %igx-grid__tr-action !optional;
- }
-
- @include e(tr, $m: 'drag') {
- @extend %igx-grid__tr--drag !optional;
- }
-
- @include e(tr, $m: 'ghost') {
- @extend %igx-grid__tr--ghost !optional;
- }
-
- @include e(drag-indicator) {
- @extend %igx-grid__drag-indicator !optional;
- }
-
- @include e(drag-indicator, $m: 'header') {
- @extend %igx-grid__drag-indicator--header !optional;
- }
-
- @include e(drag-indicator, $m: 'off') {
- @extend %igx-grid__drag-indicator--off !optional;
- }
-
- @include e(tr, $m: 'mrl') {
- @extend %grid-row--mrl !optional;
- }
-
- @include e(tr, $mods: ('mrl', 'edit')) {
- @extend %grid-row--edit-mrl !optional;
- }
-
- @include e(summaries) {
- @extend %grid-summaries !optional;
-
- igx-display-container {
- @extend %grid-display-container-tr !optional;
- }
- }
-
- @include e(summaries, $m: 'body') {
- @extend %grid-summaries !optional;
- @extend %grid-summaries--body !optional;
-
- igx-display-container {
- @extend %grid-display-container-tr !optional;
- }
- }
-
- @include e(summaries-patch) {
- @extend %grid-summaries-patch !optional;
- }
-
- @include e(tr, $m: odd) {
- @extend %grid-row--odd !optional;
- }
-
- @include e(tr, $m: even) {
- @extend %grid-row--even !optional;
- }
-
- @include e(tr, $m: selected) {
- @extend %grid-row--selected !optional;
- }
-
- @include e(tr, $m: edited) {
- @extend %igx-grid__tr--edited !optional;
- }
-
- @include e(tr, $m: deleted) {
- @extend %igx-grid__tr--deleted !optional;
- }
-
- @include e(tr, $m: highlighted) {
- @extend %igx-grid__tr--highlighted !optional;
- }
-
- @include e(tr, $m: edit) {
- @extend %igx-grid__tr--edit !optional;
- }
-
- @include e(tr, $m: add-animate) {
- @extend %igx-grid__tr--add-animate !optional;
- }
-
- @include e(tr, $m: inner) {
- @extend %igx-grid__tr--inner !optional;
- }
-
- @include e(tr, $m: header) {
- @extend %igx-grid__tr--header !optional;
- }
-
- @include e(tr, $m: group) {
- @extend %grid-row--group !optional;
- }
-
- @include e(tr, $m: mrl) {
- @extend %grid-row--mrl !optional;
- }
-
- @include e(tr-container) {
- @extend %igx-grid__tr-container !optional;
- }
-
- @include e(tr-container, $m: active) {
- @extend %igx-grid__tr-container--active !optional;
- }
-
- @include e(td) {
- @extend %grid-cell-display !optional;
- }
-
- @include e(td, $m: active) {
- @extend %grid-cell--active !optional;
- }
-
- @include e(td, $m: selected) {
- @extend %grid-cell--selected !optional;
- }
-
- @include e(td, $m: invalid) {
- @extend %grid-cell--invalid !optional;
- }
-
- @include e(td, $m: valid) {
- @extend %grid-cell--valid !optional;
- }
-
- @include e(td, $m: column-selected) {
- @extend %grid-cell--column-selected !optional;
- }
-
- @include e(td, $mods: (selected, column-selected)) {
- @extend %grid-cell--cross-selected !optional;
- }
-
- @include e(td, $m: bool) {
- @extend %igx-grid__td--centered !optional;
- @extend %igx-grid__td--bool !optional;
- }
-
- @include e(td, $m: bool-true) {
- @extend %igx-grid__td--bool-true !optional;
- }
-
- @include e(td, $m: image) {
- @extend %igx-grid__td--centered !optional;
- }
-
- @include e(tr, $mods: (selected, filtered)) {
- @extend %grid-row--selected--filtered !optional;
- }
-
- @include e(tr, $m: filtered) {
- @extend %igx-grid-row--filtered !optional;
- }
-
- @include e(tr, $m: expanded) {
- @extend %igx-grid__tr--expanded !optional;
- }
-
- @include e(tr, $m: pinned) {
- @extend %igx-grid__tr--pinned !optional;
- }
-
- @include e(tr, $m: merged) {
- @extend %igx-grid__tr--merged !optional;
- }
-
- @include e(tr, $m: merged-top) {
- @extend %igx-grid__tr--merged-top !optional;
- }
-
- @include e(tr, $m: pinned-top) {
- @extend %igx-grid__tr--pinned-top !optional;
- }
-
- @include e(tr, $m: pinned-bottom) {
- @extend %igx-grid__tr--pinned-bottom !optional;
- }
-
- @include e(tree-grouping-indicator) {
- @extend %igx-grid__tree-grouping-indicator !optional;
- }
-
- @include e(tree-loading-indicator) {
- @extend %igx-grid__tree-loading-indicator !optional;
- }
-
- @include e(td, $m: new) {
- @extend %igx-grid__td--new !optional;
- }
-
- @include e(td, $m: edited) {
- @extend %igx-grid__td--edited !optional;
- }
-
- @include e(td, $m: merged) {
- @extend %igx-grid__td--merged !optional;
- }
-
- @include e(td, $mods: (merged-selected, merged-hovered)) {
- @extend %igx-grid__td--merged-selected-hovered !optional;
- }
-
- @include e(td, $m: merged-selected) {
- @extend %igx-grid__td--merged-selected !optional;
- }
-
- @include e(td, $m: merged-hovered) {
- @extend %igx-grid__td--merged-hovered !optional;
- }
-
- @include e(td, $m: editing) {
- @extend %igx-grid__td--editing !optional;
- }
-
- @include e(td, $mods: (editing, valid)) {
- @extend %igx-grid__td--editing--valid !optional;
- }
-
- @include e(td, $mods: (editing, invalid)) {
- @extend %igx-grid__td--editing--invalid !optional;
- }
-
- @include e(tr, $m: disabled) {
- @extend %igx-grid__tr--disabled !optional;
- }
-
- @include e(td, $m: number) {
- @extend %grid-cell-number !optional;
- }
-
- @include e(td, $m: pinned) {
- @extend %grid-cell--pinned !optional;
- }
-
- @include e(td, $m: pinned-last) {
- @extend %grid-cell--pinned !optional;
- @extend %grid-cell--pinned-last !optional;
- }
-
- @include e(td, $m: pinned-first) {
- @extend %grid-cell--pinned !optional;
- @extend %grid-cell--pinned-first !optional;
- }
-
- @include e(td, $m: fw) {
- @extend %grid-cell--fixed-width !optional;
- }
-
- @include e(td, $mods: (pinned, selected)) {
- @extend %grid-cell--pinned-selected !optional;
- }
-
- @include e(td, $mods: (pinned, column-selected)) {
- @extend %grid-cell--pinned--column-selected !optional;
- }
-
- @include e(td, $m: row-pinned-first) {
- @extend %grid-cell--row-pinned-first !optional;
- }
-
- @include e(td, $m: pinned-chip) {
- @extend %grid-cell--pinned-chip !optional;
- }
-
- @include e(td-text) {
- @extend %grid-cell-text !optional;
- }
-
- @include e(cbx-padding) {
- @extend %cbx-padding !optional;
- }
-
- @include e(cbx-selection) {
- @extend %grid__cbx-selection !optional;
- }
-
- @include e(cbx-selection, $m: push) {
- @extend %grid__cbx-selection--push !optional;
- }
-
- @include e(group-row) {
- @extend %igx-grid__group-row !optional;
- }
-
- @include e(group-row, $m: active) {
- @extend %igx-grid__group-row--active !optional;
- }
-
- @include e(group-content) {
- @extend %igx-grid__group-content !optional;
- }
-
- @include e(row-indentation) {
- @extend %igx-grid__row-indentation !optional;
- }
-
- @include e(grouping-indicator) {
- @extend %igx-grid__grouping-indicator !optional;
- }
-
- @include e(scroll-on-drag-left) {
- @extend %grid__scroll-on-drag-left !optional;
- }
-
- @include e(scroll-on-drag-right) {
- @extend %grid__scroll-on-drag-right !optional;
- }
-
- @include e(scroll-on-drag-pinned) {
- @extend %grid__scroll-on-drag-pinned !optional;
- }
-
- @include e(drag-ghost-image) {
- @extend %grid__drag-ghost-image !optional;
- }
-
- @include e(drag-ghost-image-icon) {
- @extend %grid__drag-ghost-image-icon !optional;
- }
-
- @include e(drag-ghost-image-icon-group) {
- @extend %grid__drag-ghost-image-icon-group !optional;
- }
-
- @include e(drag-col-header) {
- @extend %igx-grid__drag-col-header !optional;
- }
-
- @include e(header-indentation) {
- @extend %igx-grid__header-indentation !optional;
- }
-
- @include e(header-indentation, $m: 'no-border') {
- @extend %igx-grid__header-indentation--no-border !optional;
- }
-
- @include e(group-expand-btn) {
- @extend %igx-grid__group-expand-btn !optional;
- }
-
- @include e(group-expand-btn, $m: 'push') {
- @extend %igx-grid__group-expand-btn--push !optional;
- }
-
- @include e(outlet) {
- @extend %igx-grid__outlet !optional;
- }
-
- @include e(loading-outlet) {
- @extend %igx-grid__loading-outlet !optional;
- }
-
- @include e(row-editing-outlet) {
- @extend %igx-grid__row-editing-outlet !optional;
- }
-
- @include e(addrow-snackbar) {
- @extend %igx-grid__addrow-snackbar !optional;
- }
-
- @include e(filtering-cell) {
- @extend %igx-grid__filtering-cell !optional;
- }
-
- @include e(filtering-cell, $m: 'selected') {
- @extend %igx-grid__filtering-cell !optional;
- @extend %igx-grid__filtering-cell--selected !optional;
- }
-
- @include e(filtering-cell-indicator) {
- @extend %igx-grid__filtering-cell-indicator !optional;
- }
-
- @include e(filtering-cell-indicator, $m: 'hidden') {
- @extend %igx-grid__filtering-cell-indicator !optional;
- @extend %igx-grid__filtering-cell-indicator--hidden !optional;
- }
-
- @include e(filtering-dropdown-items) {
- @extend %igx-grid__filtering-dropdown-items !optional;
- }
-
- @include e(filtering-dropdown-text) {
- @extend %igx-grid__filtering-dropdown-text !optional;
- }
-
- @include e(filtering-row) {
- @extend %igx-grid__filtering-row !optional;
- }
-
- @include e(filtering-row-editing-buttons) {
- @extend %igx-grid__filtering-row-editing-buttons !optional;
- }
-
- @include e(filtering-row-editing-buttons, $m: small) {
- @extend %igx-grid__filtering-row-editing-buttons--small !optional;
- }
-
- @include e(filtering-row-main) {
- @extend %igx-grid__filtering-row-main !optional;
- }
-
- @include e(filtering-row-scroll-start) {
- @extend %igx-grid__filtering-scroll-start !optional;
- }
-
- @include e(filtering-row-scroll-end) {
- @extend %igx-grid__filtering-scroll-end !optional;
- }
-
- @include e(hierarchical-indent) {
- @extend %igx-grid__hierarchical-indent !optional;
- }
-
- @include e(hierarchical-expander) {
- @extend %igx-grid__hierarchical-expander !optional;
- }
-
- @include e(hierarchical-expander, $m: empty) {
- @extend %igx-grid__hierarchical-expander !optional;
- @extend %igx-grid__hierarchical-expander--empty !optional;
- }
-
- @include e(hierarchical-expander, $m: header) {
- @extend %igx-grid__hierarchical-expander--header !optional;
- }
-
- @include e(hierarchical-expander, $m: push) {
- @extend %igx-grid__hierarchical-expander--push !optional;
- }
-
- @include e(hierarchical-indent, $m: scroll) {
- @extend %igx-grid__hierarchical-indent--scroll !optional;
- }
-
- @include e(mrl-block) {
- @extend %grid-mrl-block !optional;
- }
-
- @for $i from 1 through 10 {
- @include e(row-indentation, $m: level-#{$i}) {
- @extend %igx-grid__row-indentation--level-#{$i} !optional;
- }
-
- @include e(group-row, $m: padding-level-#{$i}) {
- @extend %igx-grid__group-row--padding-level-#{$i} !optional;
- }
- }
-
- // Pivot start
- @include e(pivot, $m: 'super-compact') {
- @extend %igx-grid__pivot--super-compact !optional;
- }
-
- @include e(tr-pivot) {
- @extend %igx-grid__tr-pivot !optional;
- }
-
- @include e(pivot-filter-toggle) {
- @extend %igx-grid__pivot-filter-toggle !optional;
- }
-
- @include e(pivot-empty-chip-area) {
- @extend %igx-grid__pivot-empty-chip-area !optional;
- }
-
-
-
- @include e(tr-pivot, $m: 'row-area') {
- @extend %igx-grid__tr-pivot--row-area !optional;
- }
-
- @include e(tr-pivot, $m: 'filter-container') {
- @extend %igx-grid__tr-pivot--filter-container !optional;
- }
-
- @include e(tr-pivot, $m: 'chip_drop_indicator') {
- @extend %igx-grid__tr-pivot--chip_drop_indicator !optional;
- }
-
- @include e(tr-pivot, $m: 'drop-row-area') {
- @extend %igx-grid__tr-pivot--drop-row-area !optional;
- }
-
- @include e(tr-pivot, $m: 'filter') {
- @extend %igx-grid__tr-pivot--filter !optional;
- }
-
- @include e(tr-pivot-group) {
- @extend %igx-grid__tr-pivot-group !optional;
- }
-
- @include e(tr-header-row) {
- @extend %igx-grid__tr-header-row !optional;
- }
-
- @include e(tr-pivot, $m: 'columnDimensionLeaf') {
- @extend %igx-grid__tr-pivot--columnDimensionLeaf !optional;
- }
-
- @include e(tr-pivot, $m: 'columnMultiRowSpan') {
- @extend %igx-grid__tr-pivot--columnMultiRowSpan !optional;
- }
-
- @include e(tbody-pivot-mrl-dimension) {
- @extend %igx-grid__tbody-pivot-mrl-dimension !optional;
- }
-
- @include e(tr-pivot-toggle-icons) {
- @extend %igx-grid__tr-pivot-toggle-icons !optional;
- }
- // pivot end
-
- @include excel-filtering-partial();
- @include advanced-filtering-partial();
- @include group-by-area();
- @include header-row();
- }
-
- @include b(igx-drop-area) {
- @extend %igx-drop-area !optional;
-
- @include m(hover) {
- @extend %igx-drop-area--hover !optional;
- }
-
- @include e(icon) {
- @extend %igx-drop-area__icon !optional;
- }
-
- @include e(text) {
- @extend %igx-drop-area__text !optional;
- }
- }
-
- @include b(igx-group-label) {
- @extend %igx-group-label !optional;
-
- @include e(icon) {
- @extend %igx-group-label__icon !optional;
- }
-
- @include e(column-name) {
- @extend %igx-group-label__column-name !optional;
- }
-
- @include e(text) {
- @extend %igx-group-label__text !optional;
- }
-
- @include e(count-badge) {
- @extend %igx-group-label__count-badge !optional;
- }
- }
-
- @include b(igx-grid-summary) {
- @include m(active) {
- @extend %igx-grid-summary--active !optional;
- }
- }
+ //@include b(igx-grid) {
+ // $this: bem--selector-to-string(&);
+ // @include register-component(
+ // $name: string.slice($this, 2, -1),
+ // $deps: (
+ // igx-checkbox,
+ // igx-chip,
+ // igx-grid-summary,
+ // igx-icon-button,
+ // igx-input-group,
+ // igx-grid-toolbar,
+ // igx-paginator,
+ // igx-watermark,
+ // )
+ // );
+ //
+ // @extend %grid-host !optional;
+ //
+ // @extend %grid-display !optional;
+ //
+ // @include e(caption) {
+ // @extend %grid-caption !optional;
+ // }
+ //
+ // @include e(tbody) {
+ // @extend %grid-tbody-container !optional;
+ // }
+ //
+ // @include e(tbody-content) {
+ // @extend %grid-tbody !optional;
+ //
+ // &:focus {
+ // @extend %disable-focus-styles !optional;
+ // }
+ // }
+ //
+ // @include e(tbody-message) {
+ // @extend %grid-tbody-message !optional;
+ // }
+ //
+ // @include e(loading) {
+ // @extend %igx-grid__loading !optional;
+ // }
+ //
+ // @include e(tbody-scrollbar) {
+ // @extend %grid-tbody-scrollbar !optional;
+ // }
+ //
+ // @include e(tbody-scrollbar-main) {
+ // @extend %grid-tbody-scrollbar-main !optional;
+ // }
+ //
+ // @include e(tbody-scrollbar-start) {
+ // @extend %grid-tbody-scrollbar-start !optional;
+ // }
+ //
+ // @include e(tbody-scrollbar-end) {
+ // @extend %grid-tbody-scrollbar-end !optional;
+ // }
+ //
+ // @include e(scroll) {
+ // @extend %grid-scroll !optional;
+ // }
+ //
+ // @include e(scroll-start) {
+ // @extend %grid-scroll-start !optional;
+ // }
+ //
+ // @include e(scroll-main) {
+ // @extend %grid-scroll-main !optional;
+ // }
+ //
+ // @include e(tfoot) {
+ // @extend %grid-tfoot !optional;
+ //
+ // &:focus {
+ // @extend %disable-focus-styles !optional;
+ // }
+ // }
+ //
+ // @include e(tfoot-thumb) {
+ // @extend %grid-tfoot-thumb !optional;
+ // }
+ //
+ // @include e(footer) {
+ // @extend %grid-footer !optional;
+ // }
+ //
+ // @include e(tr) {
+ // @extend %grid-row !optional;
+ //
+ // igx-display-container {
+ // @extend %grid-display-container-tr !optional;
+ // }
+ // }
+ //
+ // @include e(tr-action) {
+ // @extend %igx-grid__tr-action !optional
+ // }
+ //
+ // @include e(tr, $m: 'drag') {
+ // @extend %igx-grid__tr--drag !optional;
+ // }
+ //
+ // @include e(tr, $m: 'ghost') {
+ // @extend %igx-grid__tr--ghost !optional;
+ // }
+ //
+ // @include e(drag-indicator) {
+ // @extend %igx-grid__drag-indicator !optional;
+ // }
+ //
+ // @include e(drag-indicator, $m: 'header') {
+ // @extend %igx-grid__drag-indicator--header !optional;
+ // }
+ //
+ // @include e(drag-indicator, $m: 'off') {
+ // @extend %igx-grid__drag-indicator--off !optional;
+ // }
+ //
+ // @include e(tr, $m: 'mrl') {
+ // @extend %grid-row--mrl !optional;
+ // }
+ //
+ // @include e(tr, $mods: ('mrl', 'edit')) {
+ // @extend %grid-row--edit-mrl !optional;
+ // }
+ //
+ // @include e(summaries) {
+ // @extend %grid-summaries !optional;
+ //
+ // igx-display-container {
+ // @extend %grid-display-container-tr !optional;
+ // }
+ // }
+ //
+ // @include e(summaries, $m: 'body') {
+ // @extend %grid-summaries !optional;
+ // @extend %grid-summaries--body !optional;
+ //
+ // igx-display-container {
+ // @extend %grid-display-container-tr !optional;
+ // }
+ // }
+ //
+ // @include e(summaries-patch) {
+ // @extend %grid-summaries-patch !optional;
+ // }
+ //
+ // @include e(tr, $m: odd) {
+ // @extend %grid-row--odd !optional;
+ // }
+ //
+ // @include e(tr, $m: even) {
+ // @extend %grid-row--even !optional;
+ // }
+ //
+ // @include e(tr, $m: selected) {
+ // @extend %grid-row--selected !optional;
+ // }
+ //
+ // @include e(tr, $m: edited) {
+ // @extend %igx-grid__tr--edited !optional;
+ // }
+ //
+ // @include e(tr, $m: deleted) {
+ // @extend %igx-grid__tr--deleted !optional;
+ // }
+ //
+ // @include e(tr, $m: highlighted) {
+ // @extend %igx-grid__tr--highlighted !optional;
+ // }
+ //
+ // @include e(tr, $m: edit) {
+ // @extend %igx-grid__tr--edit !optional;
+ // }
+ //
+ // @include e(tr, $m: add-animate) {
+ // @extend %igx-grid__tr--add-animate !optional;
+ // }
+ //
+ // @include e(tr, $m: inner) {
+ // @extend %igx-grid__tr--inner !optional;
+ // }
+ //
+ // @include e(tr, $m: header) {
+ // @extend %igx-grid__tr--header !optional;
+ // }
+ //
+ // @include e(tr, $m: group) {
+ // @extend %grid-row--group !optional;
+ // }
+ //
+ // @include e(tr, $m: mrl) {
+ // @extend %grid-row--mrl !optional;
+ // }
+ //
+ // @include e(tr-container) {
+ // @extend %igx-grid__tr-container !optional;
+ // }
+ //
+ // @include e(tr-container, $m: active) {
+ // @extend %igx-grid__tr-container--active !optional;
+ // }
+ //
+ // @include e(td) {
+ // @extend %grid-cell-display !optional;
+ // }
+ //
+ // @include e(td, $m: active) {
+ // @extend %grid-cell--active !optional;
+ // }
+ //
+ // @include e(td, $m: selected) {
+ // @extend %grid-cell--selected !optional;
+ // }
+ //
+ // @include e(td, $m: invalid) {
+ // @extend %grid-cell--invalid !optional;
+ // }
+ //
+ // @include e(td, $m: valid) {
+ // @extend %grid-cell--valid !optional;
+ // }
+ //
+ // @include e(td, $m: column-selected) {
+ // @extend %grid-cell--column-selected !optional;
+ // }
+ //
+ // @include e(td, $mods: (selected, column-selected)) {
+ // @extend %grid-cell--cross-selected !optional;
+ // }
+ //
+ // @include e(td, $m: bool) {
+ // @extend %igx-grid__td--centered !optional;
+ // @extend %igx-grid__td--bool !optional;
+ // }
+ //
+ // @include e(td, $m: bool-true) {
+ // @extend %igx-grid__td--bool-true !optional;
+ // }
+ //
+ // @include e(td, $m: image) {
+ // @extend %igx-grid__td--centered !optional;
+ // }
+ //
+ // @include e(tr, $mods: (selected, filtered)) {
+ // @extend %grid-row--selected--filtered !optional;
+ // }
+ //
+ // @include e(tr, $m: filtered) {
+ // @extend %igx-grid-row--filtered !optional;
+ // }
+ //
+ // @include e(tr, $m: expanded) {
+ // @extend %igx-grid__tr--expanded !optional;
+ // }
+ //
+ // @include e(tr, $m: pinned) {
+ // @extend %igx-grid__tr--pinned !optional;
+ // }
+ //
+ // @include e(tr, $m: merged) {
+ // @extend %igx-grid__tr--merged !optional;
+ // }
+ //
+ // @include e(tr, $m: merged-top) {
+ // @extend %igx-grid__tr--merged-top !optional;
+ // }
+ //
+ // @include e(tr, $m: pinned-top) {
+ // @extend %igx-grid__tr--pinned-top !optional;
+ // }
+ //
+ // @include e(tr, $m: pinned-bottom) {
+ // @extend %igx-grid__tr--pinned-bottom !optional;
+ // }
+ //
+ // @include e(tree-grouping-indicator) {
+ // @extend %igx-grid__tree-grouping-indicator !optional;
+ // }
+ //
+ // @include e(tree-loading-indicator) {
+ // @extend %igx-grid__tree-loading-indicator !optional;
+ // }
+ //
+ // @include e(td, $m: new) {
+ // @extend %igx-grid__td--new !optional;
+ // }
+ //
+ // @include e(td, $m: edited) {
+ // @extend %igx-grid__td--edited !optional;
+ // }
+ //
+ // @include e(td, $m: merged) {
+ // @extend %igx-grid__td--merged !optional;
+ // }
+ //
+ // @include e(td, $mods: (merged-selected, merged-hovered)) {
+ // @extend %igx-grid__td--merged-selected-hovered !optional;
+ // }
+ //
+ // @include e(td, $m: merged-selected) {
+ // @extend %igx-grid__td--merged-selected !optional;
+ // }
+ //
+ // @include e(td, $m: merged-hovered) {
+ // @extend %igx-grid__td--merged-hovered !optional;
+ // }
+ //
+ // @include e(td, $m: editing) {
+ // @extend %igx-grid__td--editing !optional;
+ // }
+ //
+ // @include e(td, $mods: (editing, valid)) {
+ // @extend %igx-grid__td--editing--valid !optional;
+ // }
+ //
+ // @include e(td, $mods: (editing, invalid)) {
+ // @extend %igx-grid__td--editing--invalid !optional;
+ // }
+ //
+ // @include e(tr, $m: disabled) {
+ // @extend %igx-grid__tr--disabled !optional;
+ // }
+ //
+ // @include e(td, $m: number) {
+ // @extend %grid-cell-number !optional;
+ // }
+ //
+ // @include e(td, $m: pinned) {
+ // @extend %grid-cell--pinned !optional;
+ // }
+ //
+ // @include e(td, $m: pinned-last) {
+ // @extend %grid-cell--pinned !optional;
+ // @extend %grid-cell--pinned-last !optional;
+ // }
+ //
+ // @include e(td, $m: pinned-first) {
+ // @extend %grid-cell--pinned !optional;
+ // @extend %grid-cell--pinned-first !optional;
+ // }
+ //
+ // @include e(td, $m: fw) {
+ // @extend %grid-cell--fixed-width !optional;
+ // }
+ //
+ // @include e(td, $mods: (pinned, selected)) {
+ // @extend %grid-cell--pinned-selected !optional;
+ // }
+ //
+ // @include e(td, $mods: (pinned, column-selected)) {
+ // @extend %grid-cell--pinned--column-selected !optional;
+ // }
+ //
+ // @include e(td, $m: row-pinned-first) {
+ // @extend %grid-cell--row-pinned-first !optional;
+ // }
+ //
+ // @include e(td, $m: pinned-chip) {
+ // @extend %grid-cell--pinned-chip !optional;
+ // }
+ //
+ // @include e(td-text) {
+ // @extend %grid-cell-text !optional;
+ // }
+ //
+ // @include e(cbx-padding) {
+ // @extend %cbx-padding !optional;
+ // }
+ //
+ // @include e(cbx-selection) {
+ // @extend %grid__cbx-selection !optional;
+ // }
+ //
+ // @include e(cbx-selection, $m: push) {
+ // @extend %grid__cbx-selection--push !optional;
+ // }
+ //
+ // @include e(group-row) {
+ // @extend %igx-grid__group-row !optional;
+ // }
+ //
+ // @include e(group-row, $m: active) {
+ // @extend %igx-grid__group-row--active !optional;
+ // }
+ //
+ // @include e(group-content) {
+ // @extend %igx-grid__group-content !optional;
+ // }
+ //
+ // @include e(row-indentation) {
+ // @extend %igx-grid__row-indentation !optional;
+ // }
+ //
+ // @include e(grouping-indicator) {
+ // @extend %igx-grid__grouping-indicator !optional;
+ // }
+ //
+ // @include e(scroll-on-drag-left) {
+ // @extend %grid__scroll-on-drag-left !optional;
+ // }
+ //
+ // @include e(scroll-on-drag-right) {
+ // @extend %grid__scroll-on-drag-right !optional;
+ // }
+ //
+ // @include e(scroll-on-drag-pinned) {
+ // @extend %grid__scroll-on-drag-pinned !optional;
+ // }
+ //
+ // @include e(drag-ghost-image) {
+ // @extend %grid__drag-ghost-image !optional;
+ // }
+ //
+ // @include e(drag-ghost-image-icon) {
+ // @extend %grid__drag-ghost-image-icon !optional;
+ // }
+ //
+ // @include e(drag-ghost-image-icon-group) {
+ // @extend %grid__drag-ghost-image-icon-group !optional;
+ // }
+ //
+ // @include e(drag-col-header) {
+ // @extend %igx-grid__drag-col-header !optional;
+ // }
+ //
+ // @include e(header-indentation) {
+ // @extend %igx-grid__header-indentation !optional;
+ // }
+ //
+ // @include e(header-indentation, $m: 'no-border') {
+ // @extend %igx-grid__header-indentation--no-border !optional;
+ // }
+ //
+ // @include e(group-expand-btn) {
+ // @extend %igx-grid__group-expand-btn !optional;
+ // }
+ //
+ // @include e(group-expand-btn, $m: 'push') {
+ // @extend %igx-grid__group-expand-btn--push !optional;
+ // }
+ //
+ // @include e(outlet) {
+ // @extend %igx-grid__outlet !optional;
+ // }
+ //
+ // @include e(loading-outlet) {
+ // @extend %igx-grid__loading-outlet !optional;
+ // }
+ //
+ // @include e(row-editing-outlet) {
+ // @extend %igx-grid__row-editing-outlet !optional;
+ // }
+ //
+ // @include e(addrow-snackbar) {
+ // @extend %igx-grid__addrow-snackbar !optional;
+ // }
+ //
+ // @include e(filtering-cell) {
+ // @extend %igx-grid__filtering-cell !optional;
+ // }
+ //
+ // @include e(filtering-cell, $m: 'selected') {
+ // @extend %igx-grid__filtering-cell !optional;
+ // @extend %igx-grid__filtering-cell--selected !optional;
+ // }
+ //
+ // @include e(filtering-cell-indicator) {
+ // @extend %igx-grid__filtering-cell-indicator !optional;
+ // }
+ //
+ // @include e(filtering-cell-indicator, $m: 'hidden') {
+ // @extend %igx-grid__filtering-cell-indicator !optional;
+ // @extend %igx-grid__filtering-cell-indicator--hidden !optional;
+ // }
+ //
+ // @include e(filtering-dropdown-items) {
+ // @extend %igx-grid__filtering-dropdown-items !optional;
+ // }
+ //
+ // @include e(filtering-dropdown-text) {
+ // @extend %igx-grid__filtering-dropdown-text !optional;
+ // }
+ //
+ // @include e(filtering-row) {
+ // @extend %igx-grid__filtering-row !optional;
+ // }
+ //
+ // @include e(filtering-row-editing-buttons) {
+ // @extend %igx-grid__filtering-row-editing-buttons !optional;
+ // }
+ //
+ // @include e(filtering-row-editing-buttons, $m: small) {
+ // @extend %igx-grid__filtering-row-editing-buttons--small !optional;
+ // }
+ //
+ // @include e(filtering-row-main) {
+ // @extend %igx-grid__filtering-row-main !optional;
+ // }
+ //
+ // @include e(filtering-row-scroll-start) {
+ // @extend %igx-grid__filtering-scroll-start !optional;
+ // }
+ //
+ // @include e(filtering-row-scroll-end) {
+ // @extend %igx-grid__filtering-scroll-end !optional;
+ // }
+ //
+ // @include e(hierarchical-indent) {
+ // @extend %igx-grid__hierarchical-indent !optional;
+ // }
+ //
+ // @include e(hierarchical-expander) {
+ // @extend %igx-grid__hierarchical-expander !optional;
+ // }
+ //
+ // @include e(hierarchical-expander, $m: empty) {
+ // @extend %igx-grid__hierarchical-expander !optional;
+ // @extend %igx-grid__hierarchical-expander--empty !optional;
+ // }
+ //
+ // @include e(hierarchical-expander, $m: header) {
+ // @extend %igx-grid__hierarchical-expander--header !optional;
+ // }
+ //
+ // @include e(hierarchical-expander, $m: push) {
+ // @extend %igx-grid__hierarchical-expander--push !optional;
+ // }
+ //
+ // @include e(hierarchical-indent, $m: scroll) {
+ // @extend %igx-grid__hierarchical-indent--scroll !optional;
+ // }
+ //
+ // @include e(mrl-block) {
+ // @extend %grid-mrl-block !optional;
+ // }
+ //
+ // @for $i from 1 through 10 {
+ // @include e(row-indentation, $m: level-#{$i}) {
+ // @extend %igx-grid__row-indentation--level-#{$i} !optional;
+ // }
+ //
+ // @include e(group-row, $m: padding-level-#{$i}) {
+ // @extend %igx-grid__group-row--padding-level-#{$i} !optional;
+ // }
+ // }
+ //
+ // // Pivot start
+ // @include e(pivot, $m: 'super-compact') {
+ // @extend %igx-grid__pivot--super-compact !optional
+ // }
+ //
+ // @include e(tr-pivot) {
+ // @extend %igx-grid__tr-pivot !optional
+ // }
+ //
+ // @include e(pivot-filter-toggle) {
+ // @extend %igx-grid__pivot-filter-toggle !optional
+ // }
+ //
+ // @include e(pivot-empty-chip-area) {
+ // @extend %igx-grid__pivot-empty-chip-area !optional
+ // }
+ //
+ //
+ //
+ // @include e(tr-pivot, $m: 'row-area') {
+ // @extend %igx-grid__tr-pivot--row-area !optional
+ // }
+ //
+ // @include e(tr-pivot, $m: 'filter-container') {
+ // @extend %igx-grid__tr-pivot--filter-container !optional
+ // }
+ //
+ // @include e(tr-pivot, $m: 'chip_drop_indicator') {
+ // @extend %igx-grid__tr-pivot--chip_drop_indicator !optional
+ // }
+ //
+ // @include e(tr-pivot, $m: 'drop-row-area') {
+ // @extend %igx-grid__tr-pivot--drop-row-area !optional
+ // }
+ //
+ // @include e(tr-pivot, $m: 'filter') {
+ // @extend %igx-grid__tr-pivot--filter !optional
+ // }
+ //
+ // @include e(tr-pivot-group) {
+ // @extend %igx-grid__tr-pivot-group !optional
+ // }
+ //
+ // @include e(tr-header-row) {
+ // @extend %igx-grid__tr-header-row !optional;
+ // }
+ //
+ // @include e(tr-pivot, $m: 'columnDimensionLeaf') {
+ // @extend %igx-grid__tr-pivot--columnDimensionLeaf !optional
+ // }
+ //
+ // @include e(tr-pivot, $m: 'columnMultiRowSpan') {
+ // @extend %igx-grid__tr-pivot--columnMultiRowSpan !optional
+ // }
+ //
+ // @include e(tbody-pivot-mrl-dimension) {
+ // @extend %igx-grid__tbody-pivot-mrl-dimension !optional
+ // }
+ //
+ // @include e(tr-pivot-toggle-icons) {
+ // @extend %igx-grid__tr-pivot-toggle-icons !optional;
+ // }
+ // // pivot end
+ //
+ // @include excel-filtering-partial();
+ // @include advanced-filtering-partial();
+ // @include group-by-area();
+ // @include header-row();
+ //}
+ //
+ //@include b(igx-drop-area) {
+ // @extend %igx-drop-area !optional;
+ //
+ // @include m(hover) {
+ // @extend %igx-drop-area--hover !optional;
+ // }
+ //
+ // @include e(icon) {
+ // @extend %igx-drop-area__icon !optional;
+ // }
+ //
+ // @include e(text) {
+ // @extend %igx-drop-area__text !optional;
+ // }
+ //}
+ //
+ //@include b(igx-group-label) {
+ // @extend %igx-group-label !optional;
+ //
+ // @include e(icon) {
+ // @extend %igx-group-label__icon !optional;
+ // }
+ //
+ // @include e(column-name) {
+ // @extend %igx-group-label__column-name !optional;
+ // }
+ //
+ // @include e(text) {
+ // @extend %igx-group-label__text !optional;
+ // }
+ //
+ // @include e(count-badge) {
+ // @extend %igx-group-label__count-badge !optional;
+ // }
+ //}
+ //
+ //@include b(igx-grid-summary) {
+ // @include m(active) {
+ // @extend %igx-grid-summary--active !optional;
+ // }
+ //}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/grid/_grid-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/grid/_grid-theme.scss
index 11ee6f623e0..a58e864edc7 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/grid/_grid-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/grid/_grid-theme.scss
@@ -4,3061 +4,3050 @@
@use './excel-filtering-theme' as *;
@use 'igniteui-theming/sass/animations' as *;
-@mixin _filtering-scroll-mask($theme, $dir) {
- display: block;
- position: absolute;
- width: rem(10px);
- content: '';
- inset-block: rem(-2px);
- background: linear-gradient(to #{$dir}, var-get($theme, 'filtering-row-background'), transparent);
-}
+//@mixin _filtering-scroll-mask($theme, $dir) {
+// display: block;
+// position: absolute;
+// width: rem(10px);
+// content: '';
+// inset-block: rem(-2px);
+// background: linear-gradient(to #{$dir}, var-get($theme, 'filtering-row-background'), transparent);
+//}
/// @deprecated Use the `css-vars` mixin instead.
/// @see {mixin} css-vars
/// @param {Map} $theme - The theme used to style the component.
/// @requires {mixin} excel-filtering
@mixin grid($theme) {
- @include css-vars($theme);
- @include scale-in-ver-center();
-
- $variant: map.get($theme, '_meta', 'theme');
- $theme-variant: map.get($theme, '_meta', 'variant');
- $bootstrap-theme: $variant == 'bootstrap';
- $not-bootstrap-theme: $variant != 'bootstrap';
-
- $cbx-size: map.get((
- 'material': rem(20px),
- 'fluent': rem(20px),
- 'bootstrap': rem(14px),
- 'indigo': rem(20px),
- ), $variant);
- $cbx-bs-size: rem(14px);
-
- $grid-shadow: var-get($theme, 'grid-elevation');
-
- $grid-caption-fs: rem(20px);
- $grid-caption-lh: rem(32px);
- $grid-caption-padding: rem(16px) rem(24px);
-
- $grid-head-fs: rem(12px);
- $grid-head-fw: 600;
- $transition: all 120ms $ease-in-out-cubic;
-
- // Cell
- $grid-cell-align-num: end;
- $grid-cell-fs: rem(13px);
- $grid-cell-lh: rem(16px);
- $grid-cell-pinned-style: rem(1px) solid;
- $grid-cell-pinned-border-color: color($color: 'gray', $variant: 300);
-
- $grid-header-border: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
-
- $cell-pin: (
- style: var-get($theme, 'pinned-border-width') var-get($theme, 'pinned-border-style'),
- color: var-get($theme, 'pinned-border-color')
- );
-
- $padding-comfortable: rem(24px);
- $padding-cosy: rem(16px);
- $padding-compact: rem(12px);
-
- $grid-header-padding-inline: (
- comfortable: $padding-comfortable,
- cosy: $padding-cosy,
- compact: $padding-compact
- );
-
- $pivot-row-aria-padding: (
- comfortable: $padding-comfortable,
- cosy: $padding-cosy,
- compact: $padding-compact
- );
-
- $grid-cbx-padding: (
- comfortable: $padding-comfortable,
- cosy: $padding-cosy,
- compact: $padding-compact
- );
-
- $cbx-padding: map.get($grid-cbx-padding, 'comfortable');
- $cbx-padding-cosy: map.get($grid-cbx-padding, 'cosy');
- $cbx-padding-compact: map.get($grid-cbx-padding, 'compact');
-
- $grid-header-height: (
- comfortable: if($variant == 'indigo', rem(48px), rem(50px)),
- cosy: if($variant == 'indigo', rem(40px), rem(40px)),
- compact: if($variant == 'indigo', rem(32px), rem(32px))
- );
-
- $drop-area-height: (
- comfortable: rem(32px),
- cosy: rem(24px),
- compact: rem(24px)
- );
-
- $cell-padding-comfortable: rem(24px);
- $cell-padding-cosy: rem(16px);
- $cell-padding-compact: rem(12px);
-
- $grid-cell-padding-inline: (
- comfortable: $cell-padding-comfortable,
- cosy: $cell-padding-cosy,
- compact: $cell-padding-compact
- );
-
- $hierarchical-grid-indent: (
- comfortable: rem(24px),
- cosy: rem(16px),
- compact: rem(12px)
- );
-
- $hierarchical-action-icon: if($variant == 'indigo', rem(16px), rem(24px));
-
- $hierarchical-indent: (
- comfortable: calc(2 * #{map.get($hierarchical-grid-indent, 'comfortable')} + #{$hierarchical-action-icon}),
- cosy: calc(2 * #{map.get($hierarchical-grid-indent, 'cosy')} + #{$hierarchical-action-icon}),
- compact: calc(2 * #{map.get($hierarchical-grid-indent, 'compact')} + #{$hierarchical-action-icon})
- );
-
- $hierarchical-indent-scroll: (
- comfortable: calc(#{map.get($hierarchical-grid-indent, 'comfortable')} + 18px),
- cosy: calc(#{map.get($hierarchical-grid-indent, 'cosy')} + 18px),
- compact: calc(#{map.get($hierarchical-grid-indent, 'compact')} + 18px)
- );
-
- $grouparea-padding-inline: (
- comfortable: rem(24px),
- cosy: rem(16px),
- compact: rem(12px)
- );
-
- $grouparea-min-height: (
- comfortable: if($variant == 'indigo', rem(56px), rem(57px)),
- cosy: if($variant == 'indigo', rem(48px), rem(49px)),
- compact: if($variant == 'indigo', rem(40px), rem(41px))
- );
-
- $grid-grouping-indicator-padding: (
- comfortable: rem(24px),
- cosy: rem(16px),
- compact: rem(12px)
- );
-
- $indicator-icon-width: map.get((
- 'material': rem(24px),
- 'fluent': rem(24px),
- 'bootstrap': rem(24px),
- 'indigo': rem(16px),
- ), $variant);
-
- $drag-icon-size: rem(24px);
-
- $grid-header-weight: map.get((
- 'material': 600,
- 'fluent': 800,
- 'bootstrap': 700,
- 'indigo': 600,
- ), $variant);
-
- $editing-outline-width: rem(2px);
-
- $filtering-row-height: #{sizable(
- map.get($grid-header-height, 'compact'),
- map.get($grid-header-height, 'cosy'),
- map.get($grid-header-height, 'comfortable')
- )};
-
- %cell-input-overrides {
- // Have a more stable visual editing experience
- > igx-input-group,
- igx-combo,
- igx-simple-combo,
- igx-select,
- igx-date-picker,
- igx-time-picker {
- position: relative;
- height: auto;
- width: 100% !important;
- overflow: hidden;
- }
-
- igx-input-group {
- background: var-get($theme, 'cell-editing-background');
-
- .igx-input-group__input {
- height: 100%;
- color: var-get($theme, 'cell-editing-foreground');
- }
-
- .igx-input-group__input:focus {
- color: var-get($theme, 'cell-editing-focus-foreground');
- }
- }
-
- igx-select,
- igx-combo,
- igx-simple-combo,
- igx-time-picker,
- igx-date-picker {
- igx-input-group {
- height: 100%;
- }
- }
-
- .igx-input-group__bundle {
- background: transparent !important;
- height: 100% !important;
- min-height: 100% !important;
- border: none !important;
-
- .igx-input-group__filler,
- .igx-input-group__notch {
- border: none !important;
- }
-
- &::before {
- content: none !important;
- }
-
- &::after {
- display: none;
- }
- }
-
- .igx-input-group--indigo .igx-input-group__bundle:hover,
- .igx-input-group--indigo .igx-input-group__bundle:focus {
- background: transparent;
- }
-
- .igx-input-group__bundle-main,
- .igx-input-group__bundle-start,
- .igx-input-group__bundle-end {
- height: auto;
- border: none !important;
- border-radius: 0 !important;
- }
-
- .igx-input-group__bundle-main {
- padding: 0;
- }
-
- .igx-input-group__line {
- display: none;
- }
-
- igx-prefix,
- igx-suffix {
- background: transparent !important;
- border-radius: 0 !important;
- padding-top: 0 !important;
- padding-bottom: 0 !important;
- border: none !important;
- padding-inline: sizable(rem(4px), rem(6px), rem(8px)) !important;
- }
-
- .igx-input-group--indigo {
- padding-inline: sizable(rem(6px), rem(8px), rem(12px)) !important;
-
- igx-prefix {
- padding-inline-start: 0 !important;
- }
-
- igx-suffix {
- padding-inline-end: 0 !important;
- }
- }
-
- .igx-input-group__input {
- padding-inline: sizable(rem(4px), rem(6px), rem(8px)) !important;
- margin: 0 auto;
- max-width: 100%;
- }
-
- igx-date-range-picker {
- height: 100%;
- }
-
- igx-time-picker [igxLabel] {
- display: none;
- }
-
- %form-group-input {
- // ignore global typography
- font-size: $grid-cell-fs !important;
- line-height: $grid-cell-lh !important;
- }
-
- .igx-input-group__input,
- .igx-input-group__file-input,
- .igx-input-group__textarea {
- box-shadow: none !important;
- border: none !important;
- }
-
- .igx-input-group--disabled,
- .igx-input-group--disabled igx-prefix,
- .igx-input-group--disabled igx-suffix {
- color: var-get($theme, 'cell-disabled-color');
- }
- }
-
- @if $variant != 'indigo' {
- %filtering-row-input-overrides {
- igx-input-group {
- width: 100%;
- max-width: rem(240px);
- min-width: rem(140px);
-
- @if $variant != 'fluent' {
- border: rem(1px) solid color($color: 'gray', $variant: 300);
- }
-
- --size: calc(#{$filtering-row-height} - #{rem(8px)});
-
- .igx-input-group__bundle,
- .igx-input-group__bundle-start,
- .igx-input-group__bundle-end,
- igx-prefix,
- igx-suffix {
- background: transparent;
- border-radius: 0;
-
- /* stylelint-disable-next-line */
- &:hover {
- background: transparent;
- }
- }
-
- igx-prefix,
- igx-suffix {
- height: 100% !important;
- padding: 0 sizable(rem(4px), rem(6px), rem(8px));
- }
-
- .igx-input-group__input {
- font-size: sizable(rem(12px), rem(14px), rem(16px));
- padding-inline-start: 0;
- padding-block: 0;
- height: 100%;
- }
-
- .igx-input-group__bundle,
- .igx-input-group__bundle-start,
- .igx-input-group__bundle-end,
- .igx-input-group__input {
- border: 0;
-
- /* stylelint-disable-next-line */
- &:hover {
- border: 0;
- box-shadow: none;
- }
- }
-
- .igx-input-group__bundle::after {
- display: none;
- }
-
- .igx-input-group__bundle-main {
- padding-inline-start: 0;
- }
-
- color: var-get($theme, 'filtering-row-text-color');
-
- &:hover{
- color: var-get($theme, 'filtering-row-text-color');
- border-color: color($color: 'primary', $variant: 500);
- }
- }
-
- .igx-input-group--focused {
- @if $variant != 'fluent' {
- border-color: color($color: 'primary', $variant: 500);
- border-width: rem(1px);
- }
-
- color: var-get($theme, 'filtering-row-text-color');
-
- .igx-input-group__bundle,
- .igx-input-group__bundle-start,
- .igx-input-group__bundle-end,
- .igx-input-group__input {
- border: 0 !important;
-
- @if $variant != 'fluent' {
- box-shadow: none !important;
- }
- }
-
- .igx-input-group__bundle-main,
- .igx-input-group__bundle-start,
- .igx-input-group__bundle-end {
- margin: 0 !important;
- }
-
- .igx-input-group__bundle,
- .igx-input-group__bundle-start,
- .igx-input-group__bundle-end,
- igx-prefix,
- igx-suffix {
- background: transparent !important;
- border-radius: 0;
- }
- }
-
- .igx-input-group__line {
- display: none;
- }
-
- igx-prefix:focus {
- color: color(map.get($theme, 'palette'), 'secondary');
- }
-
- igx-suffix {
- igx-icon {
- outline-style: none;
-
- &:focus {
- color: color($color: 'secondary');
- }
-
- + igx-icon {
- margin-inline-start: rem(4px);
- }
- }
- }
- }
- }
-
- igx-grid,
- igx-hierarchical-grid,
- igx-pivot-grid,
- igx-tree-grid {
- @if $variant == 'material' {
- @if $theme-variant == 'light' {
- --ig-chip-disabled-text-color: #{color($color: 'gray', $variant: 500)};
- --ig-chip-disabled-background: #{color($color: 'gray', $variant: 300)};
- --ig-chip-disabled-border-color: #{color($color: 'gray', $variant: 300)};
- }
- @if $theme-variant == 'dark' {
- --ig-chip-disabled-text-color: #{color($color: 'gray', $variant: 300)};
- --ig-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
- --ig-chip-disabled-border-color: #{color($color: 'gray', $variant: 200)};
- }
- }
-
- @if $variant == 'fluent' {
- @if $theme-variant == 'dark' {
- --ig-chip-disabled-text-color: #{color($color: 'gray', $variant: 400)};
- --ig-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
- --ig-chip-disabled-border-color: #{color($color: 'gray', $variant: 200)};
- }
- }
-
- @if $variant == 'bootstrap' {
- @if $theme-variant == 'dark' {
- --ig-chip-disabled-text-color: #{color($color: 'gray', $variant: 400)};
- --ig-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
- --ig-chip-disabled-border-color: #{color($color: 'gray', $variant: 200)};
- }
- }
-
- @if $variant == 'indigo' {
- @if $theme-variant == 'light' {
- --ig-chip-disabled-text-color: #{color($color: 'gray', $variant: 500)};
- --ig-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
- --ig-chip-disabled-border-color: #{color($color: 'gray', $variant: 300)};
- }
- @if $theme-variant == 'dark' {
- --ig-chip-disabled-text-color: #{color($color: 'gray', $variant: 300)};
- --ig-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
- --ig-chip-disabled-border-color: #{color($color: 'gray', $variant: 200)};
- }
- }
- }
-
- %disable-focus-styles {
- outline: 0;
- }
-
- %grid-host {
- @include sizable();
-
- --component-size: var(--ig-size, var(--ig-size-large));
- --grid-size: var(--component-size);
- }
-
- %grid-display {
- --header-size: #{sizable(
- map.get($grid-header-height, 'compact'),
- map.get($grid-header-height, 'cosy'),
- map.get($grid-header-height, 'comfortable')
- )};
-
- --grouparea-size: #{sizable(
- map.get($grouparea-min-height, 'compact'),
- map.get($grouparea-min-height, 'cosy'),
- map.get($grouparea-min-height, 'comfortable')
- )};
-
- --ig-tree-indent-size: #{sizable(rem(12px), rem(16px), rem(24px))};
-
- position: relative;
- display: grid;
- grid-template-rows: auto auto auto 1fr auto auto;
- grid-template-columns: 100%;
- overflow: hidden;
- contain: inline-size;
- box-shadow: $grid-shadow;
-
- @if $variant == 'fluent' {
- box-shadow: 0 0 0 rem(1px) var-get($theme, 'grid-border-color');
- }
-
- outline-style: none;
- z-index: 1;
-
- %cbx-display {
- min-width: $cbx-size;
-
- @if $variant == 'material' {
- %cbx-composite-wrapper {
- padding: 0;
- }
-
- %cbx-label-pos--after {
- margin-inline-start: rem(12px);
- }
-
- %cbx-label-pos--before {
- margin-inline-end: rem(12px);
- }
-
- %cbx-label-pos--before,
- %cbx-label-pos--after {
- &:empty {
- margin: 0;
- }
- }
- }
- }
- }
-
- %grid-caption {
- display: flex;
- align-items: center;
- font-size: $grid-caption-fs;
- line-height: $grid-caption-lh;
- padding: $grid-caption-padding;
- grid-row: 1;
- }
-
- %grid-thead,
- %grid-tfoot {
- position: relative;
- display: flex;
- background: var-get($theme, 'header-background');
- color: var-get($theme, 'header-text-color');
- overflow: hidden;
- outline-style: none;
-
- %grid-row {
- position: relative;
- background: inherit;
- color: inherit;
- z-index: 2;
-
- &:hover {
- background: inherit;
- color: inherit;
- }
- }
-
- > [aria-activedescendant] {
- outline-style: none;
- }
- }
-
- %grid-thead {
- border-bottom: $grid-header-border;
-
- @if $bootstrap-theme {
- border-bottom-width: rem(2px);
- }
-
- z-index: 2;
-
- %grid__cbx-selection--push {
- align-items: flex-start;
- padding-block-start: pad-block(
- math.div(map.get($grid-header-height, 'compact') - rem(20px), 2),
- math.div(map.get($grid-header-height, 'cosy') - rem(20px), 2),
- math.div(map.get($grid-header-height, 'comfortable') - rem(20px), 2)
- );
- }
-
- %grid-row {
- border-bottom: none;
- }
- }
-
- %grid-thead-container {
- grid-row: 3;
- display: flex;
- overflow: hidden;
-
- %igx-grid__header-indentation {
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 3)};
- }
-
- @if $variant == 'indigo' {
- %igx-grid__group-expand-btn {
- color: var-get($theme, 'expand-icon-color');
- }
-
- %igx-grid__group-expand-btn:hover{
- color: var-get($theme, 'expand-icon-hover-color');
- }
- }
-
- }
-
- %igx-grid__drag-indicator {
- cursor: default;
- }
-
- %grid-row--mrl {
- %igx-grid__hierarchical-expander--header,
- %igx-grid__hierarchical-expander,
- %igx-grid__header-indentation,
- %igx-grid__row-indentation,
- %grid__cbx-selection {
- border-bottom: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
- }
- }
-
- &:focus-visible {
- outline-color: transparent;
- }
- }
-
- %grid-thead-title {
- flex-basis: auto !important;
- align-items: center !important;
- border-bottom: $grid-header-border;
- height: var(--header-size);
-
- @if $variant != 'indigo' {
- padding-inline: pad-inline(
- map.get($grid-cell-padding-inline, 'compact'),
- map.get($grid-cell-padding-inline, 'cosy'),
- map.get($grid-cell-padding-inline, 'comfortable')
- );
- } @else {
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
-
- igx-icon {
- opacity: if($theme-variant == 'light', .75, .85);
-
- &:hover {
- opacity: 1;
- cursor: pointer;
- }
- }
- }
-
- padding-block: 0;
- }
-
- %grid-thead-title--pinned {
- border-inline-end: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
- }
-
- %grid-thead-group {
- display: flex;
- flex-flow: row nowrap;
- }
-
- /* We set those with position relative
- so that the drop indicators be scoped
- to their respective group. The item
- being the topmost element, while the
- subgroup encapsulates children of each
- thead item and group.
- */
- %grid-thead-item {
- display: flex;
- flex-flow: column nowrap;
-
- %grid-thead-group {
- flex: 1 1 auto;
- }
-
- %grid-cell-header {
- flex: 1 1 auto;
- }
-
- %grid-thead-title {
- flex: 0 0 auto;
- }
- }
-
- %grid-thead-item,
- %grid-thead-subgroup {
- position: relative;
- }
-
- %grid-tfoot {
- grid-row: 5;
- border-top: $grid-header-border;
- z-index: 10001;
- }
-
- %grid-footer {
- grid-row: 7;
- }
-
- %grid-display-container-thead {
- width: 100%;
- overflow: visible;
- }
-
- %grid-display-container-tr {
- width: 100%;
- overflow: visible;
- flex: 1;
- // needed to override the min-width of the column headers
- min-width: 0;
- }
-
- %grid-mrl-block {
- display: grid;
- background: inherit;
- position: relative;
-
- %grid-thead-item {
- display: flex;
- }
-
- %grid-cell-header {
- align-items: center;
- flex-grow: 1;
- border-bottom: $grid-header-border;
- }
-
- %grid-cell-display {
- border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
- border-bottom: rem(1px) solid var-get($theme, 'header-border-color');
- }
- }
-
- %grid-row--mrl {
- &%grid-row {
- border-bottom-color: transparent;
-
- @if $variant == 'indigo' {
- %grid-cell-display {
- border-inline-end: rem(1px) solid var-get($theme, 'row-border-color');
- border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
- }
- }
- }
-
- %grid__cbx-selection,
- %igx-grid__hierarchical-expander,
- %igx-grid__row-indentation,
- %igx-grid__drag-indicator {
- border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
- }
- }
-
- %grid-tbody {
- position: relative;
- background: var-get($theme, 'content-background');
- color: var-get($theme, 'content-text-color');
- overflow: hidden;
- z-index: 1;
- outline-style: none;
- }
-
- %grid-tbody-container {
- position: relative;
- display: flex;
- grid-row: 4;
- overflow: hidden;
- }
-
- %grid-tbody-message {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100%;
- color: var-get($theme, 'content-text-color');
- flex-direction: column;
- padding: rem(24px);
- }
-
- %igx-grid__loading {
- display: flex;
- align-items: center;
- justify-content: center;
- height: 100%;
- min-height: rem(100px);
-
- > %circular-display {
- width: rem(50);
- height: rem(50);
- }
- }
-
- %grid-scroll {
- grid-row: 6;
- display: flex;
- flex-flow: row nowrap;
- width: 100%;
- background: var-get($theme, 'header-background');
- z-index: 10001;
- }
-
- %grid-thead-thumb {
- background: var-get($theme, 'header-background');
- border-inline-start: rem(1px) solid var-get($theme, 'header-border-color');
- }
-
- %grid-tfoot-thumb {
- position: absolute;
- top: 0;
- inset-inline-end: 0;
- background: var-get($theme, 'header-background');
- border-inline-start: rem(1px) solid var-get($theme, 'header-border-color');
- }
-
- %grid-tbody-scrollbar {
- background: var-get($theme, 'content-background');
- border-inline-start: rem(1px) solid var-get($theme, 'row-border-color');
- position: relative;
- }
-
- %grid-tbody-scrollbar-start {
- background: var-get($theme, 'header-background');
- }
-
- %grid-tbody-scrollbar-main {
- position: relative;
- }
-
- %grid-tbody-scrollbar-end {
- background: var-get($theme, 'header-background');
- }
-
- %grid-scroll-start {
- background: var-get($theme, 'header-background');
- }
-
- %grid-scroll-main {
- igx-display-container {
- height: 0;
- }
-
- igx-horizontal-virtual-helper {
- height: 100%;
- }
- }
-
- %grid-row {
- display: flex;
- background: var-get($theme, 'content-background');
- border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
- outline-style: none;
- position: relative;
- background-clip: content-box !important;
-
- &:hover {
- background: var-get($theme, 'row-hover-background');
- color: var-get($theme, 'row-hover-text-color');
-
- %grid-cell--column-selected {
- color: var-get($theme, 'row-selected-hover-text-color');
- background: var-get($theme, 'row-selected-hover-background');
- }
-
- %grid-cell--cross-selected {
- color: var-get($theme, 'cell-selected-within-text-color');
- background: var-get($theme, 'cell-selected-within-background');
- }
- }
-
- &%igx-grid__tr--ghost {
- background: var-get($theme, 'row-ghost-background');
- color: var-get($theme, 'row-drag-color');
- z-index: 10002;
-
- @include css-vars((
- name: 'igx-grid-row',
- row-ghost-background: map.get($theme, 'row-ghost-background'),
- row-drag-color: map.get($theme, 'row-drag-color')
- ));
- }
- }
-
- %igx-grid__drag-indicator {
- display: flex;
- align-items: center;
- justify-content: center;
-
- @if $variant != 'indigo' {
- padding-inline: pad-inline(
- map.get($grid-cell-padding-inline, 'compact'),
- map.get($grid-cell-padding-inline, 'cosy'),
- map.get($grid-cell-padding-inline, 'comfortable')
- );
- min-height: sizable(
- rem(32px),
- rem(40px),
- rem(50px)
- );
- } @else {
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
- min-height: sizable(
- rem(32px),
- rem(40px),
- rem(48px)
- );
-
- igx-icon {
- opacity: if($theme-variant == 'light', .75, .85);
- }
-
- &:hover {
- igx-icon {
- opacity: 1;
- }
- }
- }
-
- padding-block: 0;
- flex: 0 0 auto;
- background: inherit;
- z-index: 4;
- cursor: move;
- border-inline-end: rem(1px) solid transparent;
- background-clip: border-box;
-
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 3)};
- }
- }
-
- %igx-grid__drag-indicator--header {
- border-inline-end: $grid-header-border;
- }
-
- %igx-grid__drag-indicator--off {
- color: var-get($theme, 'row-drag-color');
- }
-
- %igx-grid__tr--drag {
- opacity: .5;
- }
-
- %grid-row--odd {
- background: var-get($theme, 'row-odd-background');
- color: var-get($theme, 'row-odd-text-color');
- }
-
- %grid-row--even {
- background: var-get($theme, 'row-even-background');
- color: var-get($theme, 'row-even-text-color');
- }
-
- %igx-grid__tr--expanded {
- border-bottom: none;
- }
-
- %igx-grid__tr--pinned {
- position: relative;
- background: inherit;
- z-index: 10000;
-
- %igx-grid__hierarchical-expander--empty {
- border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
- }
- }
-
- %igx-grid__tr--pinned-top {
- border-bottom: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
- }
-
- %igx-grid__tr--pinned-bottom {
- border-top: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
- position: absolute;
- bottom: 0;
- }
-
- %igx-grid__td--centered {
- justify-content: center;
- }
-
- %igx-grid__td--bool {
- display: flex;
- flex-grow: 1;
-
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 1)};
- }
-
- %igx-icon--error {
- @if $variant == 'indigo' or $theme-variant == 'dark' {
- color: color($color: 'gray', $variant: 500);
- } @else {
- color: color($color: 'gray', $variant: 600);
- }
- }
- }
-
- %igx-grid__td--bool-true {
- %igx-icon--success {
- color: color($color: 'gray', $variant: 700);
- }
- }
-
- %igx-grid__tr--edit {
- border-bottom: rem(1px) solid var-get($theme, 'edit-mode-color');
- position: relative;
-
- &::after {
- content: '';
- position: absolute;
- height: rem(1);
- width: 100%;
- top: rem(-1);
- inset-inline-start: 0;
- background: var-get($theme, 'edit-mode-color');
- }
-
- &%grid-row {
- border-bottom: rem(1px) solid var-get($theme, 'edit-mode-color');
- }
-
- %igx-grid__td--editing {
- border: none;
-
- %form-group-bundle--focus {
- caret-color: var-get($theme, 'edit-mode-color') !important;
- }
-
- %form-group-border {
- background: var-get($theme, 'edit-mode-color') !important;
- }
- }
-
- [aria-readonly='true'] {
- color: var-get($theme, 'cell-disabled-color');
-
- igx-icon {
- color: var-get($theme, 'cell-disabled-color');
- }
- }
- }
-
- %igx-grid__tr--inner {
- display: flex;
- background: inherit;
- }
-
- %igx-grid__tr--header {
- display: flex;
- align-items: center;
-
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 3)};
- }
- }
-
- %igx-grid__tr--add-animate {
- @include animation(scale-in-ver-center .2s $ease-in-out-quad);
- }
-
- %grid-row--edit-mrl {
- &:first-of-type::after {
- top: 0;
- z-index: 5;
- }
- }
-
- %igx-grid__tr--edited {
- &::before {
- content: '';
- position: absolute;
- width: if($variant == 'indigo', rem(4px), rem(2px));
- height: 100%;
- z-index: 10000;
- background: var-get($theme, 'edited-row-indicator');
- }
- }
-
- %grid-row--group {
- position: relative;
- background: var-get($theme, 'header-background') !important;
- }
-
- %igx-grid-row--filtered {
- %grid-cell-text {
- color: var-get($theme, 'tree-filtered-text-color');
- }
-
- %igx-grid__tree-grouping-indicator {
- color: var-get($theme, 'tree-filtered-text-color');
-
- &:hover {
- color: var-get($theme, 'tree-filtered-text-color');
- }
- }
-
- %grid-cell--selected {
- %grid-cell-text {
- color: var-get($theme, 'tree-selected-filtered-cell-text-color');
- }
-
- %igx-grid__tree-grouping-indicator {
- color: var-get($theme, 'tree-selected-filtered-cell-text-color');
-
- &:hover {
- color: var-get($theme, 'tree-selected-filtered-cell-text-color');
- }
- }
- }
- }
-
- %grid-row--selected--filtered {
- %grid-cell-text {
- color: var-get($theme, 'tree-selected-filtered-row-text-color');
- }
-
- %igx-grid__tree-grouping-indicator {
- color: var-get($theme, 'tree-selected-filtered-row-text-color');
-
- &:hover {
- color: var-get($theme, 'tree-selected-filtered-row-text-color');
- }
- }
-
- %grid-cell--selected {
- %grid-cell-text {
- color: var-get($theme, 'tree-selected-filtered-cell-text-color');
- }
-
- %igx-grid__tree-grouping-indicator {
- color: var-get($theme, 'tree-selected-filtered-cell-text-color');
-
- &:hover {
- color: var-get($theme, 'tree-selected-filtered-cell-text-color');
- }
- }
- }
- }
-
- %igx-grid__tree-grouping-indicator {
- display: flex;
- align-items: center;
- justify-content: center;
- user-select: none;
- outline-style: none;
- margin-inline-end: if($variant == 'indigo', rem(4px), rem(8));
- cursor: pointer;
-
- color: var-get($theme, 'expand-icon-color');
-
- &:hover {
- color: var-get($theme, 'expand-icon-hover-color')
- }
-
- [dir='rtl'] & {
- transform: scaleX(-1);
- }
-
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 3)};;
- }
- }
-
- %igx-grid__tree-loading-indicator {
- width: rem(24px, 16px);
- height: rem(24px, 16px);
- margin-inline-end: rem(8px, 16px);
-
- %circular-outer {
- stroke: var-get($theme, 'expand-icon-color');
- }
-
- > %circular-display {
- width: rem(24);
- height: rem(24);
- }
- }
-
- %grid-cell-display {
- position: relative;
- display: flex;
- flex: 1 1 0%;
- align-items: center;
- outline-style: none;
-
- @extend %cell-input-overrides;
-
- igx-input-group {
- background: transparent;
- }
-
- @if $variant != 'indigo' {
- padding-inline: pad-inline(
- map.get($grid-cell-padding-inline, 'compact'),
- map.get($grid-cell-padding-inline, 'cosy'),
- map.get($grid-cell-padding-inline, 'comfortable')
- );
- } @else {
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
- }
-
- padding-block: 0;
- color: inherit;
- text-align: start;
- background-clip: border-box !important;
-
- @if $variant != 'indigo' {
- font-size: $grid-cell-fs;
- line-height: $grid-cell-lh;
- min-height: sizable(
- rem(32px),
- rem(40px),
- rem(50px)
- );
- } @else {
- @include type-style('detail-1', false);
-
- min-height: sizable(
- rem(32px),
- rem(40px),
- rem(48px)
- );
- }
- }
-
- // This is no longer being extended and is left
- // here for reference purposes only. It seems setting
- // overflow: hidden on the cell prevents drag and selection
- // of the cell.
- // See github issue #9821
- %igx-grid__td--tree-cell {
- overflow: hidden;
- }
-
- %grid-cell-text {
- @include ellipsis();
-
- pointer-events: none;
- }
-
- %grid-cell--fixed-width {
- flex-grow: 0;
- outline-style: none;
-
- igx-icon {
- --ig-size: #{if($variant == 'indigo', 2, 3)};
- }
- }
-
- %grid-cell--active {
- box-shadow: inset 0 0 0 rem(1px) var-get($theme, 'cell-active-border-color');
-
- > %igx-grid__filtering-cell,
- > %grid-cell-header {
- border-inline-end-color: var-get($theme, 'cell-active-border-color');
- border-bottom-color: var-get($theme, 'cell-active-border-color');
- }
- }
-
- %grid-cell--invalid {
- padding-inline-end: rem(4px) !important;
-
- > igx-icon {
- color: color($color: 'error');
- width: var(--ig-icon-size, rem(18px));
- height: var(--ig-icon-size, rem(18px));
- font-size: var(--ig-icon-size, rem(18px));
- }
-
- %grid-cell-text {
- width: 100%;
- }
-
- .igx-input-group__bundle {
- &:focus-within {
- &::after {
- border: none !important;
- }
- }
- }
- }
-
- %grid-cell--valid {
- box-shadow: inset 0 0 0 rem(2px) color($color: 'success') !important;
- }
-
- %grid-cell--pinned-selected,
- %grid-cell--selected {
- color: var-get($theme, 'cell-selected-text-color');
- background: var-get($theme, 'cell-selected-background');
- // this is causing an issue https://github.com/IgniteUI/igniteui-angular/issues/4981
- // border-bottom: 0;
-
- %igx-grid__tree-grouping-indicator {
- &:hover {
- color: var-get($theme, 'cell-selected-text-color');
- }
- }
- }
-
- %grid-row--selected {
- color: var-get($theme, 'row-selected-text-color');
- background: var-get($theme, 'row-selected-background');
-
- %grid-cell--selected,
- %grid-cell--pinned-selected {
- color: var-get($theme, 'cell-selected-within-text-color');
- background: var-get($theme, 'cell-selected-within-background');
- }
-
- &:hover {
- background: var-get($theme, 'row-selected-hover-background');
- color: var-get($theme, 'row-selected-hover-text-color');
-
- %grid-cell--column-selected {
- color: var-get($theme, 'row-selected-hover-text-color');
- background: var-get($theme, 'row-selected-hover-background');
- }
- }
-
- %igx-grid__tree-grouping-indicator {
- color: var-get($theme, 'row-selected-text-color');
-
- &:hover {
- color: var-get($theme, 'row-selected-text-color');
- }
- }
- }
-
- %grid-cell--column-selected {
- color: var-get($theme, 'row-selected-text-color');
- background: var-get($theme, 'row-selected-background');
- }
-
- %grid-cell--cross-selected {
- color: var-get($theme, 'cell-selected-within-text-color');
- background: var-get($theme, 'cell-selected-within-background');
- }
-
- %igx-grid__td--new {
- color: var-get($theme, 'cell-new-color');
- }
-
- %igx-grid__td--edited {
- %grid-cell-text {
- font-style: italic;
- color: var-get($theme, 'cell-edited-value-color');
- padding: 0 rem(1px);
- }
- }
-
- %igx-grid__tr--merged {
- border-block-end: 0;
- }
-
- %igx-grid__tr--merged-top {
- position: absolute;
- width: 100%;
- }
-
- %igx-grid__td--merged {
- z-index: 1;
- grid-row: 1 / -1;
- }
-
- %igx-grid__td--merged-selected {
- color: var-get($theme, 'row-selected-text-color');
- background: var-get($theme, 'row-selected-background') !important;
- }
-
- %igx-grid__td--merged-hovered {
- background: var-get($theme, 'row-hover-background') !important;
- color: var-get($theme, 'row-hover-text-color');
- }
-
- %igx-grid__td--merged-selected-hovered {
- background: var-get($theme, 'row-selected-hover-background') !important;
- color: var-get($theme, 'row-selected-hover-text-color');
- }
-
- %igx-grid__tr--deleted {
- %grid-cell-text {
- font-style: italic;
- color: color(map.get($theme, 'palette'), 'error');
- text-decoration: line-through;
- }
- }
-
- %igx-grid__tr--disabled {
- %grid-cell-text {
- color: var-get($theme, 'cell-disabled-color');
- }
- }
-
- %igx-grid__td--editing {
- background: var-get($theme, 'cell-editing-background') !important;
- box-shadow: inset 0 0 0 $editing-outline-width var-get($theme, 'edit-mode-color');
- padding-inline: rem(4px);
-
- &.igx-grid__td--invalid {
- box-shadow: inset 0 0 0 rem(2px) color($color: 'error') !important;
- }
-
- &%grid-cell-number {
- justify-content: flex-start !important;
- }
- }
-
- %grid-cell--pinned {
- position: relative;
- background: inherit;
- z-index: 9999;
- }
-
- %grid-cell--pinned--column-selected {
- color: var-get($theme, 'row-selected-text-color');
- background: var-get($theme, 'row-selected-background');
-
- &:hover {
- background: var-get($theme, 'row-selected-hover-background');
- color: var-get($theme, 'row-selected-text-color');
- }
- }
-
- %grid-cell--pinned-last {
- border-inline-end: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
-
- %igx-grid__filtering-cell,
- %grid-cell-header {
- border-inline-end: none;
- }
-
- &%grid-cell--editing {
- border-inline-end: map.get($cell-pin, 'style') var-get($theme, 'cell-selected-background') !important;
- }
- }
-
- %grid-cell--pinned-first {
- border-inline-start: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
-
- &%grid-cell--editing {
- border-inline-start: map.get($cell-pin, 'style') var-get($theme, 'cell-selected-background') !important;
- }
- }
-
- %grid-cell--row-pinned-first {
- overflow: hidden;
- }
-
- %grid-cell--pinned-chip {
- margin-inline-end: pad-inline(rem(4px), rem(8px), rem(12px));
- }
-
- %grid-cell-header {
- flex-flow: row nowrap;
- justify-content: space-between;
- align-items: flex-end;
-
- @if $variant != 'indigo' {
- font-size: $grid-head-fs;
- font-weight: $grid-head-fw;
-
- padding-inline: pad-inline(
- map.get($grid-header-padding-inline, 'compact'),
- map.get($grid-header-padding-inline, 'cosy'),
- map.get($grid-header-padding-inline, 'comfortable')
- );
- } @else {
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
- }
-
- min-width: 0;
- padding-block: 0;
- border-inline-end: $grid-header-border;
- min-height: var(--header-size);
- outline-style: none;
- overflow: hidden;
- transition: color 250ms ease-in-out;
- }
-
- %grid-cell-header--filtering {
- background: var-get($theme, 'filtering-header-background');
- color: var-get($theme, 'filtering-header-text-color');
- z-index: 3;
- }
-
- %grid-cell-header-title {
- @include ellipsis();
-
- @if $variant != 'indigo' {
- font-weight: $grid-header-weight;
- } @else {
- @include type-style('detail-2', false);
- }
-
- min-width: 3ch;
- user-select: none;
- cursor: initial;
- flex-grow: 1; /* hey IE, the text should take most of the space */
- // align-self: flex-end; /* commenting out for now on external request */
- line-height: var(--header-size);
- transition: color 250ms ease-in-out;
- }
-
- %grid-cell-header-icons {
- display: inline-flex;
- align-items: center;
- justify-content: flex-end;
- user-select: none;
- min-width: rem(30px); /* sort-icon + filter icon width */
- height: var(--header-size);
- align-self: flex-end;
-
- &:empty {
- min-width: 0;
- }
-
- .sort-icon {
- position: relative;
- display: flex;
-
-
- @if $variant != 'indigo' {
- igx-icon {
- --size: var(--ig-icon-size, #{rem(15px)});
- }
- }
-
- &::after {
- content: attr(data-sortIndex);
- position: absolute;
- top: rem(-5px);
- inset-inline-end: rem(-1px);
- font-size: rem(10px);
- text-align: end;
- font-family: sans-serif;
- line-height: rem(10px);
- }
- }
- }
-
-
- %igx-grid-th__expander {
- display: flex;
- align-items: center;
- justify-content: center;
- margin-inline-end: rem(8px);
- cursor: pointer;
-
- igx-icon {
- @if $variant == 'indigo' {
- --component-size: 2;
- }
-
- color: var-get($theme, 'expand-icon-color');
- }
-
- &:hover {
- igx-icon {
- color: var-get($theme, 'expand-icon-hover-color');
- }
- }
- }
-
- %igx-grid-th__group-title {
- @include ellipsis();
-
- @if $variant == 'indigo' {
- @include type-style('detail-2', false);
- }
- }
-
- %igx-grid-th--collapsible {
- justify-content: normal;
- }
-
- %igx-grid-th--selectable {
- @if $variant != 'indigo' {
- opacity: if($theme-variant == 'light', .75, .85);
-
- &%grid__drag-ghost-image {
- opacity: 1;
- }
- } @else {
- opacity: 1;
- }
-
- .sort-icon {
- color: var-get($theme, 'header-selected-text-color');
-
- ::after {
- background: var-get($theme, 'header-selected-background');
- }
- }
- }
-
- // TODO, remove igx-banner__row extra div if possible
- @if $variant {
- %igx-banner__row {
- display: contents;
- }
- }
-
- %igx-grid-th--selected {
- .sort-icon::after {
- background: var-get($theme, 'header-selected-background');
- }
- }
-
- %igx-grid-th--selectable,
- %igx-grid-th--selected {
- color: var-get($theme, 'header-selected-text-color');
- background: var-get($theme, 'header-selected-background');
-
- &%igx-grid-th--sorted {
- .sort-icon {
- color: var-get($theme, 'header-selected-text-color');
-
- > igx-icon {
- color: inherit;
- }
-
- &:focus,
- &:hover {
- color: var-get($theme, 'header-selected-text-color');
-
- > igx-icon {
- color: inherit;
- }
- }
- }
- }
-
- @if $variant == 'indigo' {
- %grid-excel-icon--filtered,
- %grid-excel-icon {
- color: var-get($theme, 'header-selected-text-color');
-
- igx-icon {
- color: var-get($theme, 'header-selected-text-color');
- }
-
- &:focus,
- &:hover {
- color: var-get($theme, 'header-selected-text-color');
-
- igx-icon {
- color: var-get($theme, 'header-selected-text-color');
- }
- }
- }
- }
- }
-
- %igx-grid-th--active {
- @extend %grid-cell--active;
-
- %igx-grid-th--selected,
- %igx-grid-th--selectable {
- @extend %grid-cell--active;
- }
- }
-
- %igx-grid-summary--active {
- @extend %grid-cell--active !optional;
- }
-
- %igx-grid-th--sortable {
- .sort-icon {
- cursor: pointer;
- opacity: if($variant == 'indigo', if($theme-variant == 'light', .75, .85), .7);
-
- &:hover {
- opacity: 1;
- }
- }
- }
-
- %igx-grid-th--sorted {
- .sort-icon {
- opacity: 1;
- color: var-get($theme, 'sorted-header-icon-color');
-
- > igx-icon {
- color: inherit;
- }
-
- &:hover {
- color: var-get($theme, 'sortable-header-icon-hover-color');
-
- > igx-icon {
- color: inherit;
- }
- }
- }
- }
-
- %igx-grid-th--filtrable {
- %grid-cell-header-title {
- @if $variant != 'indigo' {
- opacity: .7;
- }
- }
- }
-
- %igx-grid-th--filtrable-sortable {
- .sort-icon {
- cursor: pointer;
- opacity: if($variant == 'indigo', 1, .7);
-
- &:hover {
- opacity: 1;
- }
- }
- }
-
- %grid-excel-icon--filtered,
- %grid-excel-icon,
- .sort-icon {
- transition: all 250ms ease-in-out;
- }
-
- %grid-cell-number {
- text-align: $grid-cell-align-num;
- justify-content: flex-end;
- flex-grow: 1;
-
- %grid-cell-header-icons {
- justify-content: flex-start;
- order: -1;
-
- .sort-icon {
- order: 1;
- }
- }
- }
-
- %grid__cbx-selection {
- display: flex;
- justify-content: center;
- align-items: center;
- background: inherit;
- z-index: 4;
- background-clip: border-box;
- }
-
- %cbx-padding {
- display: flex;
- align-items: center;
- justify-content: center;
- padding-inline: pad-inline($cbx-padding-compact, $cbx-padding-cosy, $cbx-padding);
- }
-
- %grid__resize-handle {
- position: absolute;
- width: rem(4px);
- top: 0;
- inset-inline-end: rem(-2px);
- height: 100%;
- z-index: 2;
- }
-
- %grid__resize-line {
- position: absolute;
- cursor: col-resize;
- width: rem(4px);
- background: var-get($theme, 'resize-line-color');
- z-index: 2;
-
- &::before,
- &::after {
- position: absolute;
- content: '';
- height: 100%;
- width: rem(96px);
- }
-
- &::before {
- inset-inline-end: 100%;
- }
-
- &::after {
- inset-inline-start: 100%;
- }
- }
-
- %grid-summaries {
- display: flex;
- overflow: hidden;
- outline-style: none;
- background-color: var-get($theme, 'summaries-patch-background');
- }
-
- %grid-summaries--body {
- --summaries-patch-background: var(--ig-gray-100);
-
- border-bottom: rem(1px) dashed var-get($theme, 'row-border-color');
- background-color: var-get($theme, 'summaries-patch-background');
-
- &:last-of-type {
- border-bottom: none;
- }
-
- .igx-grid-summary {
- --background-color: inherit;
- --result-color: #{adaptive-contrast(var(--background-color))};
- }
- }
-
- %grid-summaries-patch {
- position: relative;
- background: inherit;
- border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
- z-index: 1;
-
- @if $variant == 'indigo' {
- border-top: rem(1px) solid var-get($theme, 'header-border-color');
- }
- }
-
- // Column moving
- %igx-grid-th__drop-indicator-left,
- %igx-grid-th__drop-indicator-right {
- position: absolute;
- width: rem(1px);
- height: 100%;
- top: 0;
- z-index: 1;
- }
-
- %igx-grid-th__drop-indicator-left {
- inset-inline-start: rem(-1px);
- }
-
- %igx-grid-th__drop-indicator-right {
- inset-inline-end: rem(-1px);
- }
-
- %igx-grid-th__drop-indicator--active {
- &%igx-grid-th__drop-indicator-left,
- &%igx-grid-th__drop-indicator-right {
- border-inline-end: rem(1px) solid var-get($theme, 'drop-indicator-color');
- }
-
- &::after,
- &::before {
- position: absolute;
- content: '';
- width: 0;
- height: 0;
- border-style: solid;
- inset-inline-start: rem(-3px);
- }
-
- &::before {
- bottom: 0;
- border-width: 0 rem(4px) rem(4px);
- border-color: transparent transparent var-get($theme, 'drop-indicator-color');
- }
-
- &::after {
- top: 0;
- border-width: rem(4px) rem(4px) 0;
- border-color: var-get($theme, 'drop-indicator-color') transparent transparent;
- }
- }
-
- %grid__scroll-on-drag-left,
- %grid__scroll-on-drag-right {
- position: absolute;
- width: rem(15px);
- top: 0;
- height: 100%;
- z-index: 25;
- }
-
- %grid__scroll-on-drag-left {
- inset-inline-start: 0;
- }
-
- %grid__scroll-on-drag-right {
- inset-inline-end: 0;
- }
-
- %grid__scroll-on-drag-pinned {
- position: absolute;
- width: rem(15px);
- height: 100%;
- top: 0;
- z-index: 25;
- }
-
- %grid__drag-ghost-image {
- position: absolute;
- display: flex;
- align-items: center;
- background: var-get($theme, 'ghost-header-background');
- color: var-get($theme, 'ghost-header-text-color');
- min-width: rem(168px);
- max-width: rem(320px);
- height: var(--header-size);
- min-height: var(--header-size);
- top: rem(-99999px);
- inset-inline-start: rem(-99999px);
- border: none;
- box-shadow: var-get($theme, 'drag-elevation');
- overflow: hidden;
- z-index: 20;
-
- %grid-cell-header-title {
- @include ellipsis();
- flex: 1 0 0;
- text-align: if($variant == 'indigo', start, end);
- }
-
- %grid-cell-header-icons {
- display: none;
- }
-
- %grid-thead-title {
- border: none;
- }
- }
-
- %grid__drag-ghost-image-icon {
- color: var-get($theme, 'ghost-header-icon-color');
- margin-inline-end: if($variant == 'indigo', rem(8px), rem(12px));
- }
-
- %grid__drag-ghost-image-icon-group {
- color: var-get($theme, 'ghost-header-icon-color');
- padding: $padding-comfortable;
- padding-inline-end: 0;
- margin-inline-end: rem(8);
- }
-
- %igx-grid__drag-col-header {
- background: var-get($theme, 'header-background');
-
- %grid-cell-header {
- > * {
- opacity: .4;
- }
- }
- }
-
- // Group by section
- %igx-grid__group-row {
- background: var-get($theme, 'group-row-background');
- display: flex;
- outline-style: none;
- border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
- min-height: var(--header-size);
-
- %igx-grid__drag-indicator {
- cursor: default;
- flex-grow: 0;
- }
-
- %grid__cbx-selection {
- background: initial;
- }
- }
-
- %igx-grid__group-row--active {
- background: var-get($theme, 'group-row-selected-background');
- @extend %grid-cell--active !optional;
-
- %igx-grid__grouping-indicator {
- color: var-get($theme, 'expand-icon-color');
- }
-
- %igx-grid__drag-indicator {
- border: rem(1px) solid var-get($theme, 'cell-active-border-color');
- border-inline-start-width: 0;
- border-inline-end-width: 0;
- box-shadow: inset rem(1px) 0 0 0 var-get($theme, 'cell-active-border-color');
- }
-
- &:hover {
- background: var-get($theme, 'group-row-selected-background');
- }
- }
-
- %igx-group-label {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- line-height: rem(16px);
- gap: rem(4px);
- }
-
- %igx-group-label__icon {
- @at-root igx-icon#{&} {
- --component-size: #{if($variant == 'indigo', 2, 1)};
-
- color: var-get($theme, 'group-label-icon');
- user-select: none;
- }
- }
-
- %igx-group-label__column-name {
- @if $variant != 'indigo' {
- font-weight: 600;
- font-size: rem(12px);
- } @else {
- @include type-style('detail-2', false);
- }
-
- color: var-get($theme, 'group-label-column-name-text');
-
- }
-
-
- %igx-group-label__count-badge {
- --background-color: #{var-get($theme, 'group-count-background')};
- --text-color: #{var-get($theme, 'group-count-text-color')};
-
- @if $variant == 'indigo' {
- --shadow: none;
- }
-
- > span {
- font-size: $grid-head-fs;
- }
- }
-
-
- %igx-group-label__text {
- @if $variant != 'indigo' {
- font-size: rem(13px);
- } @else {
- @include type-style('detail-1', false);
- }
- color: var-get($theme, 'group-label-text')
- }
-
- [dir='rtl'] {
- %igx-group-label {
- > * {
- margin-inline-start: rem(4px);
-
- &:last-child {
- margin-inline-start: 0;
- }
- }
- }
- }
-
- %igx-grid__group-content {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- flex: 1 1 auto;
- @if $variant != 'indigo' {
- padding-inline-start: pad-inline(
- map.get($grid-grouping-indicator-padding, 'compact'),
- map.get($grid-grouping-indicator-padding, 'cosy'),
- map.get($grid-grouping-indicator-padding, 'comfortable')
- );
- } @else {
- padding-inline-start: 0;
- }
-
- min-height: sizable(
- map.get($grid-header-height, 'compact'),
- map.get($grid-header-height, 'cosy'),
- map.get($grid-header-height, 'comfortable')
- );
-
- &:focus {
- outline: transparent;
- }
- }
-
- %igx-grid__row-indentation {
- position: relative;
- display: flex;
- justify-content: center;
- align-items: center;
- padding-inline-start: pad-inline(
- map.get($grid-grouping-indicator-padding, 'compact'),
- map.get($grid-grouping-indicator-padding, 'cosy'),
- map.get($grid-grouping-indicator-padding, 'comfortable')
- );
- padding-inline-end: pad-inline(
- map.get($grid-grouping-indicator-padding, 'compact'),
- map.get($grid-grouping-indicator-padding, 'cosy'),
- map.get($grid-grouping-indicator-padding, 'comfortable')
- );
- border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
- background: inherit;
- z-index: 1;
- background-clip: border-box;
-
- &::after {
- content: '';
- position: absolute;
- width: 100%;
- height: rem(1px);
- bottom: rem(-1px);
- inset-inline-start: 0;
- background: transparent;
- }
-
- %igx-icon-button-display {
- width: rem(28px);
- height: rem(28px);
- color: var-get($theme, 'expand-all-icon-color');
- }
-
- &:focus,
- &:hover {
- %igx-icon-button-display {
- color: var-get($theme, 'expand-all-icon-hover-color');
- }
- }
- }
-
- %igx-grid-grouparea {
- grid-row: 2;
- display: flex;
- align-items: center;
- justify-content: flex-start;
- flex-wrap: wrap;
- border-bottom: $grid-header-border;
- background: var-get($theme, 'grouparea-background');
- color: var-get($theme, 'grouparea-color');
- min-height: var(--grouparea-size);
- padding-inline: pad-inline(
- map.get($grouparea-padding-inline, 'compact'),
- map.get($grouparea-padding-inline, 'cosy'),
- map.get($grouparea-padding-inline, 'comfortable')
- );
- padding-block: 0;
- z-index: 2;
- height: 100%;
- overflow: hidden;
-
- &:focus {
- outline-style: none;
- }
-
- %igx-chip {
- margin-block: pad-block(rem(4px), rem(8px), rem(8px));
- }
- }
-
- %igx-grid-grouparea__connector {
- display: inline-flex;
- justify-content: center;
- align-items: center;
- margin: 0 rem(4px);
-
- igx-icon {
- width: var(--ig-icon-size, #{rem(16px)});
- height: var(--ig-icon-size, #{rem(16px)});
- font-size: var(--ig-icon-size, #{rem(16px)});
- }
-
- [dir='rtl'] & {
- transform: scaleX(-1);
- }
- }
-
- %igx-drop-area {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- min-width: rem(80px);
- height: sizable(
- map.get($drop-area-height, 'compact'),
- map.get($drop-area-height, 'cosy'),
- map.get($drop-area-height, 'comfortable')
- );
-
- @if $variant != 'indigo' {
- padding-inline: pad-inline(
- map.get($grid-cell-padding-inline, 'compact'),
- map.get($grid-cell-padding-inline, 'cosy'),
- map.get($grid-cell-padding-inline, 'comfortable')
- );
- } @else {
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
- }
-
- padding-block: 0;
- flex: 1 0 0%;
- background: var-get($theme, 'drop-area-background');
- border-radius: var-get($theme, 'drop-area-border-radius');
-
- %igx-drop-area__icon {
- color: var-get($theme, 'drop-area-icon-color');
- width: rem(16px);
- height: rem(16px);
- font-size: rem(16px);
- margin-inline-end: rem(8px);
- }
- }
-
- %igx-drop-area--hover {
- background: var-get($theme, 'drop-area-on-drop-background');
- }
-
- %igx-drop-area__text {
- @include ellipsis();
- color: var-get($theme, 'drop-area-text-color');
- font-size: rem(13px);
- }
-
- %igx-grid__grouping-indicator {
- position: relative;
- display: flex;
- user-select: none;
- justify-content: center;
- align-items: center;
- z-index: 1;
- cursor: pointer;
- padding-inline-end: if($variant == 'indigo', rem(16px), rem(12px));
- margin-inline-start: sizable(
- #{map.get($grid-grouping-indicator-padding, 'compact')},
- #{map.get($grid-grouping-indicator-padding, 'cosy')},
- #{map.get($grid-grouping-indicator-padding, 'comfortable')
- });
- min-height: var(--header-size);
-
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 3)};
-
- color: var-get($theme, 'expand-icon-color');
- }
-
- &:hover,
- &:focus {
- outline-style: none;
-
- igx-icon {
- color: var-get($theme, 'expand-icon-hover-color');
- }
- }
-
- [dir='rtl'] & {
- transform: scaleX(-1);
- }
- }
-
- %igx-grid__header-indentation {
- position: relative;
- padding-inline-end: sizable(
- map.get($grid-grouping-indicator-padding, 'compact'),
- map.get($grid-grouping-indicator-padding, 'cosy'),
- map.get($grid-grouping-indicator-padding, 'comfortable')
- );
- border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
- background: var-get($theme, 'header-background');
- z-index: 4;
-
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 3)};
- }
- }
-
- %igx-grid__group-expand-btn {
- position: absolute;
- cursor: pointer;
- user-select: none;
- inset-block-start: calc(50% - #{$indicator-icon-width} / 2);
- inset-inline-start: var(--indicator-inline-inset);
-
- &:hover {
- color: var-get($theme, 'expand-icon-hover-color');
- }
-
- &%igx-grid__group-expand-btn--push {
- inset-block-start: sizable(
- math.div(map.get($grid-header-height, 'compact') - $indicator-icon-width, 2),
- math.div(map.get($grid-header-height, 'cosy') - $indicator-icon-width, 2),
- math.div(map.get($grid-header-height, 'comfortable') - $indicator-icon-width, 2)
- );
- }
- }
-
- @for $i from 1 through 10 {
- $row-indentation-level: (
- comfortable: calc(#{$i * map.get($grid-grouping-indicator-padding, 'comfortable')} + #{$indicator-icon-width}),
- cosy: calc(#{$i * map.get($grid-grouping-indicator-padding, 'cosy')} + #{$indicator-icon-width}),
- compact: calc(#{$i * map.get($grid-grouping-indicator-padding, 'compact')} + #{$indicator-icon-width})
- );
-
- $level--comfortable: map.get($row-indentation-level, 'comfortable');
- $level--cosy: map.get($row-indentation-level, 'cosy');
- $level--compact: map.get($row-indentation-level, 'compact');
-
- %igx-grid__row-indentation--level-#{$i} {
- --indicator-inline-inset: #{sizable(
- map.get($grid-grouping-indicator-padding, 'compact'),
- map.get($grid-grouping-indicator-padding, 'cosy'),
- map.get($grid-grouping-indicator-padding, 'comfortable')
- )};
- padding-inline-start: pad-inline($level--compact, $level--cosy, $level--comfortable);
- }
-
- $indicator-padding--comfortable: #{$i * map.get($grid-grouping-indicator-padding, 'comfortable')};
- $indicator-padding--cosy: #{$i * map.get($grid-grouping-indicator-padding, 'cosy')};
- $indicator-padding--compact: #{$i * map.get($grid-grouping-indicator-padding, 'compact')};
-
- %igx-grid__group-row--padding-level-#{$i} {
- %igx-grid__grouping-indicator {
- padding-inline-start: pad-inline($indicator-padding--compact, $indicator-padding--cosy, $indicator-padding--comfortable);
- }
- }
- }
-
- %igx-grid__outlet {
- --ig-size: var(--grid-size);
-
- z-index: 10002;
- position: fixed;
- }
-
- %igx-grid__loading-outlet {
- width: 100%;
- height: 100%;
- z-index: -1;
- position: absolute;
-
- > %overlay-wrapper--modal {
- background: none;
- }
-
- %circular-display {
- width: rem(50);
- height: rem(50);
- }
- }
-
- %igx-grid__row-editing-outlet {
- z-index: 10000;
- position: absolute;
-
- %overlay-wrapper {
- /* Change wrapper position from 'fixed' to 'absolute' so that it is hidden when scrolled below the parent grid body content. */
- position: absolute;
- }
- }
-
- %igx-grid__addrow-snackbar {
- position: absolute;
- z-index: 5;
- bottom: rem(24px);
- inset-inline-start: 50%;
- transform: translateX(-50%);
- }
-
- %igx-grid__filtering-cell {
- display: flex;
- align-items: center;
- border-inline-end: $grid-header-border;
- border-top: $grid-header-border;
- height: var(--header-size);
-
- @if $variant != 'indigo' {
- padding-inline: pad-inline(
- map.get($grid-header-padding-inline, 'compact'),
- map.get($grid-header-padding-inline, 'cosy'),
- map.get($grid-header-padding-inline, 'comfortable')
- );
- } @else {
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
- }
-
- padding-block: 0;
- overflow: hidden;
-
- igx-chips-area {
- transition: transform .25s $ease-out-back;
- flex-wrap: nowrap;
-
- .igx-filtering-chips__connector {
- font-size: rem(12px);
- text-transform: uppercase;
- font-weight: 600;
- margin: 0 rem(8px);
- }
- }
- }
-
- %igx-grid__filtering-cell--selected {
- color: var-get($theme, 'header-selected-text-color');
- background: var-get($theme, 'header-selected-background');
- }
-
- %igx-grid__filtering-cell-indicator {
- position: relative;
- display: flex;
- align-items: center;
- justify-content: center;
- padding-inline-end: rem(8px);
- margin-inline-start: rem(8px);
- cursor: pointer;
- visibility: visible;
-
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 1)};
- }
-
- %igx-badge-display {
- --size: #{rem(14px)};
- --font-size: #{rem(12px)};
- line-height: 0;
- position: absolute;
- inset-inline-end: 0;
- }
- }
-
- %igx-grid__filtering-cell-indicator--hidden {
- visibility: hidden;
- }
-
- %igx-grid__filtering-row {
- position: absolute;
- display: flex;
- width: 100%;
- height: $filtering-row-height;
- padding-inline: pad-inline($cell-padding-compact, $cell-padding-cosy, $cell-padding-comfortable);
- align-items: center;
- justify-content: space-between;
- background: var-get($theme, 'filtering-row-background');
- color: var-get($theme, 'filtering-row-text-color');
- inset-inline-start: 0;
- bottom: 0;
- z-index: 3;
-
- &::after {
- display: block;
- position: absolute;
- content: '';
- background: inherit;
- inset-inline-start: 0;
- inset-inline-end: 0;
- top: 0;
- bottom: 0;
- box-shadow: 0 rem(1px) 0 var-get($theme, 'filtering-row-background'),
- 0 rem(4px) rem(10px) rgba(0, 0, 0, .12);
- z-index: -1;
- }
-
- @extend %filtering-row-input-overrides !optional;
-
- igx-input-group {
- --ig-size: var(--grid-size) !important;
- }
-
- [igxIconButton] {
- --ig-size: 1;
- }
-
- @if $variant == 'bootstrap' {
- [igxButton] {
- margin: rem(4px);
- }
- }
-
- .igx-grid__filtering-row-percent-hint {
- display: inline-block;
- max-width: rem(56px);
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- vertical-align: middle;
- flex-shrink: 1;
- }
- }
-
- %igx-grid__filtering-dropdown-items {
- display: flex;
- align-items: center;
- }
-
- %igx-grid__filtering-dropdown-text {
- margin-inline-start: rem(16px);
- }
-
- %igx-grid__filtering-row-main {
- display: flex;
- flex: 1;
- overflow: hidden;
- max-width: calc(100% - 176px);
- min-width: rem(56px);
-
- igx-chips-area {
- transition: transform .25s $ease-out-back;
- flex-wrap: nowrap;
- margin-inline: if($variant == 'indigo', rem(12px), rem(8px));
- gap: rem(4px);
- }
-
- @if $variant != 'indigo' {
- igx-chip {
- margin: 0 rem(4px);
- }
-
- [igxButton] {
- igx-icon {
- position: absolute;
- inset-inline-start: rem(12px);
- // IE fix for vertical alignment
- top: 50%;
- transform: translateY(-50%);
- }
-
- span {
- margin-inline-start: rem(16px);
- }
- }
- }
- }
-
- %igx-grid__filtering-scroll-start {
- &::after {
- @include _filtering-scroll-mask($theme, right);
- inset-inline-start: calc(100% + 6px);
- }
-
- [dir='rtl'] & {
- &::before {
- @include _filtering-scroll-mask($theme, right);
- inset-inline-end: calc(100% + 6px);
- }
- }
- }
-
- %igx-grid__filtering-scroll-end {
- &::before {
- @include _filtering-scroll-mask($theme, left);
- inset-inline-end: calc(100% + 6px);
- }
-
- [dir='rtl'] & {
- &::after {
- @include _filtering-scroll-mask($theme, left);
- inset-inline-start: calc(100% + 6px);
- }
- }
- }
-
- %igx-grid__filtering-scroll-start,
- %igx-grid__filtering-scroll-end {
- width: rem(24px);
- height: rem(24px);
- position: relative;
- overflow: visible;
- margin: if($variant == 'indigo', rem(12px), rem(8px));
- z-index: 1;
-
- [dir='rtl'] & {
- transform: scaleX(-1);
-
- &::after {
- content: initial;
- }
- }
- }
-
- %igx-grid__tr--highlighted {
- position: relative;
-
- &::after {
- content: '';
- position: absolute;
- top: 0;
- inset-inline-start: 0;
- width: rem(4px);
- height: 100%;
- background: var-get($theme, 'row-highlight');
- z-index: 3;
- }
-
- %igx-grid__tr--edited {
- &::before {
- inset-inline-start: rem(4px);
- }
- }
-
- &::before {
- inset-inline-start: rem(4px);
- }
- }
-
- %igx-grid__tr-container {
- overflow: auto;
- width: 100%;
- border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
- }
-
- %igx-grid__tr-container--active {
- @extend %grid-cell--active !optional;
- }
-
- %igx-grid__hierarchical-expander {
- user-select: none;
- background: inherit;
- padding-inline: pad-inline(
- map.get($hierarchical-grid-indent, 'compact'),
- map.get($hierarchical-grid-indent, 'cosy'),
- map.get($hierarchical-grid-indent, 'comfortable')
- );
- display: flex;
- align-items: center;
- justify-content: center;
- cursor: pointer;
- z-index: 3;
- color: var-get($theme, 'expand-icon-color');
- background-clip: border-box;
-
- &:focus {
- outline: none;
-
- igx-icon {
- color: var-get($theme, 'expand-icon-hover-color');
- }
- }
-
- &:hover {
- igx-icon {
- color: var-get($theme, 'expand-icon-hover-color');
- }
- }
-
- igx-icon {
- --component-size: #{if($variant == 'indigo', 2, 3)};;
-
- color: var-get($theme, 'expand-icon-color');
- max-width: $hierarchical-action-icon;
- min-width: min-content;
- }
-
- [dir='rtl'] & {
- transform: scaleX(-1);
- }
-
- &--empty {
- cursor: default;
- pointer-events: none;
- }
- }
-
- %igx-grid__hierarchical-expander--header {
- background: inherit;
- border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
- z-index: 3;
- background-clip: border-box;
-
- igx-icon {
- display: flex;
- align-items: center;
- }
- }
-
- %igx-grid__hierarchical-expander--push {
- align-items: flex-start;
-
- igx-icon {
- min-height: var(--header-size);
- max-height: var(--header-size);
- }
- }
-
- %igx-grid__header-indentation--no-border {
- border-inline-end: rem(1px) solid transparent;
- }
-
- %igx-grid__hierarchical-indent {
- display: flex;
- margin-inline-start: pad-inline(
- map.get($hierarchical-indent, 'compact'),
- map.get($hierarchical-indent, 'cosy'),
- map.get($hierarchical-indent, 'comfortable')
- );
- margin-inline-end: pad-inline(
- map.get($hierarchical-grid-indent, 'compact'),
- map.get($hierarchical-grid-indent, 'cosy'),
- map.get($hierarchical-grid-indent, 'comfortable')
- );
- margin-block: pad-block(
- map.get($hierarchical-grid-indent, 'compact'),
- map.get($hierarchical-grid-indent, 'cosy'),
- map.get($hierarchical-grid-indent, 'comfortable')
- );
-
- &--scroll {
- margin-inline-end: pad-inline(
- map.get($hierarchical-indent-scroll, 'compact'),
- map.get($hierarchical-indent-scroll, 'cosy'),
- map.get($hierarchical-indent-scroll, 'comfortable')
- );
- }
- }
-
- @include excel-filtering($theme);
-
- %advanced-filtering-dialog {
- @if $variant == 'indigo' {
- $light-variant: contrast-color($color: 'gray', $variant: 900);
- $dark-variant: color($color: 'gray', $variant: 50);
- background: if($theme-variant == 'light', $light-variant, $dark-variant);
- } @else {
- background: color($color: 'surface', $variant: 500);
- }
-
- box-shadow: elevation(if($variant == 'indigo', if($theme-variant == 'light', 24, 23), 24));
-
- @if $variant == 'material' or $variant == 'bootstrap' {
- border-radius: rem(4px);
- }
-
- @if $variant == 'fluent' {
- border-radius: rem(2px);
- }
-
- @if $variant == 'indigo' {
- border-radius: rem(10px);
- }
-
- igx-query-builder {
- box-shadow: none;
- border: none;
- border-radius: inherit;
- }
-
- igx-query-builder-header {
- cursor: grab;
- }
- }
-
- %igx-grid__filtering-row-editing-buttons--small,
- %igx-grid__filtering-row-editing-buttons {
- display: flex;
- align-items: center;
-
- button {
- transition: none;
- }
- }
-
- %igx-grid__filtering-row-editing-buttons--small {
- button {
- &:not([disabled]) {
- igx-icon {
- color: var-get($theme, 'sorted-header-icon-color');
- }
- }
- }
- }
-
- %igx-grid__tr-action {
- &:last-of-type {
- border-inline-end: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
- @if $variant != 'indigo' {
- min-height: sizable(
- rem(32px),
- rem(40px),
- rem(50px)
- );
- } @else {
- min-height: sizable(
- rem(32px),
- rem(40px),
- rem(48px)
- );
- }
- }
- }
-
- igx-child-grid-row {
- igx-child-grid-row {
- %igx-grid__tr-action {
- border-inline-end: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
- }
- }
- }
-
- // Pivot grid
- %igx-grid__pivot--super-compact {
- --ig-size: 1 !important;
- %grid-cell-display,
- %grid-cell-header {
- padding: 0 if($variant != 'indigo', rem(4px), rem(6px)) !important;
- min-height: rem(24px) !important;
- height: rem(24px);
- }
-
- %grid-cell-header {
- > * {
- line-height: normal;
- align-self: initial;
- max-height: 100%;
- }
- }
-
- %igx-grid__tr-pivot--row-area {
- padding-bottom: rem(4px);
- }
- }
-
- %grid-thead--pivot {
- display: flex;
-
- %grid-thead--virtualizationWrapper {
- border-inline-start: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
- }
- }
-
- %grid-thead--virtualizationWrapper {
- height: 100%;
- }
-
- %grid-thead--virtualizationContainer {
- overflow: visible;
- height: 100%;
- }
-
- %igx-grid__tr-pivot {
- display: flex;
- align-items: center;
- background: inherit;
- overflow: hidden;
- z-index: 3;
- height: var(--header-size);
-
- @if $variant != 'indigo' {
- padding-inline: pad-inline(
- map.get($grid-header-padding-inline, 'compact'),
- map.get($grid-header-padding-inline, 'cosy'),
- map.get($grid-header-padding-inline, 'comfortable')
- );
- } @else {
- padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
- }
-
- padding-block: 0;
- background-clip: border-box !important;
- border-inline-start: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
- border-bottom: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
-
- igx-chips-area {
- flex-wrap: nowrap;
- width: auto;
-
- > * {
- margin-inline-end: rem(4px);
- }
-
- &:last-child {
- margin-inline-end: 0;
- }
- }
- }
-
- %igx-grid__pivot-filter-toggle {
- display: flex;
- align-items: center;
- justify-content: center;
- cursor: pointer;
- position: relative;
-
- > igx-badge {
- position: absolute;
- top: rem(-4px);
- inset-inline-start: 60%;
- width: rem(18px);
- min-width: rem(18px);
- height: rem(18px);
- font-size: rem(10px);
- pointer-events: none;
- user-select: none;
- }
- }
-
- %igx-grid__pivot-empty-chip-area {
- @if $variant != 'indigo' {
- line-height: normal;
- font-size: rem(14px);
- } @else {
- @include type-style('body-2');
-
- @if $theme-variant == 'light' {
- color: color($color: 'gray', $variant: 600);
- } @else {
- color: contrast-color($color: 'gray', $variant: 50, $opacity: .6);
- }
- }
-
- margin-inline-end: 0 !important;
- }
-
- %igx-grid__tr-pivot--row-area {
- height: auto !important;
- align-items: flex-end;
- padding-bottom: pad-block(
- map.get($pivot-row-aria-padding, 'compact'),
- map.get($pivot-row-aria-padding, 'cosy'),
- map.get($pivot-row-aria-padding, 'comfortable')
- );
- border-inline-start: 0;
- border-bottom: 0;
- }
-
- %igx-grid__tr-pivot--small-row-area {
- height: var(--header-size);
- align-items: flex-end;
-
- border-inline-start: 0;
- border-inline-end: 0;
- border-bottom: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
- }
-
- %igx-grid__tr-pivot--filter-container {
- display: flex;
- flex-direction: column;
- }
-
- %igx-grid__tr-pivot--chip_drop_indicator {
- width: rem(2px);
- background: var-get($theme, 'resize-line-color');
- visibility: hidden;
- }
-
- %igx-grid__tr-pivot--drop-row-area {
- flex-grow: 1;
- }
-
- %igx-grid__tr-pivot--filter {
- height: var(--header-size);
-
- border-inline-start: 0;
- border-inline-end: 0;
- border-bottom: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
- }
-
- %igx-grid-thead__wrapper--pivot {
- border-bottom: 0;
- }
-
- %igx-grid__tr-pivot-group {
- flex: 1;
- }
-
- %igx-grid__tr-pivot-toggle-icons {
- display: inline-flex !important;
- }
-
- %igx-grid__tr-pivot--columnDimensionLeaf {
- box-shadow: none;
-
- igx-grid-header {
- border: none;
- }
- }
-
- %igx-grid__tr-pivot--columnMultiRowSpan {
- igx-grid-header {
- > * {
- visibility: hidden;
- }
- }
- }
-
- %igx-grid__tr-header-row {
- igx-pivot-row-dimension-header-group {
- igx-pivot-row-dimension-header {
- align-items: center;
- }
-
- @if $variant == 'indigo' {
- igx-icon {
- opacity: if($theme-variant == 'light', .75, .85);
-
- &:hover {
- opacity: 1;
- cursor: pointer;
- }
- }
- }
- }
-
- igx-pivot-row-header-group {
- @if $variant != 'indigo' {
- padding-inline-start: pad-inline(
- map.get($grid-header-padding-inline, 'compact'),
- map.get($grid-header-padding-inline, 'cosy'),
- map.get($grid-header-padding-inline, 'comfortable')
- );
- } @else {
- padding-inline-start: pad-inline(rem(8px), rem(12px), rem(16px));
- }
-
- igx-pivot-row-dimension-header {
- align-items: center;
-
- .igx-grid-th__icons {
- @if $variant != 'indigo' {
- padding-inline-end: pad-inline(
- map.get($grid-header-padding-inline, 'compact'),
- map.get($grid-header-padding-inline, 'cosy'),
- map.get($grid-header-padding-inline, 'comfortable')
- );
- } @else {
- padding-inline-end: pad-inline(rem(8px), rem(12px), rem(16px));
- }
-
- align-self: center;
- }
- }
-
- &:last-of-type {
- igx-pivot-row-dimension-header {
- border-inline-end: 0;
- }
- }
- }
- }
-
- .igx-pivot-grid-row-filler__wrapper {
- .igx-grid-thead__wrapper {
- height: 100%;
- border-bottom: initial;
-
- .igx-grid-th {
- height: 100%;
- }
- }
- }
-
- %igx-grid__tbody-pivot-mrl-dimension {
- .igx-grid-th {
- border-bottom: none;
- }
- }
-
- // Pivot grid END
+ //@include css-vars($theme);
+ // @include scale-in-ver-center();
+ //
+ // $variant: map.get($theme, '_meta', 'theme');
+ // $theme-variant: map.get($theme, '_meta', 'variant');
+ // $bootstrap-theme: $variant == 'bootstrap';
+ // $not-bootstrap-theme: $variant != 'bootstrap';
+ //
+ // $cbx-size: map.get((
+ // 'material': rem(20px),
+ // 'fluent': rem(20px),
+ // 'bootstrap': rem(14px),
+ // 'indigo': rem(20px),
+ // ), $variant);
+ // $cbx-bs-size: rem(14px);
+ //
+ // $grid-shadow: var-get($theme, 'grid-elevation');
+ //
+ // $grid-caption-fs: rem(20px);
+ // $grid-caption-lh: rem(32px);
+ // $grid-caption-padding: rem(16px) rem(24px);
+ //
+ // $grid-head-fs: rem(12px);
+ // $grid-head-fw: 600;
+ // $transition: all 120ms $ease-in-out-cubic;
+ //
+ // // Cell
+ // $grid-cell-align-num: end;
+ // $grid-cell-fs: rem(13px);
+ // $grid-cell-lh: rem(16px);
+ // $grid-cell-pinned-style: rem(1px) solid;
+ // $grid-cell-pinned-border-color: color($color: 'gray', $variant: 300);
+ //
+ // $grid-header-border: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ //
+ // $cell-pin: (
+ // style: var-get($theme, 'pinned-border-width') var-get($theme, 'pinned-border-style'),
+ // color: var-get($theme, 'pinned-border-color')
+ // );
+ //
+ // $padding-comfortable: rem(24px);
+ // $padding-cosy: rem(16px);
+ // $padding-compact: rem(12px);
+ //
+ // $grid-header-padding-inline: (
+ // comfortable: $padding-comfortable,
+ // cosy: $padding-cosy,
+ // compact: $padding-compact
+ // );
+ //
+ // $pivot-row-aria-padding: (
+ // comfortable: $padding-comfortable,
+ // cosy: $padding-cosy,
+ // compact: $padding-compact
+ // );
+ //
+ // $grid-cbx-padding: (
+ // comfortable: $padding-comfortable,
+ // cosy: $padding-cosy,
+ // compact: $padding-compact
+ // );
+ //
+ // $cbx-padding: map.get($grid-cbx-padding, 'comfortable');
+ // $cbx-padding-cosy: map.get($grid-cbx-padding, 'cosy');
+ // $cbx-padding-compact: map.get($grid-cbx-padding, 'compact');
+ //
+ // $grid-header-height: (
+ // comfortable: if($variant == 'indigo', rem(48px), rem(50px)),
+ // cosy: if($variant == 'indigo', rem(40px), rem(40px)),
+ // compact: if($variant == 'indigo', rem(32px), rem(32px))
+ // );
+ //
+ // $drop-area-height: (
+ // comfortable: rem(32px),
+ // cosy: rem(24px),
+ // compact: rem(24px)
+ // );
+ //
+ // $cell-padding-comfortable: rem(24px);
+ // $cell-padding-cosy: rem(16px);
+ // $cell-padding-compact: rem(12px);
+ //
+ // $grid-cell-padding-inline: (
+ // comfortable: $cell-padding-comfortable,
+ // cosy: $cell-padding-cosy,
+ // compact: $cell-padding-compact
+ // );
+ //
+ // $hierarchical-grid-indent: (
+ // comfortable: rem(24px),
+ // cosy: rem(16px),
+ // compact: rem(12px)
+ // );
+ //
+ // $hierarchical-action-icon: if($variant == 'indigo', rem(16px), rem(24px));
+ //
+ // $hierarchical-indent: (
+ // comfortable: calc(2 * #{map.get($hierarchical-grid-indent, 'comfortable')} + #{$hierarchical-action-icon}),
+ // cosy: calc(2 * #{map.get($hierarchical-grid-indent, 'cosy')} + #{$hierarchical-action-icon}),
+ // compact: calc(2 * #{map.get($hierarchical-grid-indent, 'compact')} + #{$hierarchical-action-icon})
+ // );
+ //
+ // $hierarchical-indent-scroll: (
+ // comfortable: calc(#{map.get($hierarchical-grid-indent, 'comfortable')} + 18px),
+ // cosy: calc(#{map.get($hierarchical-grid-indent, 'cosy')} + 18px),
+ // compact: calc(#{map.get($hierarchical-grid-indent, 'compact')} + 18px)
+ // );
+ //
+ // $grouparea-padding-inline: (
+ // comfortable: rem(24px),
+ // cosy: rem(16px),
+ // compact: rem(12px)
+ // );
+ //
+ // $grouparea-min-height: (
+ // comfortable: if($variant == 'indigo', rem(56px), rem(57px)),
+ // cosy: if($variant == 'indigo', rem(48px), rem(49px)),
+ // compact: if($variant == 'indigo', rem(40px), rem(41px))
+ // );
+ //
+ // $grid-grouping-indicator-padding: (
+ // comfortable: rem(24px),
+ // cosy: rem(16px),
+ // compact: rem(12px)
+ // );
+ //
+ // $indicator-icon-width: map.get((
+ // 'material': rem(24px),
+ // 'fluent': rem(24px),
+ // 'bootstrap': rem(24px),
+ // 'indigo': rem(16px),
+ // ), $variant);
+ //
+ // $drag-icon-size: rem(24px);
+ //
+ // $grid-header-weight: map.get((
+ // 'material': 600,
+ // 'fluent': 800,
+ // 'bootstrap': 700,
+ // 'indigo': 600,
+ // ), $variant);
+ //
+ // $editing-outline-width: rem(2px);
+ //
+ // $filtering-row-height: #{sizable(
+ // map.get($grid-header-height, 'compact'),
+ // map.get($grid-header-height, 'cosy'),
+ // map.get($grid-header-height, 'comfortable')
+ // )};
+ //
+ // %cell-input-overrides {
+ // // Have a more stable visual editing experience
+ // > igx-input-group,
+ // igx-combo,
+ // igx-simple-combo,
+ // igx-select,
+ // igx-date-picker,
+ // igx-time-picker {
+ // position: relative;
+ // height: auto;
+ // width: 100% !important;
+ // overflow: hidden;
+ // }
+ //
+ // igx-input-group {
+ // background: var-get($theme, 'cell-editing-background');
+ //
+ // input {
+ // height: 100%;
+ // color: var-get($theme, 'cell-editing-foreground');
+ // }
+ //
+ // input:focus {
+ // color: var-get($theme, 'cell-editing-focus-foreground');
+ // }
+ // }
+ //
+ // igx-select,
+ // igx-combo,
+ // igx-simple-combo,
+ // igx-time-picker,
+ // igx-date-picker {
+ // igx-input-group {
+ // height: 100%;
+ // }
+ // }
+ //
+ // .igx-input-group__bundle {
+ // background: transparent !important;
+ // height: 100% !important;
+ // min-height: 100% !important;
+ // border: none !important;
+ //
+ // .igx-input-group__filler,
+ // .igx-input-group__notch {
+ // border: none !important;
+ // }
+ //
+ // &::before {
+ // content: none !important;
+ // }
+ //
+ // &::after {
+ // display: none;
+ // }
+ // }
+ //
+ // .igx-input-group--indigo .igx-input-group__bundle:hover,
+ // .igx-input-group--indigo .igx-input-group__bundle:focus {
+ // background: transparent;
+ // }
+ //
+ // .igx-input-group__bundle-main,
+ // .igx-input-group__bundle-start,
+ // .igx-input-group__bundle-end {
+ // height: auto;
+ // border: none !important;
+ // border-radius: 0 !important;
+ // }
+ //
+ // .igx-input-group__bundle-main {
+ // padding: 0;
+ // }
+ //
+ // .igx-input-group__line {
+ // display: none;
+ // }
+ //
+ // igx-prefix,
+ // igx-suffix {
+ // background: transparent !important;
+ // border-radius: 0 !important;
+ // padding-top: 0 !important;
+ // padding-bottom: 0 !important;
+ // border: none !important;
+ // padding-inline: sizable(rem(4px), rem(6px), rem(8px)) !important;
+ // }
+ //
+ // .igx-input-group--indigo {
+ // padding-inline: sizable(rem(6px), rem(8px), rem(12px)) !important;
+ //
+ // igx-prefix {
+ // padding-inline-start: 0 !important;
+ // }
+ //
+ // igx-suffix {
+ // padding-inline-end: 0 !important;
+ // }
+ // }
+ //
+ // .igx-input-group__input {
+ // padding-inline: sizable(rem(4px), rem(6px), rem(8px)) !important;
+ // }
+ //
+ // igx-date-range-picker {
+ // height: 100%;
+ // }
+ //
+ // igx-time-picker [igxLabel] {
+ // display: none;
+ // }
+ //
+ // input {
+ // margin: 0 auto;
+ // max-width: 100%;
+ // }
+ //
+ // %form-group-input {
+ // // ignore global typography
+ // font-size: $grid-cell-fs !important;
+ // line-height: $grid-cell-lh !important;
+ // }
+ //
+ // .igx-input-group__input,
+ // .igx-input-group__file-input,
+ // .igx-input-group__textarea {
+ // box-shadow: none !important;
+ // border: none !important;
+ // }
+ //
+ // .igx-input-group--disabled,
+ // .igx-input-group--disabled igx-prefix,
+ // .igx-input-group--disabled igx-suffix {
+ // color: var-get($theme, 'cell-disabled-color');
+ // }
+ // }
+ //
+ // @if $variant != 'indigo' {
+ // %filtering-row-input-overrides {
+ // igx-input-group {
+ // width: 100%;
+ // max-width: rem(200px);
+ // min-width: rem(140px);
+ //
+ // @if $variant != 'fluent' {
+ // border: rem(1px) solid color($color: 'gray', $variant: 300);
+ // }
+ //
+ // --size: calc(#{$filtering-row-height} - #{rem(8px)});
+ //
+ // .igx-input-group__bundle,
+ // .igx-input-group__bundle-start,
+ // .igx-input-group__bundle-end,
+ // igx-prefix,
+ // igx-suffix {
+ // background: transparent;
+ // border-radius: 0;
+ //
+ // /* stylelint-disable-next-line */
+ // &:hover {
+ // background: transparent;
+ // }
+ // }
+ //
+ // igx-prefix,
+ // igx-suffix {
+ // height: 100% !important;
+ // padding: 0 sizable(rem(4px), rem(6px), rem(8px));
+ // }
+ //
+ // .igx-input-group__input {
+ // font-size: sizable(rem(12px), rem(14px), rem(16px));
+ // padding-inline-start: 0;
+ // padding-block: 0;
+ // height: 100%;
+ // }
+ //
+ // .igx-input-group__bundle,
+ // .igx-input-group__bundle-start,
+ // .igx-input-group__bundle-end,
+ // .igx-input-group__input {
+ // border: 0;
+ //
+ // /* stylelint-disable-next-line */
+ // &:hover {
+ // border: 0;
+ // box-shadow: none;
+ // }
+ // }
+ //
+ // .igx-input-group__bundle::after {
+ // display: none;
+ // }
+ //
+ // .igx-input-group__bundle-main {
+ // padding-inline-start: 0;
+ // }
+ //
+ // color: var-get($theme, 'filtering-row-text-color');
+ //
+ // &:hover{
+ // color: var-get($theme, 'filtering-row-text-color');
+ // border-color: color($color: 'primary', $variant: 500);
+ // }
+ // }
+ //
+ // .igx-input-group--focused {
+ // @if $variant != 'fluent' {
+ // border-color: color($color: 'primary', $variant: 500);
+ // border-width: rem(1px);
+ // }
+ //
+ // color: var-get($theme, 'filtering-row-text-color');
+ //
+ // .igx-input-group__bundle,
+ // .igx-input-group__bundle-start,
+ // .igx-input-group__bundle-end,
+ // .igx-input-group__input {
+ // border: 0 !important;
+ //
+ // @if $variant != 'fluent' {
+ // box-shadow: none !important;
+ // }
+ // }
+ //
+ // .igx-input-group__bundle-main,
+ // .igx-input-group__bundle-start,
+ // .igx-input-group__bundle-end {
+ // margin: 0 !important;
+ // }
+ //
+ // .igx-input-group__bundle,
+ // .igx-input-group__bundle-start,
+ // .igx-input-group__bundle-end,
+ // igx-prefix,
+ // igx-suffix {
+ // background: transparent !important;
+ // border-radius: 0;
+ // }
+ // }
+ //
+ // .igx-input-group__line {
+ // display: none;
+ // }
+ //
+ // igx-prefix:focus {
+ // color: color(map.get($theme, 'palette'), 'secondary');
+ // }
+ //
+ // igx-suffix {
+ // igx-icon {
+ // outline-style: none;
+ //
+ // &:focus {
+ // color: color($color: 'secondary');
+ // }
+ //
+ // + igx-icon {
+ // margin-inline-start: rem(4px);
+ // }
+ // }
+ // }
+ // }
+ // }
+ //
+ // igx-grid,
+ // igx-hierarchical-grid,
+ // igx-pivot-grid,
+ // igx-tree-grid {
+ // @if $variant == 'material' {
+ // @if $theme-variant == 'light' {
+ // --igx-chip-disabled-text-color: #{color($color: 'gray', $variant: 500)};
+ // --igx-chip-disabled-background: #{color($color: 'gray', $variant: 300)};
+ // --igx-chip-disabled-border-color: #{color($color: 'gray', $variant: 300)};
+ // }
+ // @if $theme-variant == 'dark' {
+ // --igx-chip-disabled-text-color: #{color($color: 'gray', $variant: 300)};
+ // --igx-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
+ // --igx-chip-disabled-border-color: #{color($color: 'gray', $variant: 200)};
+ // }
+ // }
+ //
+ // @if $variant == 'fluent' {
+ // @if $theme-variant == 'dark' {
+ // --igx-chip-disabled-text-color: #{color($color: 'gray', $variant: 400)};
+ // --igx-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
+ // --igx-chip-disabled-border-color: #{color($color: 'gray', $variant: 200)};
+ // }
+ // }
+ //
+ // @if $variant == 'bootstrap' {
+ // @if $theme-variant == 'dark' {
+ // --igx-chip-disabled-text-color: #{color($color: 'gray', $variant: 400)};
+ // --igx-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
+ // --igx-chip-disabled-border-color: #{color($color: 'gray', $variant: 200)};
+ // }
+ // }
+ //
+ // @if $variant == 'indigo' {
+ // @if $theme-variant == 'light' {
+ // --igx-chip-disabled-text-color: #{color($color: 'gray', $variant: 500)};
+ // --igx-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
+ // --igx-chip-disabled-border-color: #{color($color: 'gray', $variant: 300)};
+ // }
+ // @if $theme-variant == 'dark' {
+ // --igx-chip-disabled-text-color: #{color($color: 'gray', $variant: 300)};
+ // --igx-chip-disabled-background: #{color($color: 'gray', $variant: 200)};
+ // --igx-chip-disabled-border-color: #{color($color: 'gray', $variant: 200)};
+ // }
+ // }
+ // }
+ //
+ // %disable-focus-styles {
+ // outline: 0;
+ // }
+ //
+ // %grid-host {
+ // @include sizable();
+ //
+ // --component-size: var(--ig-size, var(--ig-size-large));
+ // --grid-size: var(--component-size);
+ // }
+ //
+ // %grid-display {
+ // --header-size: #{sizable(
+ // map.get($grid-header-height, 'compact'),
+ // map.get($grid-header-height, 'cosy'),
+ // map.get($grid-header-height, 'comfortable')
+ // )};
+ //
+ // --grouparea-size: #{sizable(
+ // map.get($grouparea-min-height, 'compact'),
+ // map.get($grouparea-min-height, 'cosy'),
+ // map.get($grouparea-min-height, 'comfortable')
+ // )};
+ //
+ // --igx-tree-indent-size: #{sizable(rem(12px), rem(16px), rem(24px))};
+ //
+ // contain: inline-size;
+ // position: relative;
+ // display: grid;
+ // grid-template-rows: auto auto auto 1fr auto auto;
+ // grid-template-columns: 100%;
+ // overflow: hidden;
+ // box-shadow: $grid-shadow;
+ //
+ // @if $variant == 'fluent' {
+ // box-shadow: 0 0 0 rem(1px) var-get($theme, 'grid-border-color');
+ // }
+ //
+ // outline-style: none;
+ // z-index: 1;
+ //
+ // %cbx-display {
+ // min-width: $cbx-size;
+ //
+ // @if $variant == 'material' {
+ // %cbx-composite-wrapper {
+ // padding: 0;
+ // }
+ //
+ // %cbx-label-pos--after {
+ // margin-inline-start: rem(12px);
+ // }
+ //
+ // %cbx-label-pos--before {
+ // margin-inline-end: rem(12px);
+ // }
+ //
+ // %cbx-label-pos--before,
+ // %cbx-label-pos--after {
+ // &:empty {
+ // margin: 0;
+ // }
+ // }
+ // }
+ // }
+ // }
+ //
+ // %grid-caption {
+ // display: flex;
+ // align-items: center;
+ // font-size: $grid-caption-fs;
+ // line-height: $grid-caption-lh;
+ // padding: $grid-caption-padding;
+ // grid-row: 1;
+ // }
+ //
+ // %grid-thead,
+ // %grid-tfoot {
+ // position: relative;
+ // display: flex;
+ // background: var-get($theme, 'header-background');
+ // color: var-get($theme, 'header-text-color');
+ // overflow: hidden;
+ // outline-style: none;
+ //
+ // %grid-row {
+ // position: relative;
+ // background: inherit;
+ // color: inherit;
+ // z-index: 2;
+ //
+ // &:hover {
+ // background: inherit;
+ // color: inherit;
+ // }
+ // }
+ //
+ // > [aria-activedescendant] {
+ // outline-style: none;
+ // }
+ // }
+ //
+ // %grid-thead {
+ // border-bottom: $grid-header-border;
+ //
+ // @if $bootstrap-theme {
+ // border-bottom-width: rem(2px);
+ // }
+ //
+ // z-index: 2;
+ //
+ // %grid__cbx-selection--push {
+ // align-items: flex-start;
+ // padding-block-start: pad-block(
+ // math.div(map.get($grid-header-height, 'compact') - rem(20px), 2),
+ // math.div(map.get($grid-header-height, 'cosy') - rem(20px), 2),
+ // math.div(map.get($grid-header-height, 'comfortable') - rem(20px), 2)
+ // );
+ // }
+ //
+ // %grid-row {
+ // border-bottom: none;
+ // }
+ // }
+ //
+ // %grid-thead-container {
+ // grid-row: 3;
+ // display: flex;
+ // overflow: hidden;
+ //
+ // %igx-grid__header-indentation {
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 3)};
+ // }
+ //
+ // @if $variant == 'indigo' {
+ // %igx-grid__group-expand-btn {
+ // color: var-get($theme, 'expand-icon-color');
+ // }
+ //
+ // %igx-grid__group-expand-btn:hover{
+ // color: var-get($theme, 'expand-icon-hover-color');
+ // }
+ // }
+ //
+ // }
+ //
+ // %igx-grid__drag-indicator {
+ // cursor: default;
+ // }
+ //
+ // %grid-row--mrl {
+ // %igx-grid__hierarchical-expander--header,
+ // %igx-grid__hierarchical-expander,
+ // %igx-grid__header-indentation,
+ // %igx-grid__row-indentation,
+ // %grid__cbx-selection {
+ // border-bottom: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ // }
+ // }
+ //
+ // &:focus-visible {
+ // outline-color: transparent;
+ // }
+ // }
+ //
+ // %grid-thead-title {
+ // flex-basis: auto !important;
+ // align-items: center !important;
+ // border-bottom: $grid-header-border;
+ // height: var(--header-size);
+ //
+ // @if $variant != 'indigo' {
+ // padding-inline: pad-inline(
+ // map.get($grid-cell-padding-inline, 'compact'),
+ // map.get($grid-cell-padding-inline, 'cosy'),
+ // map.get($grid-cell-padding-inline, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
+ //
+ // igx-icon {
+ // opacity: if($theme-variant == 'light', .75, .85);
+ //
+ // &:hover {
+ // opacity: 1;
+ // cursor: pointer;
+ // }
+ // }
+ // }
+ //
+ // padding-block: 0;
+ // }
+ //
+ // %grid-thead-title--pinned {
+ // border-inline-end: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
+ // }
+ //
+ // %grid-thead-group {
+ // display: flex;
+ // flex-flow: row nowrap;
+ // }
+ //
+ // /* We set those with position relative
+ // so that the drop indicators be scoped
+ // to their respective group. The item
+ // being the topmost element, while the
+ // subgroup encapsulates children of each
+ // thead item and group.
+ // */
+ // %grid-thead-item {
+ // display: flex;
+ // flex-flow: column nowrap;
+ //
+ // %grid-thead-group {
+ // flex: 1 1 auto;
+ // }
+ //
+ // %grid-cell-header {
+ // flex: 1 1 auto;
+ // }
+ //
+ // %grid-thead-title {
+ // flex: 0 0 auto;
+ // }
+ // }
+ //
+ // %grid-thead-item,
+ // %grid-thead-subgroup {
+ // position: relative;
+ // }
+ //
+ // %grid-tfoot {
+ // grid-row: 5;
+ // border-top: $grid-header-border;
+ // z-index: 10001;
+ // }
+ //
+ // %grid-footer {
+ // grid-row: 7;
+ // }
+ //
+ // %grid-display-container-thead {
+ // width: 100%;
+ // overflow: visible;
+ // }
+ //
+ // %grid-display-container-tr {
+ // width: 100%;
+ // overflow: visible;
+ // flex: 1;
+ // // needed to override the min-width of the column headers
+ // min-width: 0;
+ // }
+ //
+ // %grid-mrl-block {
+ // display: grid;
+ // background: inherit;
+ // position: relative;
+ //
+ // %grid-thead-item {
+ // display: flex;
+ // }
+ //
+ // %grid-cell-header {
+ // align-items: center;
+ // flex-grow: 1;
+ // border-bottom: $grid-header-border;
+ // }
+ //
+ // %grid-cell-display {
+ // border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
+ // border-bottom: rem(1px) solid var-get($theme, 'header-border-color');
+ // }
+ // }
+ //
+ // %grid-row--mrl {
+ // &%grid-row {
+ // border-bottom-color: transparent;
+ //
+ // @if $variant == 'indigo' {
+ // %grid-cell-display {
+ // border-inline-end: rem(1px) solid var-get($theme, 'row-border-color');
+ // border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
+ // }
+ // }
+ // }
+ //
+ // %grid__cbx-selection,
+ // %igx-grid__hierarchical-expander,
+ // %igx-grid__row-indentation,
+ // %igx-grid__drag-indicator {
+ // border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
+ // }
+ // }
+ //
+ // %grid-tbody {
+ // position: relative;
+ // background: var-get($theme, 'content-background');
+ // color: var-get($theme, 'content-text-color');
+ // overflow: hidden;
+ // z-index: 1;
+ // outline-style: none;
+ // }
+ //
+ // %grid-tbody-container {
+ // position: relative;
+ // display: flex;
+ // grid-row: 4;
+ // overflow: hidden;
+ // }
+ //
+ // %grid-tbody-message {
+ // display: flex;
+ // justify-content: center;
+ // align-items: center;
+ // height: 100%;
+ // color: var-get($theme, 'content-text-color');
+ // flex-direction: column;
+ // padding: rem(24px);
+ // }
+ //
+ // %igx-grid__loading {
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+ // height: 100%;
+ // min-height: rem(100px);
+ //
+ // > %circular-display {
+ // width: rem(50);
+ // height: rem(50);
+ // }
+ // }
+ //
+ // %grid-scroll {
+ // grid-row: 6;
+ // display: flex;
+ // flex-flow: row nowrap;
+ // width: 100%;
+ // background: var-get($theme, 'header-background');
+ // z-index: 10001;
+ // }
+ //
+ // %grid-thead-thumb {
+ // background: var-get($theme, 'header-background');
+ // border-inline-start: rem(1px) solid var-get($theme, 'header-border-color');
+ // }
+ //
+ // %grid-tfoot-thumb {
+ // position: absolute;
+ // top: 0;
+ // inset-inline-end: 0;
+ // background: var-get($theme, 'header-background');
+ // border-inline-start: rem(1px) solid var-get($theme, 'header-border-color');
+ // }
+ //
+ // %grid-tbody-scrollbar {
+ // background: var-get($theme, 'content-background');
+ // border-inline-start: rem(1px) solid var-get($theme, 'row-border-color');
+ // position: relative;
+ // }
+ //
+ // %grid-tbody-scrollbar-start {
+ // background: var-get($theme, 'header-background');
+ // }
+ //
+ // %grid-tbody-scrollbar-main {
+ // position: relative;
+ // }
+ //
+ // %grid-tbody-scrollbar-end {
+ // background: var-get($theme, 'header-background');
+ // }
+ //
+ // %grid-scroll-start {
+ // background: var-get($theme, 'header-background');
+ // }
+ //
+ // %grid-scroll-main {
+ // igx-display-container {
+ // height: 0;
+ // }
+ //
+ // igx-horizontal-virtual-helper {
+ // height: 100%;
+ // }
+ // }
+ //
+ // %grid-row {
+ // display: flex;
+ // background: var-get($theme, 'content-background');
+ // border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
+ // outline-style: none;
+ // position: relative;
+ // //background-clip: content-box !important;
+ //
+ // &:hover {
+ // background: var-get($theme, 'row-hover-background');
+ // color: var-get($theme, 'row-hover-text-color');
+ //
+ // %grid-cell--column-selected {
+ // color: var-get($theme, 'row-selected-hover-text-color');
+ // background: var-get($theme, 'row-selected-hover-background');
+ // }
+ //
+ // %grid-cell--cross-selected {
+ // color: var-get($theme, 'cell-selected-within-text-color');
+ // background: var-get($theme, 'cell-selected-within-background');
+ // }
+ // }
+ //
+ // &%igx-grid__tr--ghost {
+ // background: var-get($theme, 'row-ghost-background');
+ // color: var-get($theme, 'row-drag-color');
+ // z-index: 10002;
+ //
+ // @include css-vars((
+ // name: 'igx-grid-row',
+ // row-ghost-background: map.get($theme, 'row-ghost-background'),
+ // row-drag-color: map.get($theme, 'row-drag-color')
+ // ));
+ // }
+ // }
+ //
+ // %igx-grid__drag-indicator {
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+ //
+ // @if $variant != 'indigo' {
+ // padding-inline: pad-inline(
+ // map.get($grid-cell-padding-inline, 'compact'),
+ // map.get($grid-cell-padding-inline, 'cosy'),
+ // map.get($grid-cell-padding-inline, 'comfortable')
+ // );
+ // min-height: sizable(
+ // rem(32px),
+ // rem(40px),
+ // rem(50px)
+ // );
+ // } @else {
+ // padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
+ // min-height: sizable(
+ // rem(32px),
+ // rem(40px),
+ // rem(48px)
+ // );
+ //
+ // igx-icon {
+ // opacity: if($theme-variant == 'light', .75, .85);
+ // }
+ //
+ // &:hover {
+ // igx-icon {
+ // opacity: 1;
+ // }
+ // }
+ // }
+ //
+ // padding-block: 0;
+ // flex: 0 0 auto;
+ // background: inherit;
+ // z-index: 4;
+ // cursor: move;
+ // border-inline-end: rem(1px) solid transparent;
+ // //background-clip: border-box;
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 3)};
+ // }
+ // }
+ //
+ // %igx-grid__drag-indicator--header {
+ // border-inline-end: $grid-header-border;
+ // }
+ //
+ // %igx-grid__drag-indicator--off {
+ // color: var-get($theme, 'row-drag-color');
+ // }
+ //
+ // %igx-grid__tr--drag {
+ // opacity: .5;
+ // }
+ //
+ // %grid-row--odd {
+ // background: var-get($theme, 'row-odd-background');
+ // color: var-get($theme, 'row-odd-text-color');
+ // }
+ //
+ // %grid-row--even {
+ // background: var-get($theme, 'row-even-background');
+ // color: var-get($theme, 'row-even-text-color');
+ // }
+ //
+ // %igx-grid__tr--expanded {
+ // border-bottom: none;
+ // }
+ //
+ // %igx-grid__tr--pinned {
+ // position: relative;
+ // background: inherit;
+ // z-index: 10000;
+ //
+ // %igx-grid__hierarchical-expander--empty {
+ // border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
+ // }
+ // }
+ //
+ // %igx-grid__tr--pinned-top {
+ // border-bottom: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
+ // }
+ //
+ // %igx-grid__tr--pinned-bottom {
+ // border-top: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
+ // position: absolute;
+ // bottom: 0;
+ // }
+ //
+ // %igx-grid__td--centered {
+ // justify-content: center;
+ // }
+ //
+ // %igx-grid__td--bool {
+ // display: flex;
+ // flex-grow: 1;
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 1)};
+ // }
+ //
+ // %igx-icon--error {
+ // @if $variant == 'indigo' or $theme-variant == 'dark' {
+ // color: color($color: 'gray', $variant: 500);
+ // } @else {
+ // color: color($color: 'gray', $variant: 600);
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__td--bool-true {
+ // %igx-icon--success {
+ // color: color($color: 'gray', $variant: 700);
+ // }
+ // }
+ //
+ // %igx-grid__tr--edit {
+ // border-bottom: rem(1px) solid var-get($theme, 'edit-mode-color');
+ // position: relative;
+ //
+ // &::after {
+ // content: '';
+ // position: absolute;
+ // height: rem(1);
+ // width: 100%;
+ // top: rem(-1);
+ // inset-inline-start: 0;
+ // background: var-get($theme, 'edit-mode-color');
+ // }
+ //
+ // &%grid-row {
+ // border-bottom: rem(1px) solid var-get($theme, 'edit-mode-color');
+ // }
+ //
+ // %igx-grid__td--editing {
+ // border: none;
+ //
+ // %form-group-bundle--focus {
+ // caret-color: var-get($theme, 'edit-mode-color') !important;
+ // }
+ //
+ // %form-group-border {
+ // background: var-get($theme, 'edit-mode-color') !important;
+ // }
+ // }
+ //
+ // [aria-readonly='true'] {
+ // color: var-get($theme, 'cell-disabled-color');
+ //
+ // igx-icon {
+ // color: var-get($theme, 'cell-disabled-color');
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__tr--inner {
+ // display: flex;
+ // background: inherit;
+ // }
+ //
+ // %igx-grid__tr--header {
+ // display: flex;
+ // align-items: center;
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 3)};
+ // }
+ // }
+ //
+ // %igx-grid__tr--add-animate {
+ // @include animation(scale-in-ver-center .2s $ease-in-out-quad);
+ // }
+ //
+ // %grid-row--edit-mrl {
+ // &:first-of-type::after {
+ // top: 0;
+ // z-index: 5;
+ // }
+ // }
+ //
+ // %igx-grid__tr--edited {
+ // &::before {
+ // content: '';
+ // position: absolute;
+ // width: if($variant == 'indigo', rem(4px), rem(2px));
+ // height: 100%;
+ // z-index: 10000;
+ // background: var-get($theme, 'edited-row-indicator');
+ // }
+ // }
+ //
+ // %grid-row--group {
+ // position: relative;
+ // background: var-get($theme, 'header-background') !important;
+ // }
+ //
+ // %igx-grid-row--filtered {
+ // %grid-cell-text {
+ // color: var-get($theme, 'tree-filtered-text-color');
+ // }
+ //
+ // %igx-grid__tree-grouping-indicator {
+ // color: var-get($theme, 'tree-filtered-text-color');
+ //
+ // &:hover {
+ // color: var-get($theme, 'tree-filtered-text-color');
+ // }
+ // }
+ //
+ // %grid-cell--selected {
+ // %grid-cell-text {
+ // color: var-get($theme, 'tree-selected-filtered-cell-text-color');
+ // }
+ //
+ // %igx-grid__tree-grouping-indicator {
+ // color: var-get($theme, 'tree-selected-filtered-cell-text-color');
+ //
+ // &:hover {
+ // color: var-get($theme, 'tree-selected-filtered-cell-text-color');
+ // }
+ // }
+ // }
+ // }
+ //
+ // %grid-row--selected--filtered {
+ // %grid-cell-text {
+ // color: var-get($theme, 'tree-selected-filtered-row-text-color');
+ // }
+ //
+ // %igx-grid__tree-grouping-indicator {
+ // color: var-get($theme, 'tree-selected-filtered-row-text-color');
+ //
+ // &:hover {
+ // color: var-get($theme, 'tree-selected-filtered-row-text-color');
+ // }
+ // }
+ //
+ // %grid-cell--selected {
+ // %grid-cell-text {
+ // color: var-get($theme, 'tree-selected-filtered-cell-text-color');
+ // }
+ //
+ // %igx-grid__tree-grouping-indicator {
+ // color: var-get($theme, 'tree-selected-filtered-cell-text-color');
+ //
+ // &:hover {
+ // color: var-get($theme, 'tree-selected-filtered-cell-text-color');
+ // }
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__tree-grouping-indicator {
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+ // user-select: none;
+ // outline-style: none;
+ // margin-inline-end: if($variant == 'indigo', rem(4px), rem(8));
+ // cursor: pointer;
+ //
+ // color: var-get($theme, 'expand-icon-color');
+ //
+ // &:hover {
+ // color: var-get($theme, 'expand-icon-hover-color')
+ // }
+ //
+ // [dir='rtl'] & {
+ // transform: scaleX(-1);
+ // }
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 3)};;
+ // }
+ // }
+ //
+ // %igx-grid__tree-loading-indicator {
+ // width: rem(24px, 16px);
+ // height: rem(24px, 16px);
+ // margin-inline-end: rem(8px, 16px);
+ //
+ // %circular-outer {
+ // stroke: var-get($theme, 'expand-icon-color');
+ // }
+ //
+ // > %circular-display {
+ // width: rem(24);
+ // height: rem(24);
+ // }
+ // }
+ //
+ // %grid-cell-display {
+ // position: relative;
+ // display: flex;
+ // flex: 1 1 0%;
+ // align-items: center;
+ // outline-style: none;
+ //
+ // @extend %cell-input-overrides;
+ //
+ // igx-input-group {
+ // background: transparent;
+ // }
+ //
+ // @if $variant != 'indigo' {
+ // padding-inline: pad-inline(
+ // map.get($grid-cell-padding-inline, 'compact'),
+ // map.get($grid-cell-padding-inline, 'cosy'),
+ // map.get($grid-cell-padding-inline, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
+ // }
+ //
+ // padding-block: 0;
+ // color: inherit;
+ // text-align: start;
+ // //background-clip: border-box !important;
+ //
+ // @if $variant != 'indigo' {
+ // font-size: $grid-cell-fs;
+ // line-height: $grid-cell-lh;
+ // min-height: sizable(
+ // rem(32px),
+ // rem(40px),
+ // rem(50px)
+ // );
+ // } @else {
+ // @include type-style('detail-1', false);
+ //
+ // min-height: sizable(
+ // rem(32px),
+ // rem(40px),
+ // rem(48px)
+ // );
+ // }
+ // }
+ //
+ // // This is no longer being extended and is left
+ // // here for reference purposes only. It seems setting
+ // // overflow: hidden on the cell prevents drag and selection
+ // // of the cell.
+ // // See github issue #9821
+ // %igx-grid__td--tree-cell {
+ // overflow: hidden;
+ // }
+ //
+ // %grid-cell-text {
+ // @include ellipsis();
+ //
+ // pointer-events: none;
+ // }
+ //
+ // %grid-cell--fixed-width {
+ // flex-grow: 0;
+ // outline-style: none;
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 3)};
+ // }
+ // }
+ //
+ // %grid-cell--active {
+ // box-shadow: inset 0 0 0 rem(1px) var-get($theme, 'cell-active-border-color');
+ //
+ // > %igx-grid__filtering-cell,
+ // > %grid-cell-header {
+ // border-inline-end-color: var-get($theme, 'cell-active-border-color');
+ // border-bottom-color: var-get($theme, 'cell-active-border-color');
+ // }
+ // }
+ //
+ // %grid-cell--invalid {
+ // padding-inline-end: rem(4px) !important;
+ //
+ // > igx-icon {
+ // color: color($color: 'error');
+ // width: var(--igx-icon-size, rem(18px));
+ // height: var(--igx-icon-size, rem(18px));
+ // font-size: var(--igx-icon-size, rem(18px));
+ // }
+ //
+ // %grid-cell-text {
+ // width: 100%;
+ // }
+ //
+ // .igx-input-group__bundle {
+ // &:focus-within {
+ // &::after {
+ // border: none !important;
+ // }
+ // }
+ // }
+ // }
+ //
+ // %grid-cell--valid {
+ // box-shadow: inset 0 0 0 rem(2px) color($color: 'success') !important;
+ // }
+ //
+ // %grid-cell--pinned-selected,
+ // %grid-cell--selected {
+ // color: var-get($theme, 'cell-selected-text-color');
+ // background: var-get($theme, 'cell-selected-background');
+ // // this is causing an issue https://github.com/IgniteUI/igniteui-angular/issues/4981
+ // // border-bottom: 0;
+ //
+ // %igx-grid__tree-grouping-indicator {
+ // &:hover {
+ // color: var-get($theme, 'cell-selected-text-color');
+ // }
+ // }
+ // }
+ //
+ // %grid-row--selected {
+ // color: var-get($theme, 'row-selected-text-color');
+ // background: var-get($theme, 'row-selected-background');
+ //
+ // %grid-cell--selected,
+ // %grid-cell--pinned-selected {
+ // color: var-get($theme, 'cell-selected-within-text-color');
+ // background: var-get($theme, 'cell-selected-within-background');
+ // }
+ //
+ // &:hover {
+ // background: var-get($theme, 'row-selected-hover-background');
+ // color: var-get($theme, 'row-selected-hover-text-color');
+ //
+ // %grid-cell--column-selected {
+ // color: var-get($theme, 'row-selected-hover-text-color');
+ // background: var-get($theme, 'row-selected-hover-background');
+ // }
+ // }
+ //
+ // %igx-grid__tree-grouping-indicator {
+ // color: var-get($theme, 'row-selected-text-color');
+ //
+ // &:hover {
+ // color: var-get($theme, 'row-selected-text-color');
+ // }
+ // }
+ // }
+ //
+ // %grid-cell--column-selected {
+ // color: var-get($theme, 'row-selected-text-color');
+ // background: var-get($theme, 'row-selected-background');
+ // }
+ //
+ // %grid-cell--cross-selected {
+ // color: var-get($theme, 'cell-selected-within-text-color');
+ // background: var-get($theme, 'cell-selected-within-background');
+ // }
+ //
+ // %igx-grid__td--new {
+ // color: var-get($theme, 'cell-new-color');
+ // }
+ //
+ // %igx-grid__td--edited {
+ // %grid-cell-text {
+ // font-style: italic;
+ // color: var-get($theme, 'cell-edited-value-color');
+ // padding: 0 rem(1px);
+ // }
+ // }
+ //
+ // %igx-grid__tr--merged {
+ // border-block-end: 0;
+ // }
+ //
+ // %igx-grid__tr--merged-top {
+ // position: absolute;
+ // width: 100%;
+ // }
+ //
+ // %igx-grid__td--merged {
+ // z-index: 1;
+ // grid-row: 1 / -1;
+ // }
+ //
+ // %igx-grid__td--merged-selected {
+ // color: var-get($theme, 'row-selected-text-color');
+ // background: var-get($theme, 'row-selected-background') !important;
+ // }
+ //
+ // %igx-grid__td--merged-hovered {
+ // background: var-get($theme, 'row-hover-background') !important;
+ // color: var-get($theme, 'row-hover-text-color');
+ // }
+ //
+ // %igx-grid__td--merged-selected-hovered {
+ // background: var-get($theme, 'row-selected-hover-background') !important;
+ // color: var-get($theme, 'row-selected-hover-text-color');
+ // }
+ //
+ // %igx-grid__tr--deleted {
+ // %grid-cell-text {
+ // font-style: italic;
+ // color: color(map.get($theme, 'palette'), 'error');
+ // text-decoration: line-through;
+ // }
+ // }
+ //
+ // %igx-grid__tr--disabled {
+ // %grid-cell-text {
+ // color: var-get($theme, 'cell-disabled-color');
+ // }
+ // }
+ //
+ // %igx-grid__td--editing {
+ // background: var-get($theme, 'cell-editing-background') !important;
+ // box-shadow: inset 0 0 0 $editing-outline-width var-get($theme, 'edit-mode-color');
+ // padding-inline: rem(4px);
+ //
+ // &.igx-grid__td--invalid {
+ // box-shadow: inset 0 0 0 rem(2px) color($color: 'error') !important;
+ // }
+ //
+ // &%grid-cell-number {
+ // justify-content: flex-start !important;
+ // }
+ // }
+ //
+ // %grid-cell--pinned {
+ // position: relative;
+ // background: inherit;
+ // z-index: 9999;
+ // }
+ //
+ // %grid-cell--pinned--column-selected {
+ // color: var-get($theme, 'row-selected-text-color');
+ // background: var-get($theme, 'row-selected-background');
+ //
+ // &:hover {
+ // background: var-get($theme, 'row-selected-hover-background');
+ // color: var-get($theme, 'row-selected-text-color');
+ // }
+ // }
+ //
+ // %grid-cell--pinned-last {
+ // border-inline-end: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
+ //
+ // %igx-grid__filtering-cell,
+ // %grid-cell-header {
+ // border-inline-end: none;
+ // }
+ //
+ // &%grid-cell--editing {
+ // border-inline-end: map.get($cell-pin, 'style') var-get($theme, 'cell-selected-background') !important;
+ // }
+ // }
+ //
+ // %grid-cell--pinned-first {
+ // border-inline-start: map.get($cell-pin, 'style') map.get($cell-pin, 'color') !important;
+ //
+ // &%grid-cell--editing {
+ // border-inline-start: map.get($cell-pin, 'style') var-get($theme, 'cell-selected-background') !important;
+ // }
+ // }
+ //
+ // %grid-cell--row-pinned-first {
+ // overflow: hidden;
+ // }
+ //
+ // %grid-cell--pinned-chip {
+ // margin-inline-end: pad-inline(rem(4px), rem(8px), rem(12px));
+ // }
+ //
+ // %grid-cell-header {
+ // flex-flow: row nowrap;
+ // justify-content: space-between;
+ // align-items: flex-end;
+ //
+ // @if $variant != 'indigo' {
+ // font-size: $grid-head-fs;
+ // font-weight: $grid-head-fw;
+ //
+ // padding-inline: pad-inline(
+ // map.get($grid-header-padding-inline, 'compact'),
+ // map.get($grid-header-padding-inline, 'cosy'),
+ // map.get($grid-header-padding-inline, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
+ // }
+ //
+ // min-width: 0;
+ // padding-block: 0;
+ // border-inline-end: $grid-header-border;
+ // min-height: var(--header-size);
+ // outline-style: none;
+ // overflow: hidden;
+ // transition: color 250ms ease-in-out;
+ // }
+ //
+ // %grid-cell-header--filtering {
+ // background: var-get($theme, 'filtering-header-background');
+ // color: var-get($theme, 'filtering-header-text-color');
+ // z-index: 3;
+ // }
+ //
+ // %grid-cell-header-title {
+ // @include ellipsis();
+ //
+ // @if $variant != 'indigo' {
+ // font-weight: $grid-header-weight;
+ // } @else {
+ // @include type-style('detail-2', false);
+ // }
+ //
+ // min-width: 3ch;
+ // user-select: none;
+ // cursor: initial;
+ // flex-grow: 1; /* hey IE, the text should take most of the space */
+ // // align-self: flex-end; /* commenting out for now on external request */
+ // line-height: var(--header-size);
+ // transition: color 250ms ease-in-out;
+ // }
+ //
+ // %grid-cell-header-icons {
+ // display: inline-flex;
+ // align-items: center;
+ // justify-content: flex-end;
+ // user-select: none;
+ // min-width: rem(30px); /* sort-icon + filter icon width */
+ // height: var(--header-size);
+ // align-self: flex-end;
+ //
+ // &:empty {
+ // min-width: 0;
+ // }
+ //
+ // .sort-icon {
+ // position: relative;
+ // display: flex;
+ //
+ //
+ // @if $variant != 'indigo' {
+ // igx-icon {
+ // --size: var(--igx-icon-size, #{rem(15px)});
+ // }
+ // }
+ //
+ // &::after {
+ // content: attr(data-sortIndex);
+ // position: absolute;
+ // top: rem(-5px);
+ // inset-inline-end: rem(-1px);
+ // font-size: rem(10px);
+ // text-align: end;
+ // font-family: sans-serif;
+ // line-height: rem(10px);
+ // }
+ // }
+ // }
+ //
+ // %igx-grid-th__expander {
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+ // margin-inline-end: rem(8px);
+ // cursor: pointer;
+ //
+ // igx-icon {
+ // @if $variant == 'indigo' {
+ // --component-size: 2;
+ // }
+ //
+ // color: var-get($theme, 'expand-icon-color');
+ // }
+ //
+ // &:hover {
+ // igx-icon {
+ // color: var-get($theme, 'expand-icon-hover-color');
+ // }
+ // }
+ // }
+ //
+ // %igx-grid-th__group-title {
+ // @include ellipsis();
+ //
+ // @if $variant == 'indigo' {
+ // @include type-style('detail-2', false);
+ // }
+ // }
+ //
+ // %igx-grid-th--collapsible {
+ // justify-content: normal;
+ // }
+ //
+ // %igx-grid-th--selectable {
+ // @if $variant != 'indigo' {
+ // opacity: if($theme-variant == 'light', .75, .85);
+ //
+ // &%grid__drag-ghost-image {
+ // opacity: 1;
+ // }
+ // } @else {
+ // opacity: 1;
+ // }
+ //
+ // .sort-icon {
+ // color: var-get($theme, 'header-selected-text-color');
+ //
+ // ::after {
+ // background: var-get($theme, 'header-selected-background');
+ // }
+ // }
+ // }
+ //
+ // // TODO, remove igx-banner__row extra div if possible
+ // @if $variant {
+ // %igx-banner__row {
+ // display: contents;
+ // }
+ // }
+ //
+ // %igx-grid-th--selected {
+ // .sort-icon::after {
+ // background: var-get($theme, 'header-selected-background');
+ // }
+ // }
+ //
+ // %igx-grid-th--selectable,
+ // %igx-grid-th--selected {
+ // color: var-get($theme, 'header-selected-text-color');
+ // background: var-get($theme, 'header-selected-background');
+ //
+ // &%igx-grid-th--sorted {
+ // .sort-icon {
+ // color: var-get($theme, 'header-selected-text-color');
+ //
+ // > igx-icon {
+ // color: inherit;
+ // }
+ //
+ // &:focus,
+ // &:hover {
+ // color: var-get($theme, 'header-selected-text-color');
+ //
+ // > igx-icon {
+ // color: inherit;
+ // }
+ // }
+ // }
+ // }
+ //
+ // @if $variant == 'indigo' {
+ // %grid-excel-icon--filtered,
+ // %grid-excel-icon {
+ // color: var-get($theme, 'header-selected-text-color');
+ //
+ // igx-icon {
+ // color: var-get($theme, 'header-selected-text-color');
+ // }
+ //
+ // &:focus,
+ // &:hover {
+ // color: var-get($theme, 'header-selected-text-color');
+ //
+ // igx-icon {
+ // color: var-get($theme, 'header-selected-text-color');
+ // }
+ // }
+ // }
+ // }
+ // }
+ //
+ // %igx-grid-th--active {
+ // @extend %grid-cell--active;
+ //
+ // %igx-grid-th--selected,
+ // %igx-grid-th--selectable {
+ // @extend %grid-cell--active;
+ // }
+ // }
+ //
+ // %igx-grid-summary--active {
+ // @extend %grid-cell--active !optional;
+ // }
+ //
+ // %igx-grid-th--sortable {
+ // .sort-icon {
+ // cursor: pointer;
+ // opacity: if($variant == 'indigo', if($theme-variant == 'light', .75, .85), .7);
+ //
+ // &:hover {
+ // opacity: 1;
+ // }
+ // }
+ // }
+ //
+ // %igx-grid-th--sorted {
+ // .sort-icon {
+ // opacity: 1;
+ // color: var-get($theme, 'sorted-header-icon-color');
+ //
+ // > igx-icon {
+ // color: inherit;
+ // }
+ //
+ // &:hover {
+ // color: var-get($theme, 'sortable-header-icon-hover-color');
+ //
+ // > igx-icon {
+ // color: inherit;
+ // }
+ // }
+ // }
+ // }
+ //
+ // %igx-grid-th--filtrable {
+ // %grid-cell-header-title {
+ // @if $variant != 'indigo' {
+ // opacity: .7;
+ // }
+ // }
+ // }
+ //
+ // %igx-grid-th--filtrable-sortable {
+ // .sort-icon {
+ // cursor: pointer;
+ // opacity: if($variant == 'indigo', 1, .7);
+ //
+ // &:hover {
+ // opacity: 1;
+ // }
+ // }
+ // }
+ //
+ // %grid-excel-icon--filtered,
+ // %grid-excel-icon,
+ // .sort-icon {
+ // transition: all 250ms ease-in-out;
+ // }
+ //
+ // %grid-cell-number {
+ // text-align: $grid-cell-align-num;
+ // justify-content: flex-end;
+ // flex-grow: 1;
+ //
+ // %grid-cell-header-icons {
+ // justify-content: flex-start;
+ // order: -1;
+ //
+ // .sort-icon {
+ // order: 1;
+ // }
+ // }
+ // }
+ //
+ // %grid__cbx-selection {
+ // display: flex;
+ // justify-content: center;
+ // align-items: center;
+ // background: inherit;
+ // z-index: 4;
+ // //background-clip: border-box;
+ // }
+ //
+ // %cbx-padding {
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+ // padding-inline: pad-inline($cbx-padding-compact, $cbx-padding-cosy, $cbx-padding);
+ // }
+ //
+ // %grid__resize-handle {
+ // position: absolute;
+ // width: rem(4px);
+ // top: 0;
+ // inset-inline-end: rem(-2px);
+ // height: 100%;
+ // z-index: 2;
+ // }
+ //
+ // %grid__resize-line {
+ // position: absolute;
+ // cursor: col-resize;
+ // width: rem(4px);
+ // background: var-get($theme, 'resize-line-color');
+ // z-index: 2;
+ //
+ // &::before,
+ // &::after {
+ // position: absolute;
+ // content: '';
+ // height: 100%;
+ // width: rem(96px);
+ // }
+ //
+ // &::before {
+ // inset-inline-end: 100%;
+ // }
+ //
+ // &::after {
+ // inset-inline-start: 100%;
+ // }
+ // }
+ //
+ // %grid-summaries {
+ // display: flex;
+ // overflow: hidden;
+ // outline-style: none;
+ // background-color: var-get($theme, 'summaries-patch-background');
+ // }
+ //
+ // %grid-summaries--body {
+ // --summaries-patch-background: var(--ig-gray-100);
+ //
+ // border-bottom: rem(1px) dashed var-get($theme, 'row-border-color');
+ // background-color: var-get($theme, 'summaries-patch-background');
+ //
+ // &:last-of-type {
+ // border-bottom: none;
+ // }
+ //
+ // .igx-grid-summary {
+ // --background-color: inherit;
+ // --result-color: #{adaptive-contrast(var(--background-color))};
+ // }
+ // }
+ //
+ // %grid-summaries-patch {
+ // position: relative;
+ // background: inherit;
+ // border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
+ // z-index: 1;
+ //
+ // @if $variant == 'indigo' {
+ // border-top: rem(1px) solid var-get($theme, 'header-border-color');
+ // }
+ // }
+ //
+ // // Column moving
+ // %igx-grid-th__drop-indicator-left,
+ // %igx-grid-th__drop-indicator-right {
+ // position: absolute;
+ // width: rem(1px);
+ // height: 100%;
+ // top: 0;
+ // z-index: 1;
+ // }
+ //
+ // %igx-grid-th__drop-indicator-left {
+ // inset-inline-start: rem(-1px);
+ // }
+ //
+ // %igx-grid-th__drop-indicator-right {
+ // inset-inline-end: rem(-1px);
+ // }
+ //
+ // %igx-grid-th__drop-indicator--active {
+ // &%igx-grid-th__drop-indicator-left,
+ // &%igx-grid-th__drop-indicator-right {
+ // border-inline-end: rem(1px) solid var-get($theme, 'drop-indicator-color');
+ // }
+ //
+ // &::after,
+ // &::before {
+ // position: absolute;
+ // content: '';
+ // width: 0;
+ // height: 0;
+ // border-style: solid;
+ // inset-inline-start: rem(-3px);
+ // }
+ //
+ // &::before {
+ // bottom: 0;
+ // border-width: 0 rem(4px) rem(4px);
+ // border-color: transparent transparent var-get($theme, 'drop-indicator-color');
+ // }
+ //
+ // &::after {
+ // top: 0;
+ // border-width: rem(4px) rem(4px) 0;
+ // border-color: var-get($theme, 'drop-indicator-color') transparent transparent;
+ // }
+ // }
+ //
+ // %grid__scroll-on-drag-left,
+ // %grid__scroll-on-drag-right {
+ // position: absolute;
+ // width: rem(15px);
+ // top: 0;
+ // height: 100%;
+ // z-index: 25;
+ // }
+ //
+ // %grid__scroll-on-drag-left {
+ // inset-inline-start: 0;
+ // }
+ //
+ // %grid__scroll-on-drag-right {
+ // inset-inline-end: 0;
+ // }
+ //
+ // %grid__scroll-on-drag-pinned {
+ // position: absolute;
+ // width: rem(15px);
+ // height: 100%;
+ // top: 0;
+ // z-index: 25;
+ // }
+ //
+ // %grid__drag-ghost-image {
+ // position: absolute;
+ // display: flex;
+ // align-items: center;
+ // background: var-get($theme, 'ghost-header-background');
+ // color: var-get($theme, 'ghost-header-text-color');
+ // min-width: rem(168px);
+ // max-width: rem(320px);
+ // height: var(--header-size);
+ // min-height: var(--header-size);
+ // top: rem(-99999px);
+ // inset-inline-start: rem(-99999px);
+ // border: none;
+ // box-shadow: var-get($theme, 'drag-elevation');
+ // overflow: hidden;
+ // z-index: 20;
+ //
+ // %grid-cell-header-title {
+ // @include ellipsis();
+ // flex: 1 0 0;
+ // text-align: if($variant == 'indigo', start, end);
+ // }
+ //
+ // %grid-cell-header-icons {
+ // display: none;
+ // }
+ //
+ // %grid-thead-title {
+ // border: none;
+ // }
+ // }
+ //
+ // %grid__drag-ghost-image-icon {
+ // color: var-get($theme, 'ghost-header-icon-color');
+ // margin-inline-end: if($variant == 'indigo', rem(8px), rem(12px));
+ // }
+ //
+ // %grid__drag-ghost-image-icon-group {
+ // color: var-get($theme, 'ghost-header-icon-color');
+ // padding: $padding-comfortable;
+ // padding-inline-end: 0;
+ // margin-inline-end: rem(8);
+ // }
+ //
+ // %igx-grid__drag-col-header {
+ // background: var-get($theme, 'header-background');
+ //
+ // %grid-cell-header {
+ // > * {
+ // opacity: .4;
+ // }
+ // }
+ // }
+ //
+ // // Group by section
+ // %igx-grid__group-row {
+ // background: var-get($theme, 'group-row-background');
+ // display: flex;
+ // outline-style: none;
+ // border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
+ // min-height: var(--header-size);
+ //
+ // %igx-grid__drag-indicator {
+ // cursor: default;
+ // flex-grow: 0;
+ // }
+ //
+ // %grid__cbx-selection {
+ // background: initial;
+ // }
+ // }
+ //
+ // %igx-grid__group-row--active {
+ // background: var-get($theme, 'group-row-selected-background');
+ // @extend %grid-cell--active !optional;
+ //
+ // %igx-grid__grouping-indicator {
+ // color: var-get($theme, 'expand-icon-color');
+ // }
+ //
+ // %igx-grid__drag-indicator {
+ // border: rem(1px) solid var-get($theme, 'cell-active-border-color');
+ // border-inline-start-width: 0;
+ // border-inline-end-width: 0;
+ // box-shadow: inset rem(1px) 0 0 0 var-get($theme, 'cell-active-border-color');
+ // }
+ //
+ // &:hover {
+ // background: var-get($theme, 'group-row-selected-background');
+ // }
+ // }
+ //
+ // %igx-group-label {
+ // display: flex;
+ // align-items: center;
+ // justify-content: flex-start;
+ // line-height: rem(16px);
+ // gap: rem(4px);
+ // }
+ //
+ // %igx-group-label__icon {
+ // @at-root igx-icon#{&} {
+ // --component-size: #{if($variant == 'indigo', 2, 1)};
+ //
+ // color: var-get($theme, 'group-label-icon');
+ // user-select: none;
+ // }
+ // }
+ //
+ // %igx-group-label__column-name {
+ // @if $variant != 'indigo' {
+ // font-weight: 600;
+ // font-size: rem(12px);
+ // } @else {
+ // @include type-style('detail-2', false);
+ // }
+ //
+ // color: var-get($theme, 'group-label-column-name-text');
+ //
+ // }
+ //
+ //
+ // %igx-group-label__count-badge {
+ // --background-color: #{var-get($theme, 'group-count-background')};
+ // --text-color: #{var-get($theme, 'group-count-text-color')};
+ //
+ // @if $variant == 'indigo' {
+ // --shadow: none;
+ // }
+ //
+ // > span {
+ // font-size: $grid-head-fs;
+ // }
+ // }
+ //
+ //
+ // %igx-group-label__text {
+ // @if $variant != 'indigo' {
+ // font-size: rem(13px);
+ // } @else {
+ // @include type-style('detail-1', false);
+ // }
+ // color: var-get($theme, 'group-label-text')
+ // }
+ //
+ // [dir='rtl'] {
+ // %igx-group-label {
+ // > * {
+ // margin-inline-start: rem(4px);
+ //
+ // &:last-child {
+ // margin-inline-start: 0;
+ // }
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__group-content {
+ // display: flex;
+ // align-items: center;
+ // justify-content: flex-start;
+ // flex: 1 1 auto;
+ // @if $variant != 'indigo' {
+ // padding-inline-start: pad-inline(
+ // map.get($grid-grouping-indicator-padding, 'compact'),
+ // map.get($grid-grouping-indicator-padding, 'cosy'),
+ // map.get($grid-grouping-indicator-padding, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline-start: 0;
+ // }
+ //
+ // min-height: sizable(
+ // map.get($grid-header-height, 'compact'),
+ // map.get($grid-header-height, 'cosy'),
+ // map.get($grid-header-height, 'comfortable')
+ // );
+ //
+ // &:focus {
+ // outline: transparent;
+ // }
+ // }
+ //
+ // %igx-grid__row-indentation {
+ // position: relative;
+ // display: flex;
+ // justify-content: center;
+ // align-items: center;
+ // padding-inline-start: pad-inline(
+ // map.get($grid-grouping-indicator-padding, 'compact'),
+ // map.get($grid-grouping-indicator-padding, 'cosy'),
+ // map.get($grid-grouping-indicator-padding, 'comfortable')
+ // );
+ // padding-inline-end: pad-inline(
+ // map.get($grid-grouping-indicator-padding, 'compact'),
+ // map.get($grid-grouping-indicator-padding, 'cosy'),
+ // map.get($grid-grouping-indicator-padding, 'comfortable')
+ // );
+ // border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
+ // background: inherit;
+ // z-index: 1;
+ // //background-clip: border-box;
+ //
+ // &::after {
+ // content: '';
+ // position: absolute;
+ // width: 100%;
+ // height: rem(1px);
+ // bottom: rem(-1px);
+ // inset-inline-start: 0;
+ // background: transparent;
+ // }
+ //
+ // %igx-icon-button-display {
+ // width: rem(28px);
+ // height: rem(28px);
+ // color: var-get($theme, 'expand-all-icon-color');
+ // }
+ //
+ // &:focus,
+ // &:hover {
+ // %igx-icon-button-display {
+ // color: var-get($theme, 'expand-all-icon-hover-color');
+ // }
+ // }
+ // }
+ //
+ // %igx-grid-grouparea {
+ // grid-row: 2;
+ // display: flex;
+ // align-items: center;
+ // justify-content: flex-start;
+ // flex-wrap: wrap;
+ // border-bottom: $grid-header-border;
+ // background: var-get($theme, 'grouparea-background');
+ // color: var-get($theme, 'grouparea-color');
+ // min-height: var(--grouparea-size);
+ // padding-inline: pad-inline(
+ // map.get($grouparea-padding-inline, 'compact'),
+ // map.get($grouparea-padding-inline, 'cosy'),
+ // map.get($grouparea-padding-inline, 'comfortable')
+ // );
+ // padding-block: 0;
+ // z-index: 2;
+ // height: 100%;
+ // overflow: hidden;
+ //
+ // &:focus {
+ // outline-style: none;
+ // }
+ //
+ // %igx-chip {
+ // margin-block: pad-block(rem(4px), rem(8px), rem(8px));
+ // }
+ // }
+ //
+ // %igx-grid-grouparea__connector {
+ // display: inline-flex;
+ // justify-content: center;
+ // align-items: center;
+ // margin: 0 rem(4px);
+ //
+ // igx-icon {
+ // width: var(--igx-icon-size, #{rem(16px)});
+ // height: var(--igx-icon-size, #{rem(16px)});
+ // font-size: var(--igx-icon-size, #{rem(16px)});
+ // }
+ //
+ // [dir='rtl'] & {
+ // transform: scaleX(-1);
+ // }
+ // }
+ //
+ // %igx-drop-area {
+ // display: flex;
+ // align-items: center;
+ // justify-content: flex-start;
+ // min-width: rem(80px);
+ // height: sizable(
+ // map.get($drop-area-height, 'compact'),
+ // map.get($drop-area-height, 'cosy'),
+ // map.get($drop-area-height, 'comfortable')
+ // );
+ //
+ // @if $variant != 'indigo' {
+ // padding-inline: pad-inline(
+ // map.get($grid-cell-padding-inline, 'compact'),
+ // map.get($grid-cell-padding-inline, 'cosy'),
+ // map.get($grid-cell-padding-inline, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
+ // }
+ //
+ // padding-block: 0;
+ // flex: 1 0 0%;
+ // background: var-get($theme, 'drop-area-background');
+ // border-radius: var-get($theme, 'drop-area-border-radius');
+ //
+ // %igx-drop-area__icon {
+ // color: var-get($theme, 'drop-area-icon-color');
+ // width: rem(16px);
+ // height: rem(16px);
+ // font-size: rem(16px);
+ // margin-inline-end: rem(8px);
+ // }
+ // }
+ //
+ // %igx-drop-area--hover {
+ // background: var-get($theme, 'drop-area-on-drop-background');
+ // }
+ //
+ // %igx-drop-area__text {
+ // @include ellipsis();
+ // color: var-get($theme, 'drop-area-text-color');
+ // font-size: rem(13px);
+ // }
+ //
+ // %igx-grid__grouping-indicator {
+ // position: relative;
+ // display: flex;
+ // user-select: none;
+ // justify-content: center;
+ // align-items: center;
+ // z-index: 1;
+ // cursor: pointer;
+ // padding-inline-end: if($variant == 'indigo', rem(16px), rem(12px));
+ // margin-inline-start: sizable(
+ // #{map.get($grid-grouping-indicator-padding, 'compact')},
+ // #{map.get($grid-grouping-indicator-padding, 'cosy')},
+ // #{map.get($grid-grouping-indicator-padding, 'comfortable')
+ // });
+ // min-height: var(--header-size);
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 3)};
+ //
+ // color: var-get($theme, 'expand-icon-color');
+ // }
+ //
+ // &:hover,
+ // &:focus {
+ // outline-style: none;
+ //
+ // igx-icon {
+ // color: var-get($theme, 'expand-icon-hover-color');
+ // }
+ // }
+ //
+ // [dir='rtl'] & {
+ // transform: scaleX(-1);
+ // }
+ // }
+ //
+ // %igx-grid__header-indentation {
+ // position: relative;
+ // padding-inline-end: sizable(
+ // map.get($grid-grouping-indicator-padding, 'compact'),
+ // map.get($grid-grouping-indicator-padding, 'cosy'),
+ // map.get($grid-grouping-indicator-padding, 'comfortable')
+ // );
+ // border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
+ // background: var-get($theme, 'header-background');
+ // z-index: 4;
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 3)};
+ // }
+ // }
+ //
+ // %igx-grid__group-expand-btn {
+ // position: absolute;
+ // cursor: pointer;
+ // user-select: none;
+ // inset-block-start: calc(50% - #{$indicator-icon-width} / 2);
+ // inset-inline-start: var(--indicator-inline-inset);
+ //
+ // &:hover {
+ // color: var-get($theme, 'expand-icon-hover-color');
+ // }
+ //
+ // &%igx-grid__group-expand-btn--push {
+ // inset-block-start: sizable(
+ // math.div(map.get($grid-header-height, 'compact') - $indicator-icon-width, 2),
+ // math.div(map.get($grid-header-height, 'cosy') - $indicator-icon-width, 2),
+ // math.div(map.get($grid-header-height, 'comfortable') - $indicator-icon-width, 2)
+ // );
+ // }
+ // }
+ //
+ // @for $i from 1 through 10 {
+ // $row-indentation-level: (
+ // comfortable: calc(#{$i * map.get($grid-grouping-indicator-padding, 'comfortable')} + #{$indicator-icon-width}),
+ // cosy: calc(#{$i * map.get($grid-grouping-indicator-padding, 'cosy')} + #{$indicator-icon-width}),
+ // compact: calc(#{$i * map.get($grid-grouping-indicator-padding, 'compact')} + #{$indicator-icon-width})
+ // );
+ //
+ // $level--comfortable: map.get($row-indentation-level, 'comfortable');
+ // $level--cosy: map.get($row-indentation-level, 'cosy');
+ // $level--compact: map.get($row-indentation-level, 'compact');
+ //
+ // %igx-grid__row-indentation--level-#{$i} {
+ // --indicator-inline-inset: #{sizable(
+ // map.get($grid-grouping-indicator-padding, 'compact'),
+ // map.get($grid-grouping-indicator-padding, 'cosy'),
+ // map.get($grid-grouping-indicator-padding, 'comfortable')
+ // )};
+ // padding-inline-start: pad-inline($level--compact, $level--cosy, $level--comfortable);
+ // }
+ //
+ // $indicator-padding--comfortable: #{$i * map.get($grid-grouping-indicator-padding, 'comfortable')};
+ // $indicator-padding--cosy: #{$i * map.get($grid-grouping-indicator-padding, 'cosy')};
+ // $indicator-padding--compact: #{$i * map.get($grid-grouping-indicator-padding, 'compact')};
+ //
+ // %igx-grid__group-row--padding-level-#{$i} {
+ // %igx-grid__grouping-indicator {
+ // padding-inline-start: pad-inline($indicator-padding--compact, $indicator-padding--cosy, $indicator-padding--comfortable);
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__outlet {
+ // --ig-size: var(--grid-size);
+ //
+ // z-index: 10002;
+ // position: fixed;
+ // }
+ //
+ // %igx-grid__loading-outlet {
+ // z-index: 10003;
+ //
+ // > %overlay-wrapper--modal {
+ // background: none;
+ // }
+ //
+ // %circular-display {
+ // width: rem(50);
+ // height: rem(50);
+ // }
+ // }
+ //
+ // %igx-grid__row-editing-outlet {
+ // z-index: 10000;
+ // position: absolute;
+ //
+ // %overlay-wrapper {
+ // /* Change wrapper position from 'fixed' to 'absolute' so that it is hidden when scrolled below the parent grid body content. */
+ // position: absolute;
+ // }
+ // }
+ //
+ // %igx-grid__addrow-snackbar {
+ // position: absolute;
+ // z-index: 5;
+ // bottom: rem(24px);
+ // inset-inline-start: 50%;
+ // transform: translateX(-50%);
+ // }
+ //
+ // %igx-grid__filtering-cell {
+ // display: flex;
+ // align-items: center;
+ // border-inline-end: $grid-header-border;
+ // border-top: $grid-header-border;
+ // height: var(--header-size);
+ //
+ // @if $variant != 'indigo' {
+ // padding-inline: pad-inline(
+ // map.get($grid-header-padding-inline, 'compact'),
+ // map.get($grid-header-padding-inline, 'cosy'),
+ // map.get($grid-header-padding-inline, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
+ // }
+ //
+ // padding-block: 0;
+ // overflow: hidden;
+ //
+ // igx-chips-area {
+ // transition: transform .25s $ease-out-back;
+ // flex-wrap: nowrap;
+ //
+ // .igx-filtering-chips__connector {
+ // font-size: rem(12px);
+ // text-transform: uppercase;
+ // font-weight: 600;
+ // margin: 0 rem(8px);
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__filtering-cell--selected {
+ // color: var-get($theme, 'header-selected-text-color');
+ // background: var-get($theme, 'header-selected-background');
+ // }
+ //
+ // %igx-grid__filtering-cell-indicator {
+ // position: relative;
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+ // padding-inline-end: rem(8px);
+ // margin-inline-start: rem(8px);
+ // cursor: pointer;
+ // visibility: visible;
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 1)};
+ // }
+ //
+ // %igx-badge-display {
+ // --size: #{rem(14px)};
+ // --font-size: #{rem(12px)};
+ // line-height: 0;
+ // position: absolute;
+ // inset-inline-end: 0;
+ // }
+ // }
+ //
+ // %igx-grid__filtering-cell-indicator--hidden {
+ // visibility: hidden;
+ // }
+ //
+ // %igx-grid__filtering-row {
+ // position: absolute;
+ // display: flex;
+ // width: 100%;
+ // height: $filtering-row-height;
+ // padding-inline: pad-inline($cell-padding-compact, $cell-padding-cosy, $cell-padding-comfortable);
+ // align-items: center;
+ // justify-content: space-between;
+ // background: var-get($theme, 'filtering-row-background');
+ // color: var-get($theme, 'filtering-row-text-color');
+ // inset-inline-start: 0;
+ // bottom: 0;
+ // z-index: 3;
+ //
+ // &::after {
+ // display: block;
+ // position: absolute;
+ // content: '';
+ // background: inherit;
+ // inset-inline-start: 0;
+ // inset-inline-end: 0;
+ // top: 0;
+ // bottom: 0;
+ // box-shadow: 0 rem(1px) 0 var-get($theme, 'filtering-row-background'),
+ // 0 rem(4px) rem(10px) rgba(0, 0, 0, .12);
+ // z-index: -1;
+ // }
+ //
+ // @extend %filtering-row-input-overrides !optional;
+ //
+ // igx-input-group {
+ // --ig-size: var(--grid-size) !important;
+ // }
+ //
+ // [igxIconButton] {
+ // --ig-size: 1;
+ // }
+ //
+ // @if $variant == 'bootstrap' {
+ // [igxButton] {
+ // margin: rem(4px);
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__filtering-dropdown-items {
+ // display: flex;
+ // align-items: center;
+ // }
+ //
+ // %igx-grid__filtering-dropdown-text {
+ // margin-inline-start: rem(16px);
+ // }
+ //
+ // %igx-grid__filtering-row-main {
+ // display: flex;
+ // flex: 1;
+ // overflow: hidden;
+ // max-width: calc(100% - 176px);
+ // min-width: rem(56px);
+ //
+ // igx-chips-area {
+ // transition: transform .25s $ease-out-back;
+ // flex-wrap: nowrap;
+ // margin-inline: if($variant == 'indigo', rem(12px), rem(8px));
+ // gap: rem(4px);
+ // }
+ //
+ // @if $variant != 'indigo' {
+ // igx-chip {
+ // margin: 0 rem(4px);
+ // }
+ //
+ // [igxButton] {
+ // igx-icon {
+ // position: absolute;
+ // inset-inline-start: rem(12px);
+ // // IE fix for vertical alignment
+ // top: 50%;
+ // transform: translateY(-50%);
+ // }
+ //
+ // span {
+ // margin-inline-start: rem(16px);
+ // }
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__filtering-scroll-start {
+ // &::after {
+ // @include _filtering-scroll-mask($theme, right);
+ // inset-inline-start: calc(100% + 6px);
+ // }
+ //
+ // [dir='rtl'] & {
+ // &::before {
+ // @include _filtering-scroll-mask($theme, right);
+ // inset-inline-end: calc(100% + 6px);
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__filtering-scroll-end {
+ // &::before {
+ // @include _filtering-scroll-mask($theme, left);
+ // inset-inline-end: calc(100% + 6px);
+ // }
+ //
+ // [dir='rtl'] & {
+ // &::after {
+ // @include _filtering-scroll-mask($theme, left);
+ // inset-inline-start: calc(100% + 6px);
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__filtering-scroll-start,
+ // %igx-grid__filtering-scroll-end {
+ // width: rem(24px);
+ // height: rem(24px);
+ // position: relative;
+ // overflow: visible;
+ // margin: if($variant == 'indigo', rem(12px), rem(8px));
+ // z-index: 1;
+ //
+ // [dir='rtl'] & {
+ // transform: scaleX(-1);
+ //
+ // &::after {
+ // content: initial;
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__tr--highlighted {
+ // position: relative;
+ //
+ // &::after {
+ // content: '';
+ // position: absolute;
+ // top: 0;
+ // inset-inline-start: 0;
+ // width: rem(4px);
+ // height: 100%;
+ // background: var-get($theme, 'row-highlight');
+ // z-index: 3;
+ // }
+ //
+ // %igx-grid__tr--edited {
+ // &::before {
+ // inset-inline-start: rem(4px);
+ // }
+ // }
+ //
+ // &::before {
+ // inset-inline-start: rem(4px);
+ // }
+ // }
+ //
+ // %igx-grid__tr-container {
+ // overflow: auto;
+ // width: 100%;
+ // border-bottom: rem(1px) solid var-get($theme, 'row-border-color');
+ // }
+ //
+ // %igx-grid__tr-container--active {
+ // @extend %grid-cell--active !optional;
+ // }
+ //
+ // %igx-grid__hierarchical-expander {
+ // user-select: none;
+ // background: inherit;
+ // padding-inline: pad-inline(
+ // map.get($hierarchical-grid-indent, 'compact'),
+ // map.get($hierarchical-grid-indent, 'cosy'),
+ // map.get($hierarchical-grid-indent, 'comfortable')
+ // );
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+ // cursor: pointer;
+ // z-index: 3;
+ // color: var-get($theme, 'expand-icon-color');
+ // //background-clip: border-box;
+ //
+ // &:focus {
+ // outline: none;
+ //
+ // igx-icon {
+ // color: var-get($theme, 'expand-icon-hover-color');
+ // }
+ // }
+ //
+ // &:hover {
+ // igx-icon {
+ // color: var-get($theme, 'expand-icon-hover-color');
+ // }
+ // }
+ //
+ // igx-icon {
+ // --component-size: #{if($variant == 'indigo', 2, 3)};;
+ //
+ // color: var-get($theme, 'expand-icon-color');
+ // max-width: $hierarchical-action-icon;
+ // min-width: min-content;
+ // }
+ //
+ // [dir='rtl'] & {
+ // transform: scaleX(-1);
+ // }
+ //
+ // &--empty {
+ // cursor: default;
+ // pointer-events: none;
+ // }
+ // }
+ //
+ // %igx-grid__hierarchical-expander--header {
+ // background: inherit;
+ // border-inline-end: rem(1px) solid var-get($theme, 'header-border-color');
+ // z-index: 3;
+ // //background-clip: border-box;
+ //
+ // igx-icon {
+ // display: flex;
+ // align-items: center;
+ // }
+ // }
+ //
+ // %igx-grid__hierarchical-expander--push {
+ // align-items: flex-start;
+ //
+ // igx-icon {
+ // min-height: var(--header-size);
+ // max-height: var(--header-size);
+ // }
+ // }
+ //
+ // %igx-grid__header-indentation--no-border {
+ // border-inline-end: rem(1px) solid transparent;
+ // }
+ //
+ // %igx-grid__hierarchical-indent {
+ // display: flex;
+ // margin-inline-start: pad-inline(
+ // map.get($hierarchical-indent, 'compact'),
+ // map.get($hierarchical-indent, 'cosy'),
+ // map.get($hierarchical-indent, 'comfortable')
+ // );
+ // margin-inline-end: pad-inline(
+ // map.get($hierarchical-grid-indent, 'compact'),
+ // map.get($hierarchical-grid-indent, 'cosy'),
+ // map.get($hierarchical-grid-indent, 'comfortable')
+ // );
+ // margin-block: pad-block(
+ // map.get($hierarchical-grid-indent, 'compact'),
+ // map.get($hierarchical-grid-indent, 'cosy'),
+ // map.get($hierarchical-grid-indent, 'comfortable')
+ // );
+ //
+ // &--scroll {
+ // margin-inline-end: pad-inline(
+ // map.get($hierarchical-indent-scroll, 'compact'),
+ // map.get($hierarchical-indent-scroll, 'cosy'),
+ // map.get($hierarchical-indent-scroll, 'comfortable')
+ // );
+ // }
+ // }
+ //
+ // @include excel-filtering($theme);
+ //
+ // %advanced-filtering-dialog {
+ // @if $variant == 'indigo' {
+ // $light-variant: contrast-color($color: 'gray', $variant: 900);
+ // $dark-variant: color($color: 'gray', $variant: 50);
+ // background: if($theme-variant == 'light', $light-variant, $dark-variant);
+ // } @else {
+ // background: color($color: 'surface', $variant: 500);
+ // }
+ //
+ // box-shadow: elevation(if($variant == 'indigo', if($theme-variant == 'light', 24, 23), 24));
+ //
+ // @if $variant == 'material' or $variant == 'bootstrap' {
+ // border-radius: rem(4px);
+ // }
+ //
+ // @if $variant == 'fluent' {
+ // border-radius: rem(2px);
+ // }
+ //
+ // @if $variant == 'indigo' {
+ // border-radius: rem(10px);
+ // }
+ //
+ // igx-query-builder {
+ // box-shadow: none;
+ // border: none;
+ // border-radius: inherit;
+ // }
+ //
+ // igx-query-builder-header {
+ // cursor: grab;
+ // }
+ // }
+ //
+ // %igx-grid__filtering-row-editing-buttons--small,
+ // %igx-grid__filtering-row-editing-buttons {
+ // display: flex;
+ // align-items: center;
+ //
+ // button {
+ // transition: none;
+ // }
+ // }
+ //
+ // %igx-grid__filtering-row-editing-buttons--small {
+ // button {
+ // &:not([disabled]) {
+ // igx-icon {
+ // color: var-get($theme, 'sorted-header-icon-color');
+ // }
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__tr-action {
+ // &:last-of-type {
+ // border-inline-end: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ // @if $variant != 'indigo' {
+ // min-height: sizable(
+ // rem(32px),
+ // rem(40px),
+ // rem(50px)
+ // );
+ // } @else {
+ // min-height: sizable(
+ // rem(32px),
+ // rem(40px),
+ // rem(48px)
+ // );
+ // }
+ // }
+ // }
+ //
+ // igx-child-grid-row {
+ // igx-child-grid-row {
+ // %igx-grid__tr-action {
+ // border-inline-end: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ // }
+ // }
+ // }
+ //
+ // // Pivot grid
+ // %igx-grid__pivot--super-compact {
+ // --ig-size: 1 !important;
+ // %grid-cell-display,
+ // %grid-cell-header {
+ // padding: 0 if($variant != 'indigo', rem(4px), rem(6px)) !important;
+ // min-height: rem(24px) !important;
+ // height: rem(24px);
+ // }
+ //
+ // %grid-cell-header {
+ // > * {
+ // line-height: normal;
+ // align-self: initial;
+ // max-height: 100%;
+ // }
+ // }
+ //
+ // %igx-grid__tr-pivot--row-area {
+ // padding-bottom: rem(4px);
+ // }
+ // }
+ //
+ // %grid-thead--pivot {
+ // display: flex;
+ //
+ // %grid-thead--virtualizationWrapper {
+ // border-inline-start: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ // }
+ // }
+ //
+ // %grid-thead--virtualizationWrapper {
+ // height: 100%;
+ // }
+ //
+ // %grid-thead--virtualizationContainer {
+ // overflow: visible;
+ // height: 100%;
+ // }
+ //
+ // %igx-grid__tr-pivot {
+ // display: flex;
+ // align-items: center;
+ // background: inherit;
+ // overflow: hidden;
+ // z-index: 3;
+ // height: var(--header-size);
+ //
+ // @if $variant != 'indigo' {
+ // padding-inline: pad-inline(
+ // map.get($grid-header-padding-inline, 'compact'),
+ // map.get($grid-header-padding-inline, 'cosy'),
+ // map.get($grid-header-padding-inline, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline: pad-inline(rem(8px), rem(12px), rem(16px));
+ // }
+ //
+ // padding-block: 0;
+ // //background-clip: border-box !important;
+ // border-inline-start: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ // border-bottom: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ //
+ // igx-chips-area {
+ // flex-wrap: nowrap;
+ // width: auto;
+ //
+ // > * {
+ // margin-inline-end: rem(4px);
+ // }
+ //
+ // &:last-child {
+ // margin-inline-end: 0;
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__pivot-filter-toggle {
+ // display: flex;
+ // align-items: center;
+ // justify-content: center;
+ // cursor: pointer;
+ // position: relative;
+ //
+ // > igx-badge {
+ // position: absolute;
+ // top: rem(-4px);
+ // inset-inline-start: 60%;
+ // width: rem(18px);
+ // min-width: rem(18px);
+ // height: rem(18px);
+ // font-size: rem(10px);
+ // pointer-events: none;
+ // user-select: none;
+ // }
+ // }
+ //
+ // %igx-grid__pivot-empty-chip-area {
+ // @if $variant != 'indigo' {
+ // line-height: normal;
+ // font-size: rem(14px);
+ // } @else {
+ // @include type-style('body-2');
+ //
+ // @if $theme-variant == 'light' {
+ // color: color($color: 'gray', $variant: 600);
+ // } @else {
+ // color: contrast-color($color: 'gray', $variant: 50, $opacity: .6);
+ // }
+ // }
+ //
+ // margin-inline-end: 0 !important;
+ // }
+ //
+ // %igx-grid__tr-pivot--row-area {
+ // height: auto !important;
+ // align-items: flex-end;
+ // padding-bottom: pad-block(
+ // map.get($pivot-row-aria-padding, 'compact'),
+ // map.get($pivot-row-aria-padding, 'cosy'),
+ // map.get($pivot-row-aria-padding, 'comfortable')
+ // );
+ // border-inline-start: 0;
+ // border-bottom: 0;
+ // }
+ //
+ // %igx-grid__tr-pivot--small-row-area {
+ // height: var(--header-size);
+ // align-items: flex-end;
+ //
+ // border-inline-start: 0;
+ // border-inline-end: 0;
+ // border-bottom: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ // }
+ //
+ // %igx-grid__tr-pivot--filter-container {
+ // display: flex;
+ // flex-direction: column;
+ // }
+ //
+ // %igx-grid__tr-pivot--chip_drop_indicator {
+ // width: rem(2px);
+ // background: var-get($theme, 'resize-line-color');
+ // visibility: hidden;
+ // }
+ //
+ // %igx-grid__tr-pivot--drop-row-area {
+ // flex-grow: 1;
+ // }
+ //
+ // %igx-grid__tr-pivot--filter {
+ // height: var(--header-size);
+ //
+ // border-inline-start: 0;
+ // border-inline-end: 0;
+ // border-bottom: var-get($theme, 'header-border-width') var-get($theme, 'header-border-style') var-get($theme, 'header-border-color');
+ // }
+ //
+ // %igx-grid-thead__wrapper--pivot {
+ // border-bottom: 0;
+ // }
+ //
+ // %igx-grid__tr-pivot-group {
+ // flex: 1;
+ // }
+ //
+ // %igx-grid__tr-pivot-toggle-icons {
+ // display: inline-flex !important;
+ // }
+ //
+ // %igx-grid__tr-pivot--columnDimensionLeaf {
+ // box-shadow: none;
+ //
+ // igx-grid-header {
+ // border: none;
+ // }
+ // }
+ //
+ // %igx-grid__tr-pivot--columnMultiRowSpan {
+ // igx-grid-header {
+ // > * {
+ // visibility: hidden;
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__tr-header-row {
+ // igx-pivot-row-dimension-header-group {
+ // igx-pivot-row-dimension-header {
+ // align-items: center;
+ // }
+ //
+ // @if $variant == 'indigo' {
+ // igx-icon {
+ // opacity: if($theme-variant == 'light', .75, .85);
+ //
+ // &:hover {
+ // opacity: 1;
+ // cursor: pointer;
+ // }
+ // }
+ // }
+ // }
+ //
+ // igx-pivot-row-header-group {
+ // @if $variant != 'indigo' {
+ // padding-inline-start: pad-inline(
+ // map.get($grid-header-padding-inline, 'compact'),
+ // map.get($grid-header-padding-inline, 'cosy'),
+ // map.get($grid-header-padding-inline, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline-start: pad-inline(rem(8px), rem(12px), rem(16px));
+ // }
+ //
+ // igx-pivot-row-dimension-header {
+ // align-items: center;
+ //
+ // .igx-grid-th__icons {
+ // @if $variant != 'indigo' {
+ // padding-inline-end: pad-inline(
+ // map.get($grid-header-padding-inline, 'compact'),
+ // map.get($grid-header-padding-inline, 'cosy'),
+ // map.get($grid-header-padding-inline, 'comfortable')
+ // );
+ // } @else {
+ // padding-inline-end: pad-inline(rem(8px), rem(12px), rem(16px));
+ // }
+ //
+ // align-self: center;
+ // }
+ // }
+ //
+ // &:last-of-type {
+ // igx-pivot-row-dimension-header {
+ // border-inline-end: 0;
+ // }
+ // }
+ // }
+ // }
+ //
+ // .igx-pivot-grid-row-filler__wrapper {
+ // .igx-grid-thead__wrapper {
+ // height: 100%;
+ // border-bottom: initial;
+ //
+ // .igx-grid-th {
+ // height: 100%;
+ // }
+ // }
+ // }
+ //
+ // %igx-grid__tbody-pivot-mrl-dimension {
+ // .igx-grid-th {
+ // border-bottom: none;
+ // }
+ // }
+ //
+ // // Pivot grid END
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/grid/_group-by-area-component.scss b/projects/igniteui-angular/core/src/core/styles/components/grid/_group-by-area-component.scss
index 62b91322102..911495276dd 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/grid/_group-by-area-component.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/grid/_group-by-area-component.scss
@@ -2,11 +2,11 @@
/// @access private
@mixin group-by-area {
- @include b(igx-grid-grouparea) {
- @extend %igx-grid-grouparea !optional;
-
- @include e(connector) {
- @extend %igx-grid-grouparea__connector !optional;
- }
- }
+ //@include b(igx-grid-grouparea) {
+ // @extend %igx-grid-grouparea !optional;
+ //
+ // @include e(connector) {
+ // @extend %igx-grid-grouparea__connector !optional;
+ // }
+ //}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/grid/_header-row-component.scss b/projects/igniteui-angular/core/src/core/styles/components/grid/_header-row-component.scss
index d6e8df14c32..32002595f37 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/grid/_header-row-component.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/grid/_header-row-component.scss
@@ -2,158 +2,158 @@
/// @access private
@mixin header-row {
- @include b(igx-grid-thead) {
- @extend %grid-thead-container !optional;
-
- @include e(wrapper) {
- @extend %grid-thead !optional;
-
- igx-display-container {
- @extend %grid-display-container-thead !optional;
- }
-
- &:focus {
- @extend %disable-focus-styles !optional;
- }
- }
-
- @include e(wrapper, $m: 'pivot') {
- @extend %igx-grid-thead__wrapper--pivot !optional;
- }
-
- @include e(title) {
- @extend %grid-cell-display !optional;
- @extend %grid-cell-header !optional;
- @extend %grid-thead-title !optional;
- }
-
- @include e(title, $m: pinned-last) {
- @extend %grid-thead-title--pinned !optional;
- }
-
- @include e(group) {
- @extend %grid-thead-group !optional;
- }
-
- @include e(subgroup) {
- @extend %grid-thead-subgroup !optional;
- }
-
- @include e(item) {
- @extend %grid-thead-item !optional;
- }
-
- @include e(thumb) {
- @extend %grid-thead-thumb !optional;
- }
-
- @include m(pivot) {
- @extend %grid-thead--pivot !optional;
- }
-
- @include m(virtualizationWrapper) {
- @extend %grid-thead--virtualizationWrapper !optional;
- }
-
- @include m(virtualizationContainer) {
- @extend %grid-thead--virtualizationContainer !optional;
- }
- }
-
- @include b(igx-grid-th) {
- @extend %grid-cell-display !optional;
- @extend %grid-cell-header !optional;
-
- @include e(expander) {
- @extend %igx-grid-th__expander !optional;
- }
-
- @include e(group-title) {
- @extend %igx-grid-th__group-title !optional;
- }
-
- @include e(title) {
- @extend %grid-cell-header-title !optional;
- }
-
- @include e(icons) {
- @extend %grid-cell-header-icons !optional;
- }
-
- @include e(resize-handle) {
- @extend %grid__resize-handle !optional;
- }
-
- @include e(resize-line) {
- @extend %grid__resize-line !optional;
- }
-
- @include m(collapsible) {
- @extend %igx-grid-th--collapsible !optional;
- }
-
- @include m(sortable) {
- @extend %igx-grid-th--sortable !optional;
- }
-
- @include m(selectable) {
- @extend %igx-grid-th--selectable !optional;
- }
-
- @include m(filtrable) {
- @extend %igx-grid-th--filtrable !optional;
- }
-
- @include mx(filtrable, sortable) {
- @extend %igx-grid-th--filtrable-sortable !optional;
- }
-
- @include m(sorted) {
- @extend %igx-grid-th--sorted !optional;
- }
-
- @include m(selected) {
- @extend %igx-grid-th--selected !optional;
- }
-
- @include m(active) {
- @extend %igx-grid-th--active !optional;
- }
-
- @include m(number) {
- @extend %grid-cell-number !optional;
- }
-
- @include m(pinned) {
- @extend %grid-cell--pinned !optional;
- }
-
- @include m(pinned-last) {
- @extend %grid-cell--pinned-last !optional;
- }
-
- @include m(pinned-first) {
- @extend %grid-cell--pinned-first !optional;
- }
-
- @include m(fw) {
- @extend %grid-cell--fixed-width !optional;
- }
-
- @include m(filtering) {
- @extend %grid-cell-header--filtering !optional;
- }
-
- @include e(drop-indicator-left) {
- @extend %igx-grid-th__drop-indicator-left !optional;
- }
-
- @include e(drop-indicator-right) {
- @extend %igx-grid-th__drop-indicator-right !optional;
- }
-
- @include e(drop-indicator, $m: active) {
- @extend %igx-grid-th__drop-indicator--active !optional;
- }
- }
+ //@include b(igx-grid-thead) {
+ // @extend %grid-thead-container !optional;
+ //
+ // @include e(wrapper) {
+ // @extend %grid-thead !optional;
+ //
+ // igx-display-container {
+ // @extend %grid-display-container-thead !optional;
+ // }
+ //
+ // &:focus {
+ // @extend %disable-focus-styles !optional;
+ // }
+ // }
+ //
+ // @include e(wrapper, $m: 'pivot') {
+ // @extend %igx-grid-thead__wrapper--pivot !optional;
+ // }
+ //
+ // @include e(title) {
+ // @extend %grid-cell-display !optional;
+ // @extend %grid-cell-header !optional;
+ // @extend %grid-thead-title !optional;
+ // }
+ //
+ // @include e(title, $m: pinned-last) {
+ // @extend %grid-thead-title--pinned !optional;
+ // }
+ //
+ // @include e(group) {
+ // @extend %grid-thead-group !optional;
+ // }
+ //
+ // @include e(subgroup) {
+ // @extend %grid-thead-subgroup !optional;
+ // }
+ //
+ // @include e(item) {
+ // @extend %grid-thead-item !optional;
+ // }
+ //
+ // @include e(thumb) {
+ // @extend %grid-thead-thumb !optional;
+ // }
+ //
+ // @include m(pivot) {
+ // @extend %grid-thead--pivot !optional;
+ // }
+ //
+ // @include m(virtualizationWrapper) {
+ // @extend %grid-thead--virtualizationWrapper !optional;
+ // }
+ //
+ // @include m(virtualizationContainer) {
+ // @extend %grid-thead--virtualizationContainer !optional;
+ // }
+ //}
+ //
+ //@include b(igx-grid-th) {
+ // @extend %grid-cell-display !optional;
+ // @extend %grid-cell-header !optional;
+ //
+ // @include e(expander) {
+ // @extend %igx-grid-th__expander !optional
+ // }
+ //
+ // @include e(group-title) {
+ // @extend %igx-grid-th__group-title !optional
+ // }
+ //
+ // @include e(title) {
+ // @extend %grid-cell-header-title !optional;
+ // }
+ //
+ // @include e(icons) {
+ // @extend %grid-cell-header-icons !optional;
+ // }
+ //
+ // @include e(resize-handle) {
+ // @extend %grid__resize-handle !optional;
+ // }
+ //
+ // @include e(resize-line) {
+ // @extend %grid__resize-line !optional;
+ // }
+ //
+ // @include m(collapsible) {
+ // @extend %igx-grid-th--collapsible !optional;
+ // }
+ //
+ // @include m(sortable) {
+ // @extend %igx-grid-th--sortable !optional;
+ // }
+ //
+ // @include m(selectable) {
+ // @extend %igx-grid-th--selectable !optional;
+ // }
+ //
+ // @include m(filtrable) {
+ // @extend %igx-grid-th--filtrable !optional;
+ // }
+ //
+ // @include mx(filtrable, sortable) {
+ // @extend %igx-grid-th--filtrable-sortable !optional;
+ // }
+ //
+ // @include m(sorted) {
+ // @extend %igx-grid-th--sorted !optional;
+ // }
+ //
+ // @include m(selected) {
+ // @extend %igx-grid-th--selected !optional;
+ // }
+ //
+ // @include m(active) {
+ // @extend %igx-grid-th--active !optional;
+ // }
+ //
+ // @include m(number) {
+ // @extend %grid-cell-number !optional;
+ // }
+ //
+ // @include m(pinned) {
+ // @extend %grid-cell--pinned !optional;
+ // }
+ //
+ // @include m(pinned-last) {
+ // @extend %grid-cell--pinned-last !optional;
+ // }
+ //
+ // @include m(pinned-first) {
+ // @extend %grid-cell--pinned-first !optional;
+ // }
+ //
+ // @include m(fw) {
+ // @extend %grid-cell--fixed-width !optional;
+ // }
+ //
+ // @include m(filtering) {
+ // @extend %grid-cell-header--filtering !optional;
+ // }
+ //
+ // @include e(drop-indicator-left) {
+ // @extend %igx-grid-th__drop-indicator-left !optional;
+ // }
+ //
+ // @include e(drop-indicator-right) {
+ // @extend %igx-grid-th__drop-indicator-right !optional;
+ // }
+ //
+ // @include e(drop-indicator, $m: active) {
+ // @extend %igx-grid-th__drop-indicator--active !optional;
+ // }
+ //}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/grid/_pivot-data-selector-component.scss b/projects/igniteui-angular/core/src/core/styles/components/grid/_pivot-data-selector-component.scss
index 626138e8852..da8dfd45284 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/grid/_pivot-data-selector-component.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/grid/_pivot-data-selector-component.scss
@@ -2,69 +2,69 @@
@use 'sass:string';
@mixin component() {
- @include b(igx-pivot-data-selector) {
- $this: bem--selector-to-string(&);
- @include register-component(
- $name: string.slice($this, 2, -1),
- $deps: ()
- );
-
- @extend %selector-base !optional;
-
- @include e(header) {
- @extend %selector-header !optional;
- }
-
- @include e(header-extra) {
- @extend %selector-header-extra !optional;
- }
-
- @include e(filter) {
- @extend %selector-filter !optional;
- }
-
- @include e(item) {
- @extend %selector-item !optional;
- }
-
- @include e(item-ghost) {
- @extend %selector-item-ghost !optional;
- }
-
- @include e(item-ghost, $m: no-drop) {
- @extend %selector-item-ghost--no-drop !optional;
- }
-
- @include e(item-ghost-text) {
- @extend %selector-item-ghost-text !optional;
- }
-
- @include e(item-start) {
- @extend %selector-item-start !optional;
- }
-
- @include e(item-end) {
- @extend %selector-item-end !optional;
- }
-
- @include e(item-text) {
- @extend %selector-item-text !optional;
- }
-
- @include e(action-sort) {
- @extend %selector-action-sort !optional;
- }
-
- @include e(action-filter) {
- @extend %selector-action-filter !optional;
- }
-
- @include e(action-move) {
- @extend %selector-action-move !optional;
- }
-
- @include e(action-summary) {
- @extend %selector-action-summary !optional;
- }
- }
+ //@include b(igx-pivot-data-selector) {
+ // $this: bem--selector-to-string(&);
+ // @include register-component(
+ // $name: string.slice($this, 2, -1),
+ // $deps: ()
+ // );
+ //
+ // @extend %selector-base !optional;
+ //
+ // @include e(header) {
+ // @extend %selector-header !optional;
+ // }
+ //
+ // @include e(header-extra) {
+ // @extend %selector-header-extra !optional;
+ // }
+ //
+ // @include e(filter) {
+ // @extend %selector-filter !optional;
+ // }
+ //
+ // @include e(item) {
+ // @extend %selector-item !optional;
+ // }
+ //
+ // @include e(item-ghost) {
+ // @extend %selector-item-ghost !optional;
+ // }
+ //
+ // @include e(item-ghost, $m: no-drop) {
+ // @extend %selector-item-ghost--no-drop !optional;
+ // }
+ //
+ // @include e(item-ghost-text) {
+ // @extend %selector-item-ghost-text !optional;
+ // }
+ //
+ // @include e(item-start) {
+ // @extend %selector-item-start !optional;
+ // }
+ //
+ // @include e(item-end) {
+ // @extend %selector-item-end !optional;
+ // }
+ //
+ // @include e(item-text) {
+ // @extend %selector-item-text !optional;
+ // }
+ //
+ // @include e(action-sort) {
+ // @extend %selector-action-sort !optional;
+ // }
+ //
+ // @include e(action-filter) {
+ // @extend %selector-action-filter !optional;
+ // }
+ //
+ // @include e(action-move) {
+ // @extend %selector-action-move !optional;
+ // }
+ //
+ // @include e(action-summary) {
+ // @extend %selector-action-summary !optional;
+ // }
+ //}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/grid/_pivot-data-selector-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/grid/_pivot-data-selector-theme.scss
index 71378a5f211..60fc1caf188 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/grid/_pivot-data-selector-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/grid/_pivot-data-selector-theme.scss
@@ -7,258 +7,258 @@
/// @see {mixin} css-vars
/// @param {Map} $theme - The theme used to style the component.
@mixin pivot-data-selector($theme) {
- @include css-vars($theme);
-
- $variant: map.get($theme, '_meta', 'theme');
-
- $chip-height-material: (
- comfortable: rem(22px),
- cosy: rem(20px),
- compact: rem(18px)
- );
-
- $chip-item-padding: 0 #{rem(2px)};
- $panel-padding: rem(4px, 16px);
-
- %selector-base {
- display: flex;
- flex-direction: column;
- max-width: rem(280px);
- background: var-get($theme, 'background');
- z-index: 0;
-
- > igx-input-group {
- flex: 0 1 auto;
- }
-
- igx-display-container {
- display: flex;
- flex-direction: column;
- }
-
- > igx-list {
- igx-display-container {
- padding: rem(4px);
- }
-
- igx-list-item {
- display: flex;
- min-height: rem(28px);
- }
-
- %cbx-label {
- font-size: rem(13px);
- }
- }
-
- %cbx-composite-wrapper {
- @if $variant == 'material' {
- padding: 0;
- }
- }
-
- %form-group-input--box {
- transform: none;
- }
-
- %form-group-prefix {
- @if $variant == 'material' {
- padding-inline-end: rem(16px) !important;
- }
-
- box-sizing: content-box;
- }
-
- %form-group-bundle-main--box {
- padding-top: 0 !important;
- }
-
- %igx-expanded-panel-margin {
- igx-expansion-panel[aria-expanded='true'] {
- margin-top: 0;
- margin-bottom: 0;
- }
- }
-
- %igx-expansion-panel__body {
- position: relative;
- height: rem(128px);
- font-size: rem(14px);
- padding: $panel-padding;
- overflow-y: auto;
-
- > igx-list {
- height: auto;
- }
- }
-
- %igx-expansion-panel__header-icon--start {
- margin-inline-end: rem(8px);
- }
-
- %igx-expansion-panel__header-title {
- display: flex;
-
- > h6 {
- font-size: rem(12px);
- margin-bottom: 0;
- }
- }
-
- %igx-expansion-panel__header-inner {
- background: var-get($theme, 'header-color');
- padding: $panel-padding;
-
- .dragOver & {
- background: color($color: 'gray', $variant: 300);
- box-shadow: inset 0 0 0 rem(1px) color($color: 'gray', $variant: 400);
- }
- }
- }
-
- %selector-filter {
- display: flex;
- flex-direction: column;
- overflow: hidden;
-
- igx-input-group {
- @if $variant == 'bootstrap' {
- padding: rem(4px);
- }
- }
-
- igx-list {
- display: flex;
- flex-direction: column;
- padding: rem(8px) rem(4px);
- min-height: rem(186px);
- max-height: rem(208px);
- overflow-y: auto;
- }
-
- igx-list-item {
- display: flex;
- }
-
- igx-checkbox + span {
- margin-inline-start: rem(8px);
- line-height: rem(28px);
- }
- }
-
- %selector-header,
- %selector-header-extra {
- display: flex;
- align-items: center;
- }
-
- %selector-header-extra {
- igx-icon {
- padding: 0 rem(8px);
- box-sizing: content-box;
- }
-
- %igx-chip__item {
- height: #{
- sizable(
- map.get($chip-height-material, 'compact'),
- map.get($chip-height-material, 'cosy'),
- map.get($chip-height-material, 'comfortable')
- )};
- }
-
- %igx-chip__content {
- padding: $chip-item-padding;
- }
- }
-
- %selector-item {
- display: flex;
- align-items: center;
- justify-content: space-between;
- min-height: rem(32px);
- width: 100%;
-
- .igx-drag--push & {
- padding-top: rem(32px);
- }
- }
-
- %selector-item-ghost {
- display: flex;
- align-items: center;
- justify-content: space-between;
- font-size: rem(14px);
- background: color($color: 'surface');
- min-height: rem(32px);
- height: auto;
- padding: 0 rem(2px) 0 rem(4px);
- cursor: grabbing;
- box-shadow: elevation(24);
- border: rem(1px) solid color($color: 'gray', $variant: 100);
- border-radius: border-radius(rem(2px));
- z-index: 10;
- }
-
- %selector-base,
- %selector-item-ghost {
- igx-icon {
- width: var(--ig-icon-size, #{rem(18px)});
- height: var(--ig-icon-size, #{rem(18px)});
- font-size: var(--ig-icon-size, #{rem(18px)});
- }
- }
-
- %selector-item-ghost-text {
- display: flex;
- align-items: center;
-
- igx-icon {
- margin-inline-end: rem(8px);
- }
- }
-
- %selector-item-ghost--no-drop {
- cursor: no-drop;
- }
-
- %selector-item-text {
- @include ellipsis();
- max-width: calc(100% - rem(18px) + rem(8px));
- }
-
- %selector-item-text,
- %selector-action-sort,
- %selector-action-filter,
- %selector-action-move,
- %selector-action-summary {
- user-select: none;
- }
-
- %selector-action-sort,
- %selector-action-summary,
- %selector-action-filter {
- cursor: pointer;
- }
-
- %selector-action-move {
- cursor: grab;
- }
-
- %selector-item-start {
- display: flex;
- justify-content: space-between;
- align-items: center;
- flex: 0 1 100%;
- margin-inline-end: rem(8px);
- overflow: hidden;
- }
-
- %selector-item-end {
- display: flex;
-
- igx-icon + igx-icon {
- margin-inline-start: rem(8px);
- }
- }
+ //@include css-vars($theme);
+ //
+ //$variant: map.get($theme, '_meta', 'theme');
+ //
+ //$chip-height-material: (
+ // comfortable: rem(22px),
+ // cosy: rem(20px),
+ // compact: rem(18px)
+ //);
+ //
+ //$chip-item-padding: 0 #{rem(2px)};
+ //$panel-padding: rem(4px, 16px);
+ //
+ //%selector-base {
+ // display: flex;
+ // flex-direction: column;
+ // max-width: rem(280px);
+ // background: var-get($theme, 'background');
+ // z-index: 0;
+ //
+ // > igx-input-group {
+ // flex: 0 1 auto;
+ // }
+ //
+ // igx-display-container {
+ // display: flex;
+ // flex-direction: column;
+ // }
+ //
+ // > igx-list {
+ // igx-display-container {
+ // padding: rem(4px);
+ // }
+ //
+ // igx-list-item {
+ // display: flex;
+ // min-height: rem(28px);
+ // }
+ //
+ // %cbx-label {
+ // font-size: rem(13px);
+ // }
+ // }
+ //
+ // %cbx-composite-wrapper {
+ // @if $variant == 'material' {
+ // padding: 0;
+ // }
+ // }
+ //
+ // %form-group-input--box {
+ // transform: none;
+ // }
+ //
+ // %form-group-prefix {
+ // @if $variant == 'material' {
+ // padding-inline-end: rem(16px) !important;
+ // }
+ //
+ // box-sizing: content-box;
+ // }
+ //
+ // %form-group-bundle-main--box {
+ // padding-top: 0 !important;
+ // }
+ //
+ // %igx-expanded-panel-margin {
+ // igx-expansion-panel[aria-expanded='true'] {
+ // margin-top: 0;
+ // margin-bottom: 0;
+ // }
+ // }
+ //
+ // .igx-expansion-panel__body {
+ // position: relative;
+ // height: rem(128px);
+ // font-size: rem(14px);
+ // padding: $panel-padding;
+ // overflow-y: auto;
+ //
+ // > igx-list {
+ // height: auto;
+ // }
+ // }
+ //
+ // .igx-expansion-panel__header-icon--start {
+ // margin-inline-end: rem(8px);
+ // }
+ //
+ // .igx-expansion-panel__header-title {
+ // display: flex;
+ //
+ // > h6 {
+ // font-size: rem(12px);
+ // margin-bottom: 0;
+ // }
+ // }
+ //
+ // .igx-expansion-panel__header-inner {
+ // background: var-get($theme, 'header-color');
+ // padding: $panel-padding;
+ //
+ // .dragOver & {
+ // background: color($color: 'gray', $variant: 300);
+ // box-shadow: inset 0 0 0 rem(1px) color($color: 'gray', $variant: 400);
+ // }
+ // }
+ //}
+ //
+ //%selector-filter {
+ // display: flex;
+ // flex-direction: column;
+ // overflow: hidden;
+ //
+ // igx-input-group {
+ // @if $variant == 'bootstrap' {
+ // padding: rem(4px);
+ // }
+ // }
+ //
+ // igx-list {
+ // display: flex;
+ // flex-direction: column;
+ // padding: rem(8px) rem(4px);
+ // min-height: rem(186px);
+ // max-height: rem(208px);
+ // overflow-y: auto;
+ // }
+ //
+ // igx-list-item {
+ // display: flex;
+ // }
+ //
+ // igx-checkbox + span {
+ // margin-inline-start: rem(8px);
+ // line-height: rem(28px);
+ // }
+ //}
+ //
+ //%selector-header,
+ //%selector-header-extra {
+ // display: flex;
+ // align-items: center;
+ //}
+ //
+ //%selector-header-extra {
+ // igx-icon {
+ // padding: 0 rem(8px);
+ // box-sizing: content-box;
+ // }
+ //
+ // %igx-chip__item {
+ // height: #{
+ // sizable(
+ // map.get($chip-height-material, 'compact'),
+ // map.get($chip-height-material, 'cosy'),
+ // map.get($chip-height-material, 'comfortable')
+ // )};
+ // }
+ //
+ // %igx-chip__content {
+ // padding: $chip-item-padding;
+ // }
+ //}
+ //
+ //%selector-item {
+ // display: flex;
+ // align-items: center;
+ // justify-content: space-between;
+ // min-height: rem(32px);
+ // width: 100%;
+ //
+ // .igx-drag--push & {
+ // padding-top: rem(32px);
+ // }
+ //}
+ //
+ //%selector-item-ghost {
+ // display: flex;
+ // align-items: center;
+ // justify-content: space-between;
+ // font-size: rem(14px);
+ // background: color($color: 'surface');
+ // min-height: rem(32px);
+ // height: auto;
+ // padding: 0 rem(2px) 0 rem(4px);
+ // cursor: grabbing;
+ // box-shadow: elevation(24);
+ // border: rem(1px) solid color($color: 'gray', $variant: 100);
+ // border-radius: border-radius(rem(2px));
+ // z-index: 10;
+ //}
+ //
+ //%selector-base,
+ //%selector-item-ghost {
+ // igx-icon {
+ // width: var(--ig-icon-size, #{rem(18px)});
+ // height: var(--ig-icon-size, #{rem(18px)});
+ // font-size: var(--ig-icon-size, #{rem(18px)});
+ // }
+ //}
+ //
+ //%selector-item-ghost-text {
+ // display: flex;
+ // align-items: center;
+ //
+ // igx-icon {
+ // margin-inline-end: rem(8px);
+ // }
+ //}
+ //
+ //%selector-item-ghost--no-drop {
+ // cursor: no-drop;
+ //}
+ //
+ //%selector-item-text {
+ // @include ellipsis();
+ // max-width: calc(100% - rem(18px) + rem(8px));
+ //}
+ //
+ //%selector-item-text,
+ //%selector-action-sort,
+ //%selector-action-filter,
+ //%selector-action-move,
+ //%selector-action-summary {
+ // user-select: none;
+ //}
+ //
+ //%selector-action-sort,
+ //%selector-action-summary,
+ //%selector-action-filter {
+ // cursor: pointer;
+ //}
+ //
+ //%selector-action-move {
+ // cursor: grab;
+ //}
+ //
+ //%selector-item-start {
+ // display: flex;
+ // justify-content: space-between;
+ // align-items: center;
+ // flex: 0 1 100%;
+ // margin-inline-end: rem(8px);
+ // overflow: hidden;
+ //}
+ //
+ //%selector-item-end {
+ // display: flex;
+ //
+ // igx-icon + igx-icon {
+ // margin-inline-start: rem(8px);
+ // }
+ //}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/highlight/highlight-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/highlight/highlight-theme.scss
index 3bc86edc412..1cbe1d99325 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/highlight/highlight-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/highlight/highlight-theme.scss
@@ -1,19 +1,22 @@
@use 'sass:map';
@use '../../base' as *;
+@use '../../../styles/themes/standalone' as *;
/// @deprecated Use the `css-vars` mixin instead.
/// @see {mixin} css-vars
/// @param {Map} $theme - The theme used to style the component.
@mixin highlight($theme) {
- @include css-vars($theme, '.igx-highlight');
+ @include layer(base) {
+ @include css-vars($theme, '.igx-highlight');
- %igx-highlight {
- color: var-get($theme, 'resting-color');
- background: var-get($theme, 'resting-background');
- }
+ %igx-highlight {
+ color: var-get($theme, 'resting-color');
+ background: var-get($theme, 'resting-background');
+ }
- %igx-highlight--active {
- color: var-get($theme, 'active-color');
- background: var-get($theme, 'active-background');
+ %igx-highlight--active {
+ color: var-get($theme, 'active-color');
+ background: var-get($theme, 'active-background');
+ }
}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/icon-button/_icon-button-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/icon-button/_icon-button-theme.scss
index f5deab5ca6b..cd27497fa99 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/icon-button/_icon-button-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/icon-button/_icon-button-theme.scss
@@ -2,379 +2,455 @@
@use 'sass:meta';
@use 'sass:list';
@use '../../base' as *;
+@use '../../../styles/themes/standalone' as *;
/// @deprecated Use the `css-vars` mixin instead.
/// @see {mixin} css-vars
/// @param {Map} $theme - The theme used to style the component.
@mixin icon-button($themes...) {
- $flat-theme: null;
- $contained-theme: null;
- $outlined-theme: null;
- $variant: 'material';
-
- $required: ('flat', 'contained', 'outlined');
- $added: ();
- $missing: ();
-
- @each $key, $theme in meta.keywords($themes) {
- $type: map.get($theme, _meta, type);
-
- $added: list.append($added, $key);
-
- @if $type == 'flat' {
- $flat-theme: $theme;
- } @else if $type == 'contained' {
- $contained-theme: $theme;
- } @else if $type == 'outlined' {
- $outlined-theme: $theme;
- }
+ @include layer(base) {
+ $flat-theme: null;
+ $contained-theme: null;
+ $outlined-theme: null;
+ $variant: 'material';
+
+ $required: ('flat', 'contained', 'outlined');
+ $added: ();
+ $missing: ();
+
+ @each $key, $theme in meta.keywords($themes) {
+ $type: map.get($theme, _meta, type);
+
+ $added: list.append($added, $key);
+
+ @if $type == 'flat' {
+ $flat-theme: $theme;
+ } @else if $type == 'contained' {
+ $contained-theme: $theme;
+ } @else if $type == 'outlined' {
+ $outlined-theme: $theme;
+ }
- $variant: map.get($theme, '_meta', 'theme');
- @include css-vars($theme);
- }
+ $variant: map.get($theme, '_meta', 'theme');
+ @include css-vars($theme);
+ }
- @each $item in $required {
- @if not(list.index($added, $item)) {
- $missing: list.append($missing, '$#{$item}', $separator: comma);
+ @each $item in $required {
+ @if not(list.index($added, $item)) {
+ $missing: list.append($missing, '$#{$item}', $separator: comma);
+ }
}
- }
- @if list.length($missing) != 0 {
- @error meta.inspect(string.unquote("Missing theme properties:") #{$missing});
- }
+ @if list.length($missing) != 0 {
+ @error meta.inspect(string.unquote("Missing theme properties:") #{$missing});
+ }
- $icon-sizes: map.get((
- 'material': rem(18px),
- 'fluent': rem(18px),
- 'bootstrap': rem(18px),
- 'indigo': rem(16px),
- ), $variant);
+ $icon-sizes: map.get(
+ (
+ 'material': rem(18px),
+ 'fluent': rem(18px),
+ 'bootstrap': rem(18px),
+ 'indigo': rem(16px),
+ ),
+ $variant
+ );
- $icon-in-button-size: $icon-sizes;
+ $icon-in-button-size: $icon-sizes;
- $items-gap: (
- comfortable: rem(9px),
- cosy: rem(6px),
- compact: rem(3px)
- );
+ $items-gap: (
+ comfortable: rem(9px),
+ cosy: rem(6px),
+ compact: rem(3px),
+ );
- $btn-indent: rem(2px);
+ $btn-indent: rem(2px);
- %igx-icon-button-display {
- @include sizable();
-
- position: relative;
- display: inline-flex;
- align-items: center;
- justify-content: center;
- cursor: pointer;
- user-select: none;
- outline-style: none;
- -webkit-tap-highlight-color: transparent;
- overflow: hidden;
- white-space: nowrap;
- transition:
- box-shadow var(--_init-transition, .2s) ease-in,
- background var(--_init-transition, .15s) ease-out;
- transition-delay: var(--_init-transition, .05s);
- min-width: unset;
- min-height: unset;
- font-size: rem(24px, 24px);
- padding: 0;
- gap: pad-inline(
- map.get($items-gap, 'compact'),
- map.get($items-gap, 'cosy'),
- map.get($items-gap, 'comfortable')
- );
+ %igx-icon-button-display {
+ @include sizable();
- igx-icon {
- --component-size: var(--ig-size, var(--ig-size-large));
- display: flex;
+ position: relative;
+ display: inline-flex;
+ align-items: center;
justify-content: center;
width: var(--ig-icon-size, #{$icon-in-button-size});
height: var(--ig-icon-size, #{$icon-in-button-size});
font-size: var(--ig-icon-size, #{$icon-in-button-size});
+
+ igx-icon {
+ --size: #{$icon-in-button-size};
+ }
+
+ &:focus-visible {
+ outline: none;
+ }
}
@if $variant == 'fluent' {
transition:
- color var(--_init-transition, .15s) ease-out,
- background var(--_init-transition, .15s) ease-out;
-
- &::after {
- position: absolute;
- content: '';
- pointer-events: none;
- inset-block-start: $btn-indent;
- inset-inline-start: $btn-indent;
- width: calc(100% - (#{$btn-indent * 2}));
- height: calc(100% - (#{$btn-indent * 2}));
+ box-shadow var(--_init-transition, 0.2s) ease-in,
+ background var(--_init-transition, 0.15s) ease-out;
+ transition-delay: var(--_init-transition, 0.05s);
+ min-width: unset;
+ min-height: unset;
+ font-size: rem(24px, 24px);
+ padding: 0;
+ gap: pad-inline(
+ map.get($items-gap, 'compact'),
+ map.get($items-gap, 'cosy'),
+ map.get($items-gap, 'comfortable')
+ );
+
+ igx-icon {
+ --component-size: 2;
+
+ display: flex;
+ justify-content: center;
}
- }
- @if $variant == 'bootstrap' {
- transition:
- box-shadow var(--_init-transition, .15s) ease-out,
- color var(--_init-transition, .15s) ease-out,
- background var(--_init-transition, .15s) ease-out;
- }
+ @if $variant == 'fluent' {
+ transition:
+ color var(--_init-transition, 0.15s) ease-out,
+ background var(--_init-transition, 0.15s) ease-out;
+
+ ::after {
+ position: absolute;
+ content: '';
+ pointer-events: none;
+ inset-block-start: $btn-indent;
+ inset-inline-start: $btn-indent;
+ width: calc(100% - (#{$btn-indent * 2}));
+ height: calc(100% - (#{$btn-indent * 2}));
+ }
+ }
- @if $variant == 'indigo' {
- transition:
- color var(--_init-transition, .15s) ease-in-out,
- box-shadow var(--_init-transition, .15s) ease-in-out,
- background var(--_init-transition, .15s) ease-in-out,
- border-color var(--_init-transition, .15s) ease-in-out;
+ @if $variant == 'bootstrap' {
+ transition:
+ box-shadow var(--_init-transition, 0.15s) ease-out,
+ color var(--_init-transition, 0.15s) ease-out,
+ background var(--_init-transition, 0.15s) ease-out;
+ }
+
+ @if $variant == 'indigo' {
+ transition:
+ color var(--_init-transition, 0.15s) ease-in-out,
+ box-shadow var(--_init-transition, 0.15s) ease-in-out,
+ background var(--_init-transition, 0.15s) ease-in-out,
+ border-color var(--_init-transition, 0.15s) ease-in-out;
+ }
}
- }
- %igx-icon-button--flat {
- --component-size: var(--ig-size, #{var-get($flat-theme, 'default-size')});
- width: var-get($flat-theme, 'size');
- height: var-get($flat-theme, 'size');
- background: var-get($flat-theme, 'background');
- color: var-get($flat-theme, 'foreground');
- border: rem(1px) solid var-get($flat-theme, 'border-color');
- border-radius: var-get($flat-theme, 'border-radius');
-
- &:hover {
- background: var-get($flat-theme, 'hover-background');
- color: var-get($flat-theme, 'hover-foreground');
+ %igx-icon-button--flat {
+ --component-size: var(
+ --ig-size,
+ #{var-get($flat-theme, 'default-size')}
+ );
+ width: var-get($flat-theme, 'size');
+ height: var-get($flat-theme, 'size');
+ background: var-get($flat-theme, 'background');
+ color: var-get($flat-theme, 'foreground');
+ border: rem(1px) solid var-get($flat-theme, 'border-color');
+ border-radius: var-get($flat-theme, 'border-radius');
+
+ &:hover {
+ background: var-get($flat-theme, 'hover-background');
+ color: var-get($flat-theme, 'hover-foreground');
+ }
+
+ @if $variant == 'material' {
+ &:active {
+ background: var-get($flat-theme, 'focus-background');
+ color: var-get($flat-theme, 'focus-foreground');
+ }
+ } @else {
+ &:active {
+ background: var-get($flat-theme, 'active-background');
+ color: var-get($flat-theme, 'active-foreground');
+ }
+ }
}
- @if $variant == 'material' {
- &:active {
- background: var-get($flat-theme, 'focus-background');
- color: var-get($flat-theme, 'focus-foreground');
+ %igx-icon-button--flat.igx-button--focused {
+ background: var-get($flat-theme, 'focus-background');
+ color: var-get($flat-theme, 'focus-foreground');
+
+ &:hover {
+ background: var-get($flat-theme, 'focus-hover-background');
+ color: var-get($flat-theme, 'focus-hover-foreground');
}
- } @else {
+
&:active {
background: var-get($flat-theme, 'active-background');
color: var-get($flat-theme, 'active-foreground');
}
- }
- }
- %igx-icon-button--flat.igx-button--focused {
- background: var-get($flat-theme, 'focus-background');
- color: var-get($flat-theme, 'focus-foreground');
+ @if $variant == 'fluent' {
+ &::after {
+ box-shadow: 0
+ 0
+ 0
+ rem(1px)
+ var-get($flat-theme, 'focus-border-color');
+ }
+ }
- &:hover {
- background: var-get($flat-theme, 'focus-hover-background');
- color: var-get($flat-theme, 'focus-hover-foreground');
- }
+ @if $variant == 'bootstrap' {
+ box-shadow: 0 0 0 rem(4px) var-get($flat-theme, 'shadow-color');
+ }
- &:active {
- background: var-get($flat-theme, 'active-background');
- color: var-get($flat-theme, 'active-foreground');
+ @if $variant == 'indigo' {
+ border-color: var-get($flat-theme, 'border-color');
+ box-shadow: 0
+ 0
+ 0
+ rem(3px)
+ var-get($flat-theme, 'focus-border-color');
+ }
}
- @if $variant == 'fluent' {
- &::after {
- box-shadow: 0 0 0 rem(1px) var-get($flat-theme, 'focus-border-color');
+ %igx-icon-button--contained {
+ --component-size: var(
+ --ig-size,
+ #{var-get($contained-theme, 'default-size')}
+ );
+ width: var-get($contained-theme, 'size');
+ height: var-get($contained-theme, 'size');
+ background: var-get($contained-theme, 'background');
+ color: var-get($contained-theme, 'foreground');
+ border: rem(1px) solid var-get($contained-theme, 'border-color');
+ border-radius: var-get($contained-theme, 'border-radius');
+
+ &:hover {
+ background: var-get($contained-theme, 'hover-background');
+ color: var-get($contained-theme, 'hover-foreground');
}
- }
- @if $variant == 'bootstrap' {
- box-shadow: 0 0 0 rem(4px) var-get($flat-theme, 'shadow-color');
+ @if $variant == 'material' {
+ &:active {
+ background: var-get($contained-theme, 'focus-background');
+ color: var-get($contained-theme, 'focus-foreground');
+ }
+ } @else {
+ &:active {
+ background: var-get($contained-theme, 'active-background');
+ color: var-get($contained-theme, 'active-foreground');
+ }
+ }
}
- @if $variant == 'indigo' {
- border-color: var-get($flat-theme, 'border-color');
- box-shadow: 0 0 0 rem(3px) var-get($flat-theme, 'focus-border-color');
- }
- }
+ %igx-icon-button--contained.igx-button--focused {
+ background: var-get($contained-theme, 'focus-background');
+ color: var-get($contained-theme, 'focus-foreground');
- %igx-icon-button--contained {
- --component-size: var(--ig-size, #{var-get($contained-theme, 'default-size')});
- width: var-get($contained-theme, 'size');
- height: var-get($contained-theme, 'size');
- background: var-get($contained-theme, 'background');
- color: var-get($contained-theme, 'foreground');
- border: rem(1px) solid var-get($contained-theme, 'border-color');
- border-radius: var-get($contained-theme, 'border-radius');
-
- &:hover {
- background: var-get($contained-theme, 'hover-background');
- color: var-get($contained-theme, 'hover-foreground');
- }
+ @if $variant != 'fluent' {
+ border-color: var-get($contained-theme, 'focus-border-color');
+ }
- @if $variant == 'material' {
- &:active {
- background: var-get($contained-theme, 'focus-background');
- color: var-get($contained-theme, 'focus-foreground');
+ &:hover {
+ background: var-get($contained-theme, 'focus-hover-background');
+ color: var-get($contained-theme, 'focus-hover-foreground');
}
- } @else {
+
&:active {
background: var-get($contained-theme, 'active-background');
color: var-get($contained-theme, 'active-foreground');
}
- }
- }
-
- %igx-icon-button--contained.igx-button--focused {
- background: var-get($contained-theme, 'focus-background');
- color: var-get($contained-theme, 'focus-foreground');
- @if $variant != 'fluent' {
- border-color: var-get($contained-theme, 'focus-border-color');
- }
-
- &:hover {
- background: var-get($contained-theme, 'focus-hover-background');
- color: var-get($contained-theme, 'focus-hover-foreground');
- }
+ @if $variant == 'fluent' {
+ &::after {
+ box-shadow: 0
+ 0
+ 0
+ rem(1px)
+ var-get($contained-theme, 'focus-border-color');
+ }
+ }
- &:active {
- background: var-get($contained-theme, 'active-background');
- color: var-get($contained-theme, 'active-foreground');
- }
+ @if $variant == 'bootstrap' {
+ box-shadow: 0
+ 0
+ 0
+ rem(4px)
+ var-get($contained-theme, 'shadow-color');
+ }
- @if $variant == 'fluent' {
- &::after {
- box-shadow: 0 0 0 rem(1px) var-get($contained-theme, 'focus-border-color');
+ @if $variant == 'indigo' {
+ border-color: var-get($contained-theme, 'border-color');
+ box-shadow: 0
+ 0
+ 0
+ rem(3px)
+ var-get($contained-theme, 'focus-border-color');
}
}
- @if $variant == 'bootstrap' {
- box-shadow: 0 0 0 rem(4px) var-get($contained-theme, 'shadow-color');
- }
+ %igx-icon-button--outlined {
+ --component-size: var(
+ --ig-size,
+ #{var-get($outlined-theme, 'default-size')}
+ );
+ width: var-get($outlined-theme, 'size');
+ height: var-get($outlined-theme, 'size');
+ background: var-get($outlined-theme, 'background');
+ color: var-get($outlined-theme, 'foreground');
+ border: rem(1px) solid var-get($outlined-theme, 'border-color');
+ border-radius: var-get($outlined-theme, 'border-radius');
- @if $variant == 'indigo' {
- border-color: var-get($contained-theme, 'border-color');
- box-shadow: 0 0 0 rem(3px) var-get($contained-theme, 'focus-border-color');
- }
- }
+ @if $variant == 'indigo' {
+ border-width: rem(2px);
- %igx-icon-button--outlined {
- --component-size: var(--ig-size, #{var-get($outlined-theme, 'default-size')});
- width: var-get($outlined-theme, 'size');
- height: var-get($outlined-theme, 'size');
- background: var-get($outlined-theme, 'background');
- color: var-get($outlined-theme, 'foreground');
- border: rem(1px) solid var-get($outlined-theme, 'border-color');
- border-radius: var-get($outlined-theme, 'border-radius');
+ &:hover,
+ &:active {
+ border-color: var-get($outlined-theme, 'foreground');
+ }
+ }
- @if $variant == 'indigo' {
- border-width: rem(2px);
+ &:hover {
+ background: var-get($outlined-theme, 'hover-background');
+ color: var-get($outlined-theme, 'hover-foreground');
- &:hover,
- &:active {
- border-color: var-get($outlined-theme, 'foreground');
+ @if $variant == 'bootstrap' {
+ border-color: var-get($outlined-theme, 'hover-background');
+ }
}
- }
- &:hover {
- background: var-get($outlined-theme, 'hover-background');
- color: var-get($outlined-theme, 'hover-foreground');
+ @if $variant == 'material' {
+ border: none;
+
+ &::after {
+ position: absolute;
+ content: '';
+ inset: 0;
+ box-shadow: inset
+ 0
+ 0
+ 0
+ rem(1px)
+ var-get($outlined-theme, 'border-color');
+ border-radius: inherit;
+ }
- @if $variant == 'bootstrap' {
- border-color: var-get($outlined-theme, 'hover-background');
+ &:active {
+ background: var-get($outlined-theme, 'focus-background');
+ color: var-get($outlined-theme, 'focus-foreground');
+ }
+ } @else {
+ &:active {
+ background: var-get($outlined-theme, 'active-background');
+ color: var-get($outlined-theme, 'active-foreground');
+
+ @if $variant == 'bootstrap' {
+ border-color: var-get(
+ $outlined-theme,
+ 'focus-border-color'
+ );
+ }
+ }
}
}
- @if $variant == 'material' {
- border: none;
+ %igx-icon-button--outlined.igx-button--focused {
+ background: var-get($outlined-theme, 'focus-background');
+ color: var-get($outlined-theme, 'focus-foreground');
+
+ @if $variant == 'material' {
+ border: none;
- &::after {
- position: absolute;
- content: '';
- inset: 0;
- box-shadow: inset 0 0 0 rem(1px) var-get($outlined-theme, 'border-color');
- border-radius: inherit;
+ &::after {
+ box-shadow: inset
+ 0
+ 0
+ 0
+ rem(1px)
+ var-get($outlined-theme, 'focus-border-color');
+ }
}
- &:active {
- background: var-get($outlined-theme, 'focus-background');
- color: var-get($outlined-theme, 'focus-foreground');
+ @if $variant != 'bootstrap' {
+ border-color: var-get($outlined-theme, 'focus-border-color');
}
- } @else {
- &:active {
- background: var-get($outlined-theme, 'active-background');
- color: var-get($outlined-theme, 'active-foreground');
+
+ &:hover {
+ background: var-get($contained-theme, 'focus-hover-background');
+ color: var-get($contained-theme, 'focus-hover-foreground');
@if $variant == 'bootstrap' {
- border-color: var-get($outlined-theme, 'focus-border-color');
+ border-color: var-get(
+ $outlined-theme,
+ 'focus-hover-background'
+ );
}
}
- }
- }
-
- %igx-icon-button--outlined.igx-button--focused {
- background: var-get($outlined-theme, 'focus-background');
- color: var-get($outlined-theme, 'focus-foreground');
- @if $variant == 'material' {
- border: none;
+ &:active {
+ background: var-get($outlined-theme, 'active-background');
+ color: var-get($outlined-theme, 'active-foreground');
- &::after {
- box-shadow: inset 0 0 0 rem(1px) var-get($outlined-theme, 'focus-border-color');
+ @if $variant == 'bootstrap' {
+ border-color: var-get(
+ $outlined-theme,
+ 'focus-border-color'
+ );
+ }
}
- }
- @if $variant != 'bootstrap' {
- border-color: var-get($outlined-theme, 'focus-border-color');
- }
-
- &:hover {
- background: var-get($contained-theme, 'focus-hover-background');
- color: var-get($contained-theme, 'focus-hover-foreground');
+ @if $variant == 'fluent' {
+ border: rem(1px) solid var-get($outlined-theme, 'border-color');
- @if $variant == 'bootstrap' {
- border-color: var-get($outlined-theme, 'focus-hover-background');
+ &::after {
+ box-shadow: 0
+ 0
+ 0
+ rem(1px)
+ var-get($outlined-theme, 'focus-border-color');
+ }
}
- }
-
- &:active {
- background: var-get($outlined-theme, 'active-background');
- color: var-get($outlined-theme, 'active-foreground');
@if $variant == 'bootstrap' {
- border-color: var-get($outlined-theme, 'focus-border-color');
+ box-shadow: 0
+ 0
+ 0
+ rem(4px)
+ var-get($outlined-theme, 'shadow-color');
}
- }
-
- @if $variant == 'fluent' {
- border: rem(1px) solid var-get($outlined-theme, 'border-color');
- &::after {
- box-shadow: 0 0 0 rem(1px) var-get($outlined-theme, 'focus-border-color');
+ @if $variant == 'indigo' {
+ border-color: var-get($outlined-theme, 'border-color');
+ box-shadow: 0
+ 0
+ 0
+ rem(3px)
+ var-get($outlined-theme, 'focus-border-color');
+
+ &:hover,
+ &:active {
+ border-color: var-get($outlined-theme, 'foreground');
+ }
}
}
- @if $variant == 'bootstrap' {
- box-shadow: 0 0 0 rem(4px) var-get($outlined-theme, 'shadow-color');
- }
-
- @if $variant == 'indigo' {
- border-color: var-get($outlined-theme, 'border-color');
- box-shadow: 0 0 0 rem(3px) var-get($outlined-theme, 'focus-border-color');
+ %igx-button--disabled {
+ background: var-get($flat-theme, 'disabled-background');
+ color: var-get($flat-theme, 'disabled-foreground');
+ border-color: var-get($flat-theme, 'disabled-border-color');
+ pointer-events: none;
+ box-shadow: none;
- &:hover,
- &:active {
- border-color: var-get($outlined-theme, 'foreground');
+ &:focus {
+ box-shadow: none;
}
}
}
-
- %igx-button--disabled {
- background: var-get($flat-theme, 'disabled-background');
- color: var-get($flat-theme, 'disabled-foreground');
- border-color: var-get($flat-theme, 'disabled-border-color');
- pointer-events: none;
- box-shadow: none;
-
- &:focus {
- box-shadow: none;
- }
- }
}
/// Adds typography styles for the igx-icon-button component.
/// Uses the 'button' category from the typographic scale.
/// @group typography
/// @param {String} $categories [(text: 'button')] - The category from the typographic scale used for type styles.
-@mixin icon-button-typography($categories: (text: 'button')) {
+@mixin icon-button-typography(
+ $categories: (
+ text: 'button',
+ )
+) {
$text: map.get($categories, 'text');
%igx-icon-button-display {
diff --git a/projects/igniteui-angular/core/src/core/styles/components/label/_label-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/label/_label-theme.scss
index 99ac7c9c939..61d39544d5c 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/label/_label-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/label/_label-theme.scss
@@ -1,31 +1,33 @@
@use 'sass:map';
@use 'sass:meta';
@use '../../base' as *;
+@use '../../../styles/themes/standalone' as *;
/// @deprecated Use the `css-vars` mixin instead.
/// @see {mixin} css-vars
/// @param {Map} $theme - The theme used to style the component.
@mixin label($theme) {
- // The --variant CSS produced by css-vars is needed also
- // when dynamically switching between the input `type` attribute.
- @include css-vars($theme, '[igxLabel]');
+ @include layer(base) {
+ // The --variant CSS produced by css-vars is needed also
+ // when dynamically switching between the input `type` attribute.
+ @include css-vars($theme, '[igxLabel]');
- $variant: map.get($theme, '_meta', 'theme');
+ $variant: map.get($theme, '_meta', 'theme');
- %label-base {
- @include ellipsis();
+ %label-base {
+ @include ellipsis();
- position: relative;
- color: var-get($theme, 'color');
- max-width: 100%;
- line-height: normal;
+ position: relative;
+ color: var-get($theme, 'color');
+ max-width: 100%;
- [dir='rtl'] & {
- transform-origin: top right;
- }
+ [dir='rtl'] & {
+ transform-origin: top right;
+ }
- @if $variant != 'material' {
- height: auto;
+ @if $variant != 'material' {
+ height: auto;
+ }
}
}
}
@@ -48,4 +50,3 @@
}
}
}
-
diff --git a/projects/igniteui-angular/core/src/core/styles/components/query-builder/_query-builder-component.scss b/projects/igniteui-angular/core/src/core/styles/components/query-builder/_query-builder-component.scss
index fce80b8f03d..5712a28fd46 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/query-builder/_query-builder-component.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/query-builder/_query-builder-component.scss
@@ -110,7 +110,7 @@
@include e(expression-item-drop-ghost) {
@extend %filter-tree__expression-item-ghost !optional;
}
-
+
@include e(expression-item-keyboard-ghost) {
@extend %filter-tree__expression-item-keyboard-ghost !optional;
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/query-builder/_query-builder-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/query-builder/_query-builder-theme.scss
index 783b9ce11ec..421c6164bea 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/query-builder/_query-builder-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/query-builder/_query-builder-theme.scss
@@ -1,581 +1,581 @@
-@use 'sass:map';
-@use '../../base' as *;
-
-/// @deprecated Use the `css-vars` mixin instead.
-/// @see {mixin} css-vars
-/// @param {Map} $theme - The grid theme used to style the component.
-@mixin query-builder($theme) {
- @include css-vars($theme);
-
- $variant: map.get($theme, '_meta', 'theme');
- $theme-variant: map.get($theme, '_meta', 'variant');
- $bootstrap-theme: $variant == 'bootstrap';
- $not-bootstrap-theme: not($bootstrap-theme);
-
- // Custom colors alpha
- $alpha-hover: .08;
- $alpha-focus: .16;
- $alpha-focus-hover: .24;
-
- $border-radius: var-get($theme, 'border-radius');
- $icon-size: rem(18px);
-
- %advanced-filter {
- @include sizable();
-
- --_tree-scrollbar-gutter: #{rem(16px)};
-
- @if $variant == 'bootstrap' {
- --query-builder-outer-padding: #{rem(16px)};
- } @else {
- --query-builder-outer-padding: #{rem(24px)};
- }
-
- width: auto;
- min-width: rem(660px);
- background-color: var-get($theme, 'background');
- border-radius: $border-radius;
- box-shadow: var-get($theme, 'elevation');
- overflow: hidden;
-
- &:has(:not(igx-query-builder-header)) {
- padding-block-start: var(--query-builder-outer-padding);
-
- %query-level-0 {
- padding-block: 0 var(--query-builder-outer-padding);
- }
- }
-
- &:has(igx-query-builder-header) {
- padding-block-start: 0;
-
- %query-level-0 {
- padding-block: if($variant != 'bootstrap', 0, rem(16px)) var(--query-builder-outer-padding);
- }
- }
-
- .igx-chip__ghost {
- position: relative;
- }
- }
-
- %query-builder-tree {
- background: var-get($theme, 'background');
-
- %query-builder-tree {
- border-radius: var-get($theme, 'subquery-border-radius');
- }
- }
-
- %query-level-0 {
- display: block;
- width: 100%;
-
- padding-inline: var(--query-builder-outer-padding);
-
- > %advanced-filter__main {
- gap: rem(16px);
-
- > %filter-tree__section {
- --sb-size: #{rem(10px)};
-
- max-height: rem(570px);
- overflow-y: auto;
- overflow-x: hidden;
- padding-inline-end: var(--_tree-scrollbar-gutter);
- }
- }
- }
-
- %filter-tree__subquery {
- max-width: rem(960px);
-
- // Add styles to the subquery itself only if there is a direct .igx-filter-tree__inputs inside it
- &:has( > %filter-tree__inputs) {
- background: var-get($theme, 'subquery-header-background');
- border: rem(1px) solid var-get($theme, 'subquery-border-color');
- border-radius: var-get($theme, 'subquery-border-radius');
- }
-
- // Hide the subquery itself if there is a tree with display none inside
- &:has( > %query-builder-tree[style='display: none;']) {
- display: none;
- }
-
- > %filter-tree__inputs {
- padding: rem(12px);
- border-radius: inherit;
-
- > igx-input-group,
- > igx-date-picker,
- > igx-time-picker {
- flex-grow: 1;
- }
- }
-
- %filter-tree__buttons {
- margin-block-start: rem(8px);
- }
-
- %query-builder-tree {
- border-block-start: rem(1px) dashed var-get($theme, 'separator-color');
- padding: rem(12px);
- }
-
- &:empty {
- display: none;
- }
-
- }
-
- %filter-tree-details-button {
- margin-inline-start: auto;
- }
-
- %query-builder-dialog {
- display: flex;
- flex-direction: column;
- gap: rem(16px);
- max-width: rem(310px);
-
- > * {
- margin: 0 !important;
- }
- }
-
- %advanced-filter__header {
- display: flex;
- align-items: center;
- background-color: var-get($theme, 'header-background');
- color: var-get($theme, 'header-foreground');
- user-select: none;
- border-radius: $border-radius $border-radius 0 0;
- margin-bottom: 0;
- border-block-end: rem(1px) solid var-get($theme, 'header-border');
-
- padding-inline: var(--query-builder-outer-padding);
- padding-block: var(--query-builder-outer-padding) rem(16px);
- }
-
- %advanced-filter__title {
- &:empty {
- display: none;
- }
- }
-
- %advanced-filter__main {
- display: grid;
- gap: rem(16px);
- }
-
- %advanced-filter__root {
- display: flex;
- flex-direction: column;
- flex-grow: 1;
-
- > * {
- flex-grow: 1;
- }
- }
-
- %advanced-filter__root-actions {
- display: flex;
- gap: rem(8px);
- padding-bottom: rem(16px);
- }
-
- %advanced-filter__outlet {
- igx-select-item > igx-icon {
- width: var(--ig-icon-size, #{$icon-size});
- height: var(--ig-icon-size, #{$icon-size});
- font-size: var(--ig-icon-size, #{$icon-size});
- margin-inline-end: rem(8px);
- }
- }
-
- %filter-tree {
- display: flex;
- width: 100%;
-
- %filter-tree {
- margin-block: rem(8px);
- }
- }
-
- %filter-tree__section {
- display: flex;
- flex-direction: column;
- gap: rem(8px);
-
- > %filter-tree {
- margin-block: 0;
- }
- }
-
- %filter-tree__expression-context-menu {
- display: flex;
- width: 100%;
-
- [igxbutton='flat'] {
- --ig-size: 1;
-
- @if $variant == 'bootstrap' {
- --ig-button-text-transform: capitalize;
- }
-
- border: none;
- min-width: auto;
- }
- }
-
- %filter-tree__line {
- $size: rem(2px);
- width: $size;
- background-color: white;
- margin-inline-end: calc(rem(8px) - $size);
- outline-style: none;
- }
-
- %filter-tree__line--and {
- background: var-get($theme, 'color-expression-group-and');
- }
-
- %filter-tree__line--or {
- background: var-get($theme, 'color-expression-group-or');
- }
-
- %filter-tree__button--and {
- &[igxButton='flat'] {
- @if $variant == 'material' or $variant == 'indigo' {
- --focus-hover-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-focus-hover});
- --focus-visible-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-focus});
- --focus-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-focus});
- --active-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-focus});
- --hover-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-hover});
- --background: transparent;
- }
-
- @if $variant == 'fluent' {
- --background: transparent;
- --focus-hover-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
- --focus-visible-background: transparent;
- --focus-background: transparent;
- --active-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
- --hover-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
- }
-
- --foreground: #{var-get($theme, 'color-expression-group-and')};
- --focus-visible-foreground: #{var-get($theme, 'color-expression-group-and')};
- --icon-color: #{var-get($theme, 'color-expression-group-and')};
-
- @if $variant != 'bootstrap' {
- --focus-foreground: #{var-get($theme, 'color-expression-group-and')};
- --hover-foreground: #{var-get($theme, 'color-expression-group-and')};
- --icon-color-hover: #{var-get($theme, 'color-expression-group-and')};
- --focus-hover-foreground: #{var-get($theme, 'color-expression-group-and')};
- --active-foreground: #{var-get($theme, 'color-expression-group-and')};
- } @else {
- $bootstrap-foreground-lightness: if($theme-variant == 'light', 34%, 78% );
-
- --focus-hover-background: transparent;
- --focus-visible-background: transparent;
- --focus-background: transparent;
- --active-background: transparent;
- --hover-background: transparent;
- --background: transparent;
- --shadow-color: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / .5);
-
- --icon-color-hover: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
- --focus-foreground: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
- --hover-foreground: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
- --focus-hover-foreground: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
- --active-foreground: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
- }
- }
- }
-
- %filter-tree__button--or {
- &[igxButton='flat'] {
- @if $variant == 'material' or $variant == 'indigo' {
- --focus-hover-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-focus-hover});
- --focus-visible-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-focus});
- --focus-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-focus});
- --active-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-focus});
- --hover-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-hover});
- --background: transparent;
- }
-
- @if $variant == 'fluent' {
- --background: transparent;
- --focus-hover-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
- --focus-visible-background: transparent;
- --focus-background: transparent;
- --active-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
- --hover-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
- }
-
- --foreground: #{var-get($theme, 'color-expression-group-or')};
- --focus-visible-foreground: #{var-get($theme, 'color-expression-group-or')};
- --icon-color: #{var-get($theme, 'color-expression-group-or')};
-
- @if $variant != 'bootstrap' {
- --focus-foreground: #{var-get($theme, 'color-expression-group-or')};
- --hover-foreground: #{var-get($theme, 'color-expression-group-or')};
- --icon-color-hover: #{var-get($theme, 'color-expression-group-or')};
- --focus-hover-foreground: #{var-get($theme, 'color-expression-group-or')};
- --active-foreground: #{var-get($theme, 'color-expression-group-or')};
- } @else {
- $bootstrap-foreground-lightness: if($theme-variant == 'light', 14%, 47%);
-
- --focus-hover-background: transparent;
- --focus-visible-background: transparent;
- --focus-background: transparent;
- --active-background: transparent;
- --hover-background: transparent;
- --background: transparent;
- --shadow-color: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / .5);
-
- --icon-color-hover: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
- --focus-foreground: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
- --hover-foreground: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
- --focus-hover-foreground: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
- --active-foreground: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
- }
- }
- }
-
- %filter-tree__expressions {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- flex-grow: 1;
- gap: rem(8px);
- }
-
- %filter-tree__expression-section {
- $spacing: rem(16px);
- display: flex;
- flex-direction: column;
- width: calc(100% - #{$spacing});
- gap: rem(8px);
- margin-inline-start: $spacing;
-
- &:empty {
- display: none;
- }
- }
-
- %filter-tree__expression-item {
- display: flex;
- align-items: center;
- width: 100%;
- gap: rem(8px);
- position: relative;
-
- igx-chip {
- --ig-size: 3;
-
- @if $variant != 'indigo' {
- igx-icon {
- --component-size: 1;
- }
- }
- }
-
- > igx-chip {
- %filter-tree__expression-column {
- padding-inline: pad-inline(rem(3px), rem(6px), rem(8px));
- }
-
- %filter-tree__expression-condition {
- padding-inline-start: pad-inline(rem(3px), rem(6px), rem(8px));
- }
-
- igx-prefix {
- display: flex;
- }
-
- .igx-chip__end {
- gap: sizable(rem(3px), rem(6px), rem(8px));
- }
- }
- }
-
-
- %filter-tree__expression-item-ghost {
- .igx-chip__item {
- @include type-style('body-2');
-
- --ig-body-2-text-transform: unset;
-
- padding-inline: rem(32px);
-
- color: color($color: 'gray', $variant: if($theme-variant == 'light', 600, 900));
- border: rem(1px) dashed color($color: 'gray', $variant: if($theme-variant == 'light', 600, 300));
- background: transparent;
- }
- }
-
- %filter-tree__expression-item-keyboard-ghost {
- .igx-chip__item {
- box-shadow: var(--ghost-shadow);
- background: var(--ghost-background);
- color: var(--focus-text-color);
- }
-
- .igx-chip:hover {
- .igx-chip__item {
- box-shadow: var(--ghost-shadow);
- background: var(--ghost-background);
- color: var(--focus-text-color);
-
- @if $variant == 'indigo' {
- border-color: var(--border-color);
- }
- }
- }
- }
-
- %filter-tree__expression-column {
- padding: 0 rem(8px);
- }
-
- %filter-tree__expression-actions {
- display: inline-flex;
- gap: if($variant != 'indigo', rem(16px), rem(8px));
-
- span {
- display: inline-flex;
- }
-
- %igx-icon-button-display {
- --ig-size: #{if($variant != 'bootstrap', 2, 1)};
- };
- }
-
- %filter-tree__expression-condition {
- opacity: if($variant != 'indigo', .6, .8);
- }
-
- %filter-tree__buttons {
- --ig-size: 1;
-
- display: flex;
- align-items: center;
- gap: rem(8px);
-
- [igxbutton='flat'] {
- padding-block: 0;
- border: none
- }
- }
-
- %filter-tree__inputs {
- --ig-size: #{if($variant == 'indigo' or $variant == 'bootstrap', 2, 1)};
-
- display: flex;
- align-items: flex-end;
- gap: rem(16px);
- width: 100%;
- border-radius: inherit;
-
- &:empty {
- display: none;
- }
- }
-
- %filter-tree__inputs-field {
- display: flex;
- flex-direction: column;
- gap: rem(4px);
- max-width: rem(250px);
- width: 100%;
- }
-
- %advanced-filter__label {
- @include type-style('body-2');
-
- color: var-get($theme, 'label-foreground');
- }
-
- %filter-tree__inputs-actions {
- --ig-size: 2;
-
- display: flex;
- gap: rem(8px);
- align-items: center;
- width: auto;
- align-self: center;
-
- [igxIconButton] {
- transition: none;
- }
- }
-
- %filter-con-menu__delete-btn {
- color: color(null, 'error');
- @if $bootstrap-theme {
- border-color: color(null, 'error');
- }
-
- &:hover,
- &:focus {
- @if $bootstrap-theme {
- background: color(null, 'error');
- border-color: color(null, 'error');
- color: color(null, 'gray', 100);
- } @else {
- color: color(null, 'error');
- }
- }
- }
-
- %filter-con-menu__close-btn {
- position: absolute;
- top: 0;
- inset-inline-start: 100%;
- transform: translate(-50%, -50%);
- background-color: var-get($theme, 'background');
- border: rem(1px) solid color(null, 'gray', 200);
-
- &:hover,
- &:focus {
- @if $not-bootstrap-theme {
- background-color: var-get($theme, 'background');
- }
- }
- }
-
- %advanced-filter--inline {
- display: flex;
- flex-direction: column;
- width: 100%;
- max-width: 100%;
- height: inherit;
- max-height: inherit;
- min-width: rem(480px);
- box-shadow: none;
-
- %advanced-filter__main {
- min-height: initial;
- max-height: initial;
- flex-grow: 1;
- }
- }
-}
-
-/// Adds typography styles for the igx-query-builder component.
-/// Uses the 'h6' category from the typographic scale.
-/// @group typography
-/// @param {Map} $categories [(title: 'h6')] - The categories from the typographic scale used for type styles.
-@mixin query-builder-typography(
- $categories: (title: 'h6')
-) {
- $title: map.get($categories, 'title');
-
- %advanced-filter__title {
- @include type-style($title) {
- margin: 0;
- }
- }
-}
+//@use 'sass:map';
+//@use '../../base' as *;
+//
+///// @deprecated Use the `css-vars` mixin instead.
+///// @see {mixin} css-vars
+///// @param {Map} $theme - The grid theme used to style the component.
+//@mixin query-builder($theme) {
+// @include css-vars($theme);
+//
+// $variant: map.get($theme, '_meta', 'theme');
+// $theme-variant: map.get($theme, '_meta', 'variant');
+// $bootstrap-theme: $variant == 'bootstrap';
+// $not-bootstrap-theme: not($bootstrap-theme);
+//
+// // Custom colors alpha
+// $alpha-hover: .08;
+// $alpha-focus: .16;
+// $alpha-focus-hover: .24;
+//
+// $border-radius: var-get($theme, 'border-radius');
+// $icon-size: rem(18px);
+//
+// %advanced-filter {
+// @include sizable();
+//
+// --_tree-scrollbar-gutter: #{rem(16px)};
+//
+// @if $variant == 'bootstrap' {
+// --query-builder-outer-padding: #{rem(16px)};
+// } @else {
+// --query-builder-outer-padding: #{rem(24px)};
+// }
+//
+// width: auto;
+// min-width: rem(660px);
+// background-color: var-get($theme, 'background');
+// border-radius: $border-radius;
+// box-shadow: var-get($theme, 'elevation');
+// overflow: hidden;
+//
+// &:has(:not(igx-query-builder-header)) {
+// padding-block-start: var(--query-builder-outer-padding);
+//
+// %query-level-0 {
+// padding-block: 0 var(--query-builder-outer-padding);
+// }
+// }
+//
+// &:has(igx-query-builder-header) {
+// padding-block-start: 0;
+//
+// %query-level-0 {
+// padding-block: if($variant != 'bootstrap', 0, rem(16px)) var(--query-builder-outer-padding);
+// }
+// }
+//
+// .igx-chip__ghost {
+// position: relative;
+// }
+// }
+//
+// %query-builder-tree {
+// background: var-get($theme, 'background');
+//
+// %query-builder-tree {
+// border-radius: var-get($theme, 'subquery-border-radius');
+// }
+// }
+//
+// %query-level-0 {
+// display: block;
+// width: 100%;
+//
+// padding-inline: var(--query-builder-outer-padding);
+//
+// > %advanced-filter__main {
+// gap: rem(16px);
+//
+// > %filter-tree__section {
+// --sb-size: #{rem(10px)};
+//
+// max-height: rem(570px);
+// overflow-y: auto;
+// overflow-x: hidden;
+// padding-inline-end: var(--_tree-scrollbar-gutter);
+// }
+// }
+// }
+//
+// %filter-tree__subquery {
+// max-width: rem(960px);
+//
+// // Add styles to the subquery itself only if there is a direct .igx-filter-tree__inputs inside it
+// &:has( > %filter-tree__inputs) {
+// background: var-get($theme, 'subquery-header-background');
+// border: rem(1px) solid var-get($theme, 'subquery-border-color');
+// border-radius: var-get($theme, 'subquery-border-radius');
+// }
+//
+// // Hide the subquery itself if there is a tree with display none inside
+// &:has( > %query-builder-tree[style='display: none;']) {
+// display: none;
+// }
+//
+// > %filter-tree__inputs {
+// padding: rem(12px);
+// border-radius: inherit;
+//
+// > igx-input-group,
+// > igx-date-picker,
+// > igx-time-picker {
+// flex-grow: 1;
+// }
+// }
+//
+// %filter-tree__buttons {
+// margin-block-start: rem(8px);
+// }
+//
+// %query-builder-tree {
+// border-block-start: rem(1px) dashed var-get($theme, 'separator-color');
+// padding: rem(12px);
+// }
+//
+// &:empty {
+// display: none;
+// }
+//
+// }
+//
+// %filter-tree-details-button {
+// margin-inline-start: auto;
+// }
+//
+// %query-builder-dialog {
+// display: flex;
+// flex-direction: column;
+// gap: rem(16px);
+// max-width: rem(310px);
+//
+// > * {
+// margin: 0 !important;
+// }
+// }
+//
+// %advanced-filter__header {
+// display: flex;
+// align-items: center;
+// background-color: var-get($theme, 'header-background');
+// color: var-get($theme, 'header-foreground');
+// user-select: none;
+// border-radius: $border-radius $border-radius 0 0;
+// margin-bottom: 0;
+// border-block-end: rem(1px) solid var-get($theme, 'header-border');
+//
+// padding-inline: var(--query-builder-outer-padding);
+// padding-block: var(--query-builder-outer-padding) rem(16px);
+// }
+//
+// %advanced-filter__title {
+// &:empty {
+// display: none;
+// }
+// }
+//
+// %advanced-filter__main {
+// display: grid;
+// gap: rem(16px);
+// }
+//
+// %advanced-filter__root {
+// display: flex;
+// flex-direction: column;
+// flex-grow: 1;
+//
+// > * {
+// flex-grow: 1;
+// }
+// }
+//
+// %advanced-filter__root-actions {
+// display: flex;
+// gap: rem(8px);
+// padding-bottom: rem(16px);
+// }
+//
+// %advanced-filter__outlet {
+// igx-select-item > igx-icon {
+// width: var(--ig-icon-size, #{$icon-size});
+// height: var(--ig-icon-size, #{$icon-size});
+// font-size: var(--ig-icon-size, #{$icon-size});
+// margin-inline-end: rem(8px);
+// }
+// }
+//
+// %filter-tree {
+// display: flex;
+// width: 100%;
+//
+// %filter-tree {
+// margin-block: rem(8px);
+// }
+// }
+//
+// %filter-tree__section {
+// display: flex;
+// flex-direction: column;
+// gap: rem(8px);
+//
+// > %filter-tree {
+// margin-block: 0;
+// }
+// }
+//
+// %filter-tree__expression-context-menu {
+// display: flex;
+// width: 100%;
+//
+// [igxbutton='flat'] {
+// --ig-size: 1;
+//
+// @if $variant == 'bootstrap' {
+// --ig-button-text-transform: capitalize;
+// }
+//
+// border: none;
+// min-width: auto;
+// }
+// }
+//
+// %filter-tree__line {
+// $size: rem(2px);
+// width: $size;
+// background-color: white;
+// margin-inline-end: calc(rem(8px) - $size);
+// outline-style: none;
+// }
+//
+// %filter-tree__line--and {
+// background: var-get($theme, 'color-expression-group-and');
+// }
+//
+// %filter-tree__line--or {
+// background: var-get($theme, 'color-expression-group-or');
+// }
+//
+// %filter-tree__button--and {
+// &[igxButton='flat'] {
+// @if $variant == 'material' or $variant == 'indigo' {
+// --focus-hover-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-focus-hover});
+// --focus-visible-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-focus});
+// --focus-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-focus});
+// --active-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-focus});
+// --hover-background: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / #{$alpha-hover});
+// --background: transparent;
+// }
+//
+// @if $variant == 'fluent' {
+// --background: transparent;
+// --focus-hover-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
+// --focus-visible-background: transparent;
+// --focus-background: transparent;
+// --active-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
+// --hover-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
+// }
+//
+// --foreground: #{var-get($theme, 'color-expression-group-and')};
+// --focus-visible-foreground: #{var-get($theme, 'color-expression-group-and')};
+// --icon-color: #{var-get($theme, 'color-expression-group-and')};
+//
+// @if $variant != 'bootstrap' {
+// --focus-foreground: #{var-get($theme, 'color-expression-group-and')};
+// --hover-foreground: #{var-get($theme, 'color-expression-group-and')};
+// --icon-color-hover: #{var-get($theme, 'color-expression-group-and')};
+// --focus-hover-foreground: #{var-get($theme, 'color-expression-group-and')};
+// --active-foreground: #{var-get($theme, 'color-expression-group-and')};
+// } @else {
+// $bootstrap-foreground-lightness: if($theme-variant == 'light', 34%, 78% );
+//
+// --focus-hover-background: transparent;
+// --focus-visible-background: transparent;
+// --focus-background: transparent;
+// --active-background: transparent;
+// --hover-background: transparent;
+// --background: transparent;
+// --shadow-color: hsl(from #{var-get($theme, 'color-expression-group-and')} h s l / .5);
+//
+// --icon-color-hover: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
+// --focus-foreground: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
+// --hover-foreground: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
+// --focus-hover-foreground: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
+// --active-foreground: hsl(from #{var-get($theme, 'color-expression-group-and')} h s #{$bootstrap-foreground-lightness} / 1);
+// }
+// }
+// }
+//
+// %filter-tree__button--or {
+// &[igxButton='flat'] {
+// @if $variant == 'material' or $variant == 'indigo' {
+// --focus-hover-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-focus-hover});
+// --focus-visible-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-focus});
+// --focus-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-focus});
+// --active-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-focus});
+// --hover-background: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / #{$alpha-hover});
+// --background: transparent;
+// }
+//
+// @if $variant == 'fluent' {
+// --background: transparent;
+// --focus-hover-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
+// --focus-visible-background: transparent;
+// --focus-background: transparent;
+// --active-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
+// --hover-background: #{color($color: 'gray', $variant: if($theme-variant == 'light', 200, 50))};
+// }
+//
+// --foreground: #{var-get($theme, 'color-expression-group-or')};
+// --focus-visible-foreground: #{var-get($theme, 'color-expression-group-or')};
+// --icon-color: #{var-get($theme, 'color-expression-group-or')};
+//
+// @if $variant != 'bootstrap' {
+// --focus-foreground: #{var-get($theme, 'color-expression-group-or')};
+// --hover-foreground: #{var-get($theme, 'color-expression-group-or')};
+// --icon-color-hover: #{var-get($theme, 'color-expression-group-or')};
+// --focus-hover-foreground: #{var-get($theme, 'color-expression-group-or')};
+// --active-foreground: #{var-get($theme, 'color-expression-group-or')};
+// } @else {
+// $bootstrap-foreground-lightness: if($theme-variant == 'light', 14%, 47%);
+//
+// --focus-hover-background: transparent;
+// --focus-visible-background: transparent;
+// --focus-background: transparent;
+// --active-background: transparent;
+// --hover-background: transparent;
+// --background: transparent;
+// --shadow-color: hsl(from #{var-get($theme, 'color-expression-group-or')} h s l / .5);
+//
+// --icon-color-hover: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
+// --focus-foreground: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
+// --hover-foreground: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
+// --focus-hover-foreground: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
+// --active-foreground: hsl(from #{var-get($theme, 'color-expression-group-or')} h s #{$bootstrap-foreground-lightness} / 1);
+// }
+// }
+// }
+//
+// %filter-tree__expressions {
+// display: flex;
+// flex-direction: column;
+// align-items: flex-start;
+// flex-grow: 1;
+// gap: rem(8px);
+// }
+//
+// %filter-tree__expression-section {
+// $spacing: rem(16px);
+// display: flex;
+// flex-direction: column;
+// width: calc(100% - #{$spacing});
+// gap: rem(8px);
+// margin-inline-start: $spacing;
+//
+// &:empty {
+// display: none;
+// }
+// }
+//
+// %filter-tree__expression-item {
+// display: flex;
+// align-items: center;
+// width: 100%;
+// gap: rem(8px);
+// position: relative;
+//
+// igx-chip {
+// --ig-size: 3;
+//
+// @if $variant != 'indigo' {
+// igx-icon {
+// --component-size: 1;
+// }
+// }
+// }
+//
+// > igx-chip {
+// %filter-tree__expression-column {
+// padding-inline: pad-inline(rem(3px), rem(6px), rem(8px));
+// }
+//
+// %filter-tree__expression-condition {
+// padding-inline-start: pad-inline(rem(3px), rem(6px), rem(8px));
+// }
+//
+// igx-prefix {
+// display: flex;
+// }
+//
+// .igx-chip__end {
+// gap: sizable(rem(3px), rem(6px), rem(8px));
+// }
+// }
+// }
+//
+//
+// %filter-tree__expression-item-ghost {
+// .igx-chip__item {
+// @include type-style('body-2');
+//
+// --ig-body-2-text-transform: unset;
+//
+// padding-inline: rem(32px);
+//
+// color: color($color: 'gray', $variant: if($theme-variant == 'light', 600, 900));
+// border: rem(1px) dashed color($color: 'gray', $variant: if($theme-variant == 'light', 600, 300));
+// background: transparent;
+// }
+// }
+//
+// %filter-tree__expression-item-keyboard-ghost {
+// .igx-chip__item {
+// box-shadow: var(--ghost-shadow);
+// background: var(--ghost-background);
+// color: var(--focus-text-color);
+// }
+//
+// .igx-chip:hover {
+// .igx-chip__item {
+// box-shadow: var(--ghost-shadow);
+// background: var(--ghost-background);
+// color: var(--focus-text-color);
+//
+// @if $variant == 'indigo' {
+// border-color: var(--border-color);
+// }
+// }
+// }
+// }
+//
+// %filter-tree__expression-column {
+// padding: 0 rem(8px);
+// }
+//
+// %filter-tree__expression-actions {
+// display: inline-flex;
+// gap: if($variant != 'indigo', rem(16px), rem(8px));
+//
+// span {
+// display: inline-flex;
+// }
+//
+// %igx-icon-button-display {
+// --ig-size: #{if($variant != 'bootstrap', 2, 1)};
+// };
+// }
+//
+// %filter-tree__expression-condition {
+// opacity: if($variant != 'indigo', .6, .8);
+// }
+//
+// %filter-tree__buttons {
+// --ig-size: 1;
+//
+// display: flex;
+// align-items: center;
+// gap: rem(8px);
+//
+// [igxbutton='flat'] {
+// padding-block: 0;
+// border: none
+// }
+// }
+//
+// %filter-tree__inputs {
+// --ig-size: #{if($variant == 'indigo' or $variant == 'bootstrap', 2, 1)};
+//
+// display: flex;
+// align-items: flex-end;
+// gap: rem(16px);
+// width: 100%;
+// border-radius: inherit;
+//
+// &:empty {
+// display: none;
+// }
+// }
+//
+// %filter-tree__inputs-field {
+// display: flex;
+// flex-direction: column;
+// gap: rem(4px);
+// max-width: rem(250px);
+// width: 100%;
+// }
+//
+// %advanced-filter__label {
+// @include type-style('body-2');
+//
+// color: var-get($theme, 'label-foreground');
+// }
+//
+// %filter-tree__inputs-actions {
+// --ig-size: 2;
+//
+// display: flex;
+// gap: rem(8px);
+// align-items: center;
+// width: auto;
+// align-self: center;
+//
+// [igxIconButton] {
+// transition: none;
+// }
+// }
+//
+// %filter-con-menu__delete-btn {
+// color: color(null, 'error');
+// @if $bootstrap-theme {
+// border-color: color(null, 'error');
+// }
+//
+// &:hover,
+// &:focus {
+// @if $bootstrap-theme {
+// background: color(null, 'error');
+// border-color: color(null, 'error');
+// color: color(null, 'gray', 100);
+// } @else {
+// color: color(null, 'error');
+// }
+// }
+// }
+//
+// %filter-con-menu__close-btn {
+// position: absolute;
+// top: 0;
+// inset-inline-start: 100%;
+// transform: translate(-50%, -50%);
+// background-color: var-get($theme, 'background');
+// border: rem(1px) solid color(null, 'gray', 200);
+//
+// &:hover,
+// &:focus {
+// @if $not-bootstrap-theme {
+// background-color: var-get($theme, 'background');
+// }
+// }
+// }
+//
+// %advanced-filter--inline {
+// display: flex;
+// flex-direction: column;
+// width: 100%;
+// max-width: 100%;
+// height: inherit;
+// max-height: inherit;
+// min-width: rem(480px);
+// box-shadow: none;
+//
+// %advanced-filter__main {
+// min-height: initial;
+// max-height: initial;
+// flex-grow: 1;
+// }
+// }
+//}
+//
+///// Adds typography styles for the igx-query-builder component.
+///// Uses the 'h6' category from the typographic scale.
+///// @group typography
+///// @param {Map} $categories [(title: 'h6')] - The categories from the typographic scale used for type styles.
+//@mixin query-builder-typography(
+// $categories: (title: 'h6')
+//) {
+// $title: map.get($categories, 'title');
+//
+// %advanced-filter__title {
+// @include type-style($title) {
+// margin: 0;
+// }
+// }
+//}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/rating/_rating-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/rating/_rating-theme.scss
index 3246ed17ecf..391808742ba 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/rating/_rating-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/rating/_rating-theme.scss
@@ -1,29 +1,44 @@
@use 'sass:map';
@use '../../base' as *;
+@use '../../../styles/themes/standalone' as *;
/// @deprecated Use the `css-vars` mixin instead.
/// @see {mixin} css-vars
/// @param {Map} $theme - The theme used to style the component.
@mixin rating($theme) {
- @include css-vars($theme, 'igc-rating');
+ @include layer(base) {
+ @include css-vars($theme, 'igc-rating');
- igc-rating::part(label) {
- color: var-get($theme, 'label-color');
- }
+ igc-rating::part(label) {
+ color: var-get($theme, 'label-color');
+ }
- igc-rating::part(value-label) {
- color: var-get($theme, 'value-label');
- }
+ igc-rating::part(value-label) {
+ color: var-get($theme, 'value-label');
+ }
- igc-rating[disabled]::part(label),
- igc-rating[disabled]::part(value-label) {
- color: var-get($theme, 'disabled-label-color');
- }
+ igc-rating[disabled]::part(label),
+ igc-rating[disabled]::part(value-label) {
+ color: var-get($theme, 'disabled-label-color');
+ }
- igc-rating[disabled] {
- --symbol-empty-color: #{var-get($theme, 'disabled-empty-symbol-color')};
- --symbol-full-color: #{var-get($theme, 'disabled-full-symbol-color')};
- --disabled-symbol-empty-filter: #{var-get($theme, 'symbol-empty-filter')};
- --disabled-symbol-full-filter: #{var-get($theme, 'symbol-full-filter')};
+ igc-rating[disabled] {
+ --symbol-empty-color: #{var-get(
+ $theme,
+ 'disabled-empty-symbol-color'
+ )};
+ --symbol-full-color: #{var-get(
+ $theme,
+ 'disabled-full-symbol-color'
+ )};
+ --disabled-symbol-empty-filter: #{var-get(
+ $theme,
+ 'symbol-empty-filter'
+ )};
+ --disabled-symbol-full-filter: #{var-get(
+ $theme,
+ 'symbol-full-filter'
+ )};
+ }
}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/ripple/_ripple-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/ripple/_ripple-theme.scss
index 6714a83f05c..94d0321651c 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/ripple/_ripple-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/ripple/_ripple-theme.scss
@@ -1,27 +1,30 @@
@use 'sass:map';
@use '../../base' as *;
+@use '../../../styles/themes/standalone' as *;
/// @deprecated Use the `css-vars` mixin instead.
/// @see {mixin} css-vars
/// @param {Map} $theme - The theme used to style the component.
@mixin ripple($theme) {
- @include css-vars($theme, '[igxRipple]');
+ @include layer(base) {
+ @include css-vars($theme, '[igxRipple]');
- %igx-ripple-display {
- display: block;
- position: absolute;
- border-radius: border-radius(50%);
- background: var-get($theme, 'color');
- pointer-events: none;
- transform-origin: center;
- transform: translate3d(0, 0, 0) scale(0);
- will-change: opacity, transform;
- opacity: .5;
- margin: 0 !important;
- border: none !important;
- }
+ %igx-ripple-display {
+ display: block;
+ position: absolute;
+ border-radius: border-radius(50%);
+ background: var-get($theme, 'color');
+ pointer-events: none;
+ transform-origin: center;
+ transform: translate3d(0, 0, 0) scale(0);
+ will-change: opacity, transform;
+ opacity: 0.5;
+ margin: 0 !important;
+ border: none !important;
+ }
- %igx-ripple-wrapper {
- overflow: hidden;
+ %igx-ripple-wrapper {
+ overflow: hidden;
+ }
}
}
diff --git a/projects/igniteui-angular/core/src/core/styles/components/tooltip/_tooltip-theme.scss b/projects/igniteui-angular/core/src/core/styles/components/tooltip/_tooltip-theme.scss
index 2e1f4a21a61..d5362865af9 100644
--- a/projects/igniteui-angular/core/src/core/styles/components/tooltip/_tooltip-theme.scss
+++ b/projects/igniteui-angular/core/src/core/styles/components/tooltip/_tooltip-theme.scss
@@ -1,71 +1,74 @@
@use 'sass:map';
@use '../../base' as *;
+@use '../../../styles/themes/standalone' as *;
/// @deprecated Use the `css-vars` mixin instead.
/// @see {mixin} css-vars
/// @param {Map} $theme - The theme used to style the component.
@mixin tooltip($theme) {
- @include css-vars($theme, '.igx-tooltip');
- $variant: map.get($theme, '_meta', 'theme');
+ @include layer(base) {
+ @include css-vars($theme, '.igx-tooltip');
+ $variant: map.get($theme, '_meta', 'theme');
- $transparent-border: rem(4px) solid transparent;
- $color-border: rem(4px) solid var-get($theme, 'background');
+ $transparent-border: rem(4px) solid transparent;
+ $color-border: rem(4px) solid var-get($theme, 'background');
- %tooltip-display {
- display: flex;
- align-items: flex-start;
- text-align: start;
- background: var-get($theme, 'background');
- color: var-get($theme, 'text-color');
- border-radius: var-get($theme, 'border-radius');
- box-shadow: var-get($theme, 'elevation');
- padding: pad-block(rem(4px)) pad-inline(rem(8px));
- gap: rem(8px);
- min-height: rem(24px);
- min-width: rem(24px);
- max-width: rem(200px);
- width: fit-content;
+ %tooltip-display {
+ display: flex;
+ align-items: flex-start;
+ text-align: start;
+ background: var-get($theme, 'background');
+ color: var-get($theme, 'text-color');
+ border-radius: var-get($theme, 'border-radius');
+ box-shadow: var-get($theme, 'elevation');
+ padding: pad-block(rem(4px)) pad-inline(rem(8px));
+ gap: rem(8px);
+ min-height: rem(24px);
+ min-width: rem(24px);
+ max-width: rem(200px);
+ width: fit-content;
- igx-icon {
- --component-size: 1;
- }
+ igx-icon {
+ --component-size: 1;
+ }
- igx-tooltip-close-button {
- display: flex;
- cursor: default;
- }
+ igx-tooltip-close-button {
+ display: flex;
+ cursor: default;
+ }
- &:not([data-default]) {
- max-width: initial;
+ &:not([data-default]) {
+ max-width: initial;
+ }
}
- }
- %arrow--top {
- border-left: $transparent-border;
- border-right: $transparent-border;
- border-top: $color-border;
- }
+ %arrow--top {
+ border-left: $transparent-border;
+ border-right: $transparent-border;
+ border-top: $color-border;
+ }
- %arrow--bottom {
- border-left: $transparent-border;
- border-right: $transparent-border;
- border-bottom: $color-border;
- }
+ %arrow--bottom {
+ border-left: $transparent-border;
+ border-right: $transparent-border;
+ border-bottom: $color-border;
+ }
- %arrow--left {
- border-top: $transparent-border;
- border-bottom: $transparent-border;
- border-left: $color-border;
- }
+ %arrow--left {
+ border-top: $transparent-border;
+ border-bottom: $transparent-border;
+ border-left: $color-border;
+ }
- %arrow--right {
- border-top: $transparent-border;
- border-bottom: $transparent-border;
- border-right: $color-border;
- }
+ %arrow--right {
+ border-top: $transparent-border;
+ border-bottom: $transparent-border;
+ border-right: $color-border;
+ }
- %tooltip--hidden {
- display: none;
+ %tooltip--hidden {
+ display: none;
+ }
}
}
@@ -74,7 +77,9 @@
/// @group typography
/// @param {Map} $categories [(tooltip-text: null] - The categories from the typographic scale used for type styles.
@mixin tooltip-typography(
- $categories: (tooltip-text: null)
+ $categories: (
+ tooltip-text: null,
+ )
) {
$tooltip-text: map.get($categories, 'tooltip-text');
diff --git a/projects/igniteui-angular/core/src/core/styles/themes/_core.scss b/projects/igniteui-angular/core/src/core/styles/themes/_core.scss
index f53248310ca..9ec9c6c7a27 100644
--- a/projects/igniteui-angular/core/src/core/styles/themes/_core.scss
+++ b/projects/igniteui-angular/core/src/core/styles/themes/_core.scss
@@ -117,6 +117,12 @@
@include theming.sizing();
@include theming.spacing();
+ @property --_transition-delay {
+ syntax: '