diff --git a/libs/components/lists/src/lib/modules/sort/sort-item.component.html b/libs/components/lists/src/lib/modules/sort/sort-item.component.html
index a64f97658a..641dad0351 100644
--- a/libs/components/lists/src/lib/modules/sort/sort-item.component.html
+++ b/libs/components/lists/src/lib/modules/sort/sort-item.component.html
@@ -1,14 +1,16 @@
-
+
diff --git a/libs/components/lists/src/lib/modules/sort/sort-item.component.scss b/libs/components/lists/src/lib/modules/sort/sort-item.component.scss
deleted file mode 100644
index 325cf5f315..0000000000
--- a/libs/components/lists/src/lib/modules/sort/sort-item.component.scss
+++ /dev/null
@@ -1,48 +0,0 @@
-@use 'libs/components/theme/src/lib/styles/mixins' as mixins;
-@use 'libs/components/theme/src/lib/styles/variables' as *;
-@use 'libs/components/theme/src/lib/styles/_public-api/themes/modern/_compat/mixins'
- as modernMixins;
-
-.sky-sort-item {
- @include mixins.sky-dropdown-item();
-}
-
-.sky-sort-item-selected {
- background-color: $sky-background-color-selected;
- padding: 4px;
- margin: 0;
-}
-
-@include mixins.sky-theme-modern {
- .sky-sort-item {
- margin: 0;
- @include modernMixins.sky-theme-modern-btn-tab;
- @include modernMixins.sky-theme-modern-btn-tab-dropdown-item;
- padding: $sky-theme-modern-space-sm $sky-theme-modern-space-lg;
-
- & button {
- padding: 0;
- color: $sky-text-color-deemphasized;
- }
- }
-
- .sky-sort-item-selected {
- @include modernMixins.sky-theme-modern-btn-tab-selected-dropdown-item;
- padding-left: calc(#{$sky-theme-modern-space-lg} - 3px);
- background-color: inherit;
-
- & button {
- font-weight: $sky-theme-modern-text-weight-regular-value;
- color: $sky-text-color-default;
- }
- }
-}
-
-@include mixins.sky-theme-modern-dark {
- .sky-sort-item button {
- color: $sky-theme-modern-mode-dark-font-deemphasized-color;
- }
- .sky-sort-item-selected button {
- color: $sky-theme-modern-mode-dark-font-body-default-color;
- }
-}
diff --git a/libs/components/lists/src/lib/modules/sort/sort-item.component.ts b/libs/components/lists/src/lib/modules/sort/sort-item.component.ts
index e08feba4c7..16e3798ce0 100644
--- a/libs/components/lists/src/lib/modules/sort/sort-item.component.ts
+++ b/libs/components/lists/src/lib/modules/sort/sort-item.component.ts
@@ -9,6 +9,8 @@ import {
OnInit,
Output,
SimpleChanges,
+ TemplateRef,
+ ViewChild,
} from '@angular/core';
import { BehaviorSubject, Subscription } from 'rxjs';
@@ -21,7 +23,6 @@ let sortItemIdNumber = 0;
@Component({
selector: 'sky-sort-item',
- styleUrls: ['./sort-item.component.scss'],
templateUrl: './sort-item.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
})
@@ -42,6 +43,9 @@ export class SkySortItemComponent implements OnInit, OnChanges, OnDestroy {
false,
);
+ @ViewChild(TemplateRef)
+ public itemTemplate?: TemplateRef | null;
+
#subscription: Subscription | undefined;
#sortItemId: string | undefined;
diff --git a/libs/components/lists/src/lib/modules/sort/sort.component.html b/libs/components/lists/src/lib/modules/sort/sort.component.html
index 796ab346d8..3057bae27d 100644
--- a/libs/components/lists/src/lib/modules/sort/sort.component.html
+++ b/libs/components/lists/src/lib/modules/sort/sort.component.html
@@ -27,7 +27,11 @@
#sortMenuHeading="skyId"
>
-
+
+
+
+
+
diff --git a/libs/components/lists/src/lib/modules/sort/sort.component.scss b/libs/components/lists/src/lib/modules/sort/sort.component.scss
index 881ad99e55..c02a5d7450 100644
--- a/libs/components/lists/src/lib/modules/sort/sort.component.scss
+++ b/libs/components/lists/src/lib/modules/sort/sort.component.scss
@@ -1,5 +1,7 @@
@use 'libs/components/theme/src/lib/styles/mixins' as mixins;
@use 'libs/components/theme/src/lib/styles/variables' as *;
+@use 'libs/components/theme/src/lib/styles/_public-api/themes/modern/_compat/mixins'
+ as modernMixins;
.sky-sort-heading-divider {
margin: 0;
@@ -19,3 +21,60 @@
display: inline;
}
}
+
+::ng-deep {
+ .sky-sort-item {
+ @include mixins.sky-dropdown-item();
+ }
+
+ .sky-sort-item-selected {
+ background-color: $sky-background-color-selected;
+ padding: 4px;
+ margin: 0;
+ }
+
+ @include mixins.sky-theme-modern {
+ .sky-sort-item {
+ margin: 0;
+ @include modernMixins.sky-theme-modern-btn-tab;
+ @include modernMixins.sky-theme-modern-btn-tab-dropdown-item;
+ padding: $sky-theme-modern-space-sm $sky-theme-modern-space-lg;
+
+ &:focus-within {
+ background-color: transparent;
+ box-shadow: $sky-theme-modern-elevation-3-shadow-size
+ $sky-theme-modern-elevation-3-shadow-color;
+ outline: solid 2px var(--sky-background-color-primary-dark);
+ outline-offset: -2px;
+ }
+
+ & button {
+ padding: 0;
+ color: $sky-text-color-deemphasized;
+ &:focus-visible {
+ outline: none;
+ }
+ }
+ }
+
+ .sky-sort-item-selected {
+ @include modernMixins.sky-theme-modern-btn-tab-selected-dropdown-item;
+ padding-left: calc(#{$sky-theme-modern-space-lg} - 3px);
+ background-color: inherit;
+
+ & button {
+ font-weight: $sky-theme-modern-text-weight-regular-value;
+ color: $sky-text-color-default;
+ }
+ }
+ }
+
+ @include mixins.sky-theme-modern-dark {
+ .sky-sort-item button {
+ color: $sky-theme-modern-mode-dark-font-deemphasized-color;
+ }
+ .sky-sort-item-selected button {
+ color: $sky-theme-modern-mode-dark-font-body-default-color;
+ }
+ }
+}
diff --git a/libs/components/lists/src/lib/modules/sort/sort.component.ts b/libs/components/lists/src/lib/modules/sort/sort.component.ts
index cb87a6ce2d..c597aac10b 100644
--- a/libs/components/lists/src/lib/modules/sort/sort.component.ts
+++ b/libs/components/lists/src/lib/modules/sort/sort.component.ts
@@ -1,7 +1,9 @@
import {
ChangeDetectionStrategy,
Component,
+ ContentChildren,
Input,
+ QueryList,
inject,
} from '@angular/core';
import { SkyContentInfo, SkyContentInfoProvider } from '@skyux/core';
@@ -9,6 +11,7 @@ import { SkyDropdownMessage, SkyDropdownMessageType } from '@skyux/popovers';
import { Observable, Subject } from 'rxjs';
+import { SkySortItemComponent } from './sort-item.component';
import { SkySortService } from './sort.service';
@Component({
@@ -38,6 +41,9 @@ export class SkySortComponent {
public dropdownController = new Subject();
+ @ContentChildren(SkySortItemComponent, { descendants: true })
+ public sortItems!: QueryList;
+
protected contentInfoObs: Observable | undefined;
#contentInfoProvider = inject(SkyContentInfoProvider, { optional: true });