Skip to content

Commit ccc0847

Browse files
Merge branch 'main' of https://github.com/blackbaud/skyux into modern-modal-close-button-2
2 parents 8ae6bd3 + 96aa341 commit ccc0847

File tree

82 files changed

+1509
-232
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+1509
-232
lines changed

.github/actions/e2e-affected/action.yml

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,26 @@ runs:
3535
uses: actions/github-script@v8
3636
with:
3737
script: |
38-
if ('${{ inputs.percy-token }}'.trim() === '') {
38+
const percyToken = ${{ toJson(inputs.percy-token) }};
39+
const project = ${{ toJson(inputs.project) }};
40+
const branch = ${{ toJson(inputs.branch) }};
41+
const base = ${{ toJson(inputs.base) }};
42+
const head = ${{ toJson(inputs.head) }};
43+
const allowDeletedScreenshots = ${{ toJson(inputs.allow-deleted-screenshots) }};
44+
45+
if (percyToken.trim() === '') {
3946
core.warning(`
40-
The secret PERCY_TOKEN_${'${{ inputs.project }}'.toUpperCase()} is not set. Unabled to check for previous run.
47+
The secret PERCY_TOKEN_${project.toUpperCase()} is not set. Unabled to check for previous run.
4148
42-
Generate a project token at https://percy.io/82a32315/web/skyux-${{ inputs.project }}/settings and add it to https://github.com/${{ github.repository }}/settings/secrets/actions\n`);
49+
Generate a project token at https://percy.io/82a32315/web/skyux-${project}/settings and add it to https://github.com/${{ github.repository }}/settings/secrets/actions\n`);
4350
core.setOutput('affected', 'true');
4451
process.exit(0);
4552
}
4653
4754
const options = {
4855
method: 'GET',
4956
headers: {
50-
Authorization: 'Token ${{ inputs.percy-token }}'
57+
Authorization: `Token ${percyToken}`
5158
}
5259
};
5360
@@ -56,30 +63,30 @@ runs:
5663
owner: context.repo.owner,
5764
repo: context.repo.repo,
5865
workflow_id: 'e2e.yml',
59-
branch: '${{ inputs.branch }}',
66+
branch,
6067
status: 'completed',
6168
})
6269
.then(({data}) => data.workflow_runs.map(run => run.head_sha).filter(Boolean))
6370
.catch(() => []);
6471
6572
// Getting 500 commits to the base branch, looking for one where this e2e test was affected and run.
66-
const targetBranchCommits = await exec.getExecOutput('git', ['log', '--format=%H', '-500', '${{ inputs.base }}'])
73+
const targetBranchCommits = await exec.getExecOutput('git', ['log', '--format=%H', '-500', base])
6774
.then(({stdout}) => stdout.trim().split('\n'))
6875
.catch(() => []);
6976
7077
const { getLastGoodPercyBuild, getPercyTargetCommit } = require('./dist/libs/sdk/e2e-schematics/src/workflow');
7178
const targetCommit = await getPercyTargetCommit(
72-
'skyux-${{ inputs.project }}',
79+
`skyux-${project}`,
7380
targetBranchCommits,
7481
core,
7582
(url) => fetch(url, options)
7683
)
7784
.catch(() => '');
7885
core.setOutput('percy_target_commit', targetCommit);
7986
const { lastGoodCommit, buildId } = await getLastGoodPercyBuild(
80-
'skyux-${{ inputs.project }}',
87+
`skyux-${project}`,
8188
prBranchCommitsBuilt,
82-
'${{ inputs.allow-deleted-screenshots }}' !== 'false',
89+
allowDeletedScreenshots !== 'false',
8390
core,
8491
(url) => fetch(url, options)
8592
);
@@ -90,9 +97,9 @@ runs:
9097
process.exit(0);
9198
}
9299
93-
if (lastGoodCommit === '${{ inputs.head }}') {
100+
if (lastGoodCommit === head) {
94101
const fs = require('fs');
95-
fs.writeFileSync(`${{ runner.temp }}/percy-build-${{ inputs.project }}.txt`, String(buildId));
102+
fs.writeFileSync(`${{ runner.temp }}/percy-build-${project}.txt`, String(buildId));
96103
core.info(`The build for ${lastGoodCommit.substring(0, 7)} already passed.`);
97104
core.setOutput('affected', 'false');
98105
process.exit(0);
@@ -103,12 +110,12 @@ runs:
103110
'show',
104111
'projects',
105112
`--base=${lastGoodCommit}`,
106-
'--head=${{ inputs.head }}',
113+
`--head=${head}`,
107114
'--withTarget=e2e',
108115
'--affected',
109116
'--json'
110-
]).then(({stdout}) => JSON.parse(stdout)).catch(() => ['${{ inputs.project }}']);
111-
const projectAffected = affectedProjects.includes('${{ inputs.project }}');
117+
]).then(({stdout}) => JSON.parse(stdout)).catch(() => [project]);
118+
const projectAffected = affectedProjects.includes(project);
112119
if (projectAffected) {
113120
core.info(`E2E tests affected`);
114121
core.setOutput('affected', 'true');

.github/actions/nx-set-shas/action.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,13 @@ runs:
4242
uses: actions/github-script@v8
4343
with:
4444
script: |
45+
const baseBranch = ${{ toJson(steps.read-default-base.outputs.main-branch-name) }};
4546
// Find the last workflow run that intersects with commits to this PR.
4647
const pullRequests = await github.rest.pulls.list({
4748
owner: context.repo.owner,
4849
repo: context.repo.repo,
4950
state: 'open',
50-
base: '${{ steps.read-default-base.outputs.main-branch-name }}',
51+
base: baseBranch,
5152
head: `${context.repo.owner}:${process.env.GITHUB_REF_NAME}`
5253
});
5354
if (pullRequests.data.length > 0) {
@@ -64,8 +65,11 @@ runs:
6465
shell: bash
6566
run: |
6667
echo "Base SHA"
67-
echo ${{ steps.nx-set-shas.outputs.base }}
68+
echo "$BASE_SHA"
6869
echo ""
6970
echo "Head SHA"
70-
echo ${{ steps.nx-set-shas.outputs.head }}
71+
echo "$HEAD_SHA"
7172
echo ""
73+
env:
74+
BASE_SHA: ${{ steps.nx-set-shas.outputs.base }}
75+
HEAD_SHA: ${{ steps.nx-set-shas.outputs.head }}

.github/workflows/cherry-pick.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ jobs:
9898
exit 0
9999
fi
100100
101+
echo "package_version=$(git cat-file --textconv origin/${{ env.FROM_BRANCH }}:package.json | jq -r .version)" >> $GITHUB_OUTPUT
101102
echo "commit_message=$(git log -1 --pretty=%s)" >> $GITHUB_OUTPUT
102103
env:
103104
GH_TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
@@ -127,9 +128,9 @@ jobs:
127128
core.exportVariable('CHERRY_PICK_RESULT', 'success');
128129
const labels = pr.labels.map(label => label.name).filter(label => label.startsWith('risk level') || label === 'skip e2e');
129130
const assignees = pr.user.login && pr.user.type === 'User' && pr.user.login !== 'blackbaud-sky-build-user' ? [pr.user.login] : [];
130-
if (labels.length === 0 && pr.labels.find(label => label.name.startsWith('autorelease'))) {
131+
if (labels.length === 0 && pr.title === 'chore: release ' + ${{ toJson(steps.cherry-pick.outputs.package_version) }}) {
131132
// Changelog PR, so add minimal risk level labels.
132-
labels.push('risk level (author): 1');
133+
labels.push('risk level (author): 1', 'skip e2e');
133134
}
134135
return github.rest.issues.update({
135136
owner: context.repo.owner,

.github/workflows/e2e-check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
steps:
1111
- uses: actions/github-script@v8
1212
with:
13-
github-token: ${{ secrets.GITHUB_TOKEN }}
13+
github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
1414
script: |
1515
const sha = (context.payload && context.payload.commit && context.payload.commit.sha) || (context.payload && context.payload.after);
1616
if (!sha) {

.github/workflows/e2e.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,20 @@ jobs:
8484
set -exo pipefail
8585
if [ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]; then
8686
echo -n parameters= >> $GITHUB_OUTPUT
87-
npx skyux-dev e2e-workflow --workflowTrigger=pull_request --pr=${{ steps.set-shas.outputs.pr-number }} >> $GITHUB_OUTPUT
87+
npx skyux-dev e2e-workflow --workflowTrigger=pull_request --pr="$PR_NUMBER" >> $GITHUB_OUTPUT
8888
else
8989
echo -n parameters= >> $GITHUB_OUTPUT
90-
npx skyux-dev e2e-workflow --pr=${{ steps.set-shas.outputs.pr-number }} >> $GITHUB_OUTPUT
90+
npx skyux-dev e2e-workflow --pr="$PR_NUMBER" >> $GITHUB_OUTPUT
9191
fi
92+
env:
93+
PR_NUMBER: ${{ steps.set-shas.outputs.pr-number }}
9294
- name: Show workflow parameters
9395
run: |
9496
echo 'Using workflow parameters:'
9597
echo ''
96-
echo '${{ steps.parameters.outputs.parameters }}' | jq
98+
echo "$PARAMETERS" | jq
99+
env:
100+
PARAMETERS: ${{ steps.parameters.outputs.parameters }}
97101
- name: Cache e2e-schematics
98102
uses: actions/cache@v4
99103
id: cache-e2e-schematics

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,55 @@
11
# Changelog
22

33

4+
## [14.0.0-alpha.8](https://github.com/blackbaud/skyux/compare/14.0.0-alpha.7...14.0.0-alpha.8) (2026-03-12)
5+
6+
7+
### ⚠ BREAKING CHANGES
8+
9+
* **components/split-view:** replace `@angular/animations` with CSS transitions (#4284)
10+
11+
### Features
12+
13+
* **components/data-manager:** filter button and modal options now deprecated ([#4277](https://github.com/blackbaud/skyux/issues/4277)) ([e630769](https://github.com/blackbaud/skyux/commit/e6307699ca42d6e8c4bc559498e9a1b05fa34ea0)), closes [AB#3611499](https://dev.azure.com/blackbaud/Products/_workitems/edit/3611499)
14+
* **components/indicators:** add `getNames()` method to illustration resolver service ([#4289](https://github.com/blackbaud/skyux/issues/4289)) ([#4294](https://github.com/blackbaud/skyux/issues/4294)) ([23c86cf](https://github.com/blackbaud/skyux/commit/23c86cfcb52c8769c082a4a07390f474d5344856))
15+
16+
17+
### Bug Fixes
18+
19+
* **components/filter-bar:** filter items can be created via for loop ([#4287](https://github.com/blackbaud/skyux/issues/4287)) ([#4291](https://github.com/blackbaud/skyux/issues/4291)) ([32d567e](https://github.com/blackbaud/skyux/commit/32d567e6ac814dab7536ce590399a8960f520863))
20+
* **components/lookup:** update search background when using expand mode fit ([#4290](https://github.com/blackbaud/skyux/issues/4290)) ([#4297](https://github.com/blackbaud/skyux/issues/4297)) ([f593ca7](https://github.com/blackbaud/skyux/commit/f593ca7cd76a7805aa5ffd8f70f724910cb61c07)), closes [AB#3647693](https://dev.azure.com/blackbaud/Products/_workitems/edit/3647693)
21+
* **components/split-view:** replace `@angular/animations` with CSS transitions ([#4284](https://github.com/blackbaud/skyux/issues/4284)) ([607e7f5](https://github.com/blackbaud/skyux/commit/607e7f517bbe5246bd74a6cf481e2b315b522da1))
22+
23+
## [13.16.1](https://github.com/blackbaud/skyux/compare/13.16.0...13.16.1) (2026-03-12)
24+
25+
26+
### Bug Fixes
27+
28+
* **components/lookup:** update search background when using expand mode fit ([#4290](https://github.com/blackbaud/skyux/issues/4290)) ([5156ff5](https://github.com/blackbaud/skyux/commit/5156ff5b4577a7970f29a23f91de7fe39e3f5994)), closes [AB#3647693](https://github.com/AB/issues/3647693)
29+
30+
31+
32+
# [13.16.0](https://github.com/blackbaud/skyux/compare/13.15.0...13.16.0) (2026-03-12)
33+
34+
35+
### Bug Fixes
36+
37+
* **components/filter-bar:** filter items can be created via for loop ([#4287](https://github.com/blackbaud/skyux/issues/4287)) ([9f266e9](https://github.com/blackbaud/skyux/commit/9f266e9310954fda5d6897fb11d28e2b582dccf2))
38+
39+
40+
### Features
41+
42+
* **components/indicators:** add `getNames()` method to illustration resolver service ([#4289](https://github.com/blackbaud/skyux/issues/4289)) ([a88efbc](https://github.com/blackbaud/skyux/commit/a88efbce92d99d9921696eb48efafde71ac6f8a9))
43+
44+
45+
46+
## [14.0.0-alpha.7](https://github.com/blackbaud/skyux/compare/14.0.0-alpha.6...14.0.0-alpha.7) (2026-03-10)
47+
48+
49+
### Bug Fixes
50+
51+
* **sdk/skyux-eslint:** avoid creating duplicate identifiers ([#4278](https://github.com/blackbaud/skyux/issues/4278)) ([e2346a0](https://github.com/blackbaud/skyux/commit/e2346a0dcc4842972b34e40937b7d7a6c1be5c59)), closes [AB#3614172](https://dev.azure.com/blackbaud/Products/_workitems/edit/3614172)
52+
453
# [13.15.0](https://github.com/blackbaud/skyux/compare/13.14.3...13.15.0) (2026-03-10)
554

655

apps/e2e/flyout-storybook/src/app/flyout/flyout-responsive.component.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ <h2>Responsive flyout</h2>
66
<div class="flyout-responsive-box box-2"></div>
77
</div>
88
<div
9-
[class]="'flyout-responsive-wrapper flyout-media-' + currentMediaBreakpoint"
9+
[class]="
10+
'flyout-responsive-wrapper flyout-media-' + currentMediaBreakpoint()
11+
"
1012
>
1113
<div class="flyout-responsive-box box-3"></div>
1214
<div class="flyout-responsive-box box-4"></div>
Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { Component } from '@angular/core';
2-
import { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';
1+
import { Component, inject } from '@angular/core';
2+
import { toSignal } from '@angular/core/rxjs-interop';
3+
import { SkyMediaQueryService } from '@skyux/core';
34

45
@Component({
56
selector: 'app-flyout-responsive',
@@ -8,28 +9,7 @@ import { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';
89
standalone: false,
910
})
1011
export class FlyoutResponsiveComponent {
11-
public currentMediaBreakpoint: 'xs' | 'sm' | 'md' | 'lg' = 'lg';
12-
13-
constructor(private mediaQueryService: SkyMediaQueryService) {
14-
this.mediaQueryService.subscribe((breakpoint) => {
15-
switch (breakpoint) {
16-
case SkyMediaBreakpoints.xs: {
17-
this.currentMediaBreakpoint = 'xs';
18-
break;
19-
}
20-
case SkyMediaBreakpoints.sm: {
21-
this.currentMediaBreakpoint = 'sm';
22-
break;
23-
}
24-
case SkyMediaBreakpoints.md: {
25-
this.currentMediaBreakpoint = 'md';
26-
break;
27-
}
28-
default: {
29-
this.currentMediaBreakpoint = 'lg';
30-
break;
31-
}
32-
}
33-
});
34-
}
12+
protected readonly currentMediaBreakpoint = toSignal(
13+
inject(SkyMediaQueryService).breakpointChange,
14+
);
3515
}

apps/e2e/lookup-storybook/src/app/search/search.component.html

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,19 @@
44
<div id="empty-search" class="search-visual-wrapper">
55
<sky-search />
66
</div>
7+
<div class="sky-padding-even-md">
8+
<sky-box>
9+
<sky-box-content>
10+
<sky-toolbar>
11+
<sky-toolbar-item>
12+
<sky-search />
13+
</sky-toolbar-item>
14+
</sky-toolbar>
15+
<sky-toolbar>
16+
<sky-toolbar-item>
17+
<sky-search expandMode="fit" />
18+
</sky-toolbar-item>
19+
</sky-toolbar>
20+
</sky-box-content>
21+
</sky-box>
22+
</div>
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
import { CommonModule } from '@angular/common';
22
import { NgModule } from '@angular/core';
33
import { RouterModule, Routes } from '@angular/router';
4+
import { SkyBoxModule, SkyToolbarModule } from '@skyux/layout';
45
import { SkySearchModule } from '@skyux/lookup';
56

67
import { SearchComponent } from './search.component';
78

89
const routes: Routes = [{ path: '', component: SearchComponent }];
910
@NgModule({
1011
declarations: [SearchComponent],
11-
imports: [CommonModule, RouterModule.forChild(routes), SkySearchModule],
12+
imports: [
13+
CommonModule,
14+
RouterModule.forChild(routes),
15+
SkyBoxModule,
16+
SkySearchModule,
17+
SkyToolbarModule,
18+
],
1219
exports: [SearchComponent],
1320
})
1421
export class SearchModule {}

0 commit comments

Comments
 (0)