Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into ag-grid-33
Browse files Browse the repository at this point in the history
* origin/main:
  feat(components/toast): add toast and toaster harness (#3141) (#3147)
  ci: workflow to keep automated-translations in sync (#3145) (#3148)
  chore: changelog for 11.41.0 (#3139) 🍒 (#3144)
  feat(components/popovers): add support for custom trigger buttons to dropdown harness (#3129) (#3137)
  feat(components/core): add SkyViewkeeper support for SkyAppViewportService properties (#3120) (#3143)
  feat(components/popovers): add custom trigger option to dropdown (#3118) (#3126)
  fix(components/datetime): address flaky display behavior of key date tooltips (#3128) (#3140)
  fix(components/router): skyHref should shut down when the application is destroyed (#3134) (#3136)
  chore: changelog for 11.40.0 (#3133) 🍒 (#3138)
  chore: add tokenization github copilot prompts (#3135)
  feat(components/pages): add `sky-modal-link-list` component (#3131) (#3132)
  chore: changelog for 11.39.0 (#3114) 🍒 (#3127)
  feat(components/manifest): add code example file contents (internal use only) (#3122)
  feat(components/layout): add harness for description list (#3124) (#3125)
  feat(components/split-view): tokenize split view styles (#3119)
  feat(components/errors): tokenize error styles (#3123)
  feat(components/inline-form): tokenize inline form styles (#3116)
  feat(components/pages): tokenize action hub styles (#3109)
  feat(components/layout): tokenize inline delete styles (#3111)
  feat(components/flyout): tokenize flyout styles (#3098)
  • Loading branch information
johnhwhite committed Feb 13, 2025
2 parents 9a38c70 + 02caf83 commit bcb53cc
Show file tree
Hide file tree
Showing 156 changed files with 5,472 additions and 1,966 deletions.
14 changes: 14 additions & 0 deletions .github/prompts/add-scss-override.prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Add given css variable to either the `sky-default-overrides` mixin or the `sky-modern-overrides` mixin based on the input.

If asked to add it to both, add it to both the `sky-default-overrides` mixin and the `sky-modern-overrides` mixin

If the mixin that the variable is to be added to doesn't exist - add it to the top of the file after the imports. Do not add any other variable to the new mixin.

If neither mixin exists - add the per #file:scss-override-mixins.prompt.md but only add the mixin that is required

If asked to use it with the current value, find the place in the scss that matches the new variable name.
Use the value in this current location and assign the new variable that value.
Use the new variable in the current location with the given fallback.

Do not add any comments in the code.
Remove any `TODO:` comments added by #file:scss-override-mixins.prompt.md
10 changes: 10 additions & 0 deletions .github/prompts/scss-override-mixins.prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Your goal is to have two empty mixins at the top of the scss file for the component.

Add compat mixins:

- Ensure that the import `@use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins;` is within the imports of the scss file for the component.
- Include the mixin `compatMixins.sky-default-overrides` outside of any selectors with a parameter of the wrapping css class from the HTML file or `TODO` if none is found.
- Include the mixin `compatMixins.sky-modern-overrides` outside of any selectors with a parameter of the wrapping css class from the HTML file or `TODO` if none is found.
- Make the mixins empty mixins with a comment of `\\ TODO: Add overrides here` inside.
- Ensure both mixins are at the top of the file directly below the imports for the scss file and before any other selectors.
- Add a single line break between the two mixins.
8 changes: 8 additions & 0 deletions .github/prompts/setup-tokenization.prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Delete modern theme dark mode styles:

- Delete all usages of `mixins.sky-theme-modern-dark`
- Completely remove the code and do not just comment it out

Add mixins:

- Run #file:./scss-override-mixins.prompt.md
86 changes: 86 additions & 0 deletions .github/workflows/automated-translations.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Developers commit changes to the LTS branch. This workflow keeps the `automated-translations` branch up to date
# with the LTS branch.
#
# Lingoport will watch the automated-translations branch and automatically translate the resources_en_US.json
# files to the target languages. The translated files will be committed back to the automated-translations branch.
#
# When the `automated-translations` branch has changes to merge back, this workflow creates a pull request.
#
# When the `automated-translations` branch is merged and deleted, this workflow recreates the branch.

name: Automated Translations 11.x.x
on:
push:
branches:
- 11.x.x
- automated-translations
workflow_dispatch:
env:
LTS_BRANCH: '11.x.x'
jobs:
automated-translations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: '${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}'
- uses: actions/setup-node@v4
id: setup-node
with:
node-version-file: '.nvmrc'
- name: Ensure cache directory exists
run: mkdir -p /home/runner/.npm
continue-on-error: true
- name: Sync Translation Branch
id: sync
run: |
./scripts/automated-translations.ps1 \
-LtsBranchName $LTS_BRANCH \
-TempPath ${{ runner.temp }}
env:
GH_TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}

- name: Notify Slack when a PR is created
if: ${{ steps.sync.outputs.prCreated == 'true' && steps.sync.outputs.prTitle && steps.sync.outputs.prUrl }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_TITLE: ':writing_hand: `automated-translations` PR created: ${{ steps.sync.outputs.prTitle }}'
SLACK_MESSAGE: '${{ steps.sync.outputs.prUrl }}'
SLACK_ICON_EMOJI: ':github:'
SLACK_USERNAME: GitHub
#cor-skyux-notifications
SLACK_CHANNEL: C01GY7ZP4HM
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: 'Blackbaud Sky Build User'
MSG_MINIMAL: 'true'

- name: Notify Slack when a PR is updated
if: ${{ steps.sync.outputs.prCreated == 'false' && steps.sync.outputs.prTitle && steps.sync.outputs.prUrl }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_TITLE: ':writing_hand: `automated-translations` PR updated: ${{ steps.sync.outputs.prTitle }}'
SLACK_MESSAGE: '${{ steps.sync.outputs.prUrl }}'
SLACK_ICON_EMOJI: ':github:'
SLACK_USERNAME: GitHub
#cor-skyux-notifications
SLACK_CHANNEL: C01GY7ZP4HM
SLACK_COLOR: ${{ job.status }}
SLACK_FOOTER: 'Blackbaud Sky Build User'
MSG_MINIMAL: 'true'

- name: Notify Slack for fails
if: ${{ failure() }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_TITLE: ':writing_hand: :x: `automated-translations` sync failed'
SLACK_MESSAGE: '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'
SLACK_ICON_EMOJI: ':github:'
SLACK_USERNAME: GitHub
#cor-skyux-notifications
SLACK_CHANNEL: C01GY7ZP4HM
SLACK_COLOR: 'fail'
SLACK_FOOTER: 'Blackbaud Sky Build User'
MSG_MINIMAL: 'true'
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,39 @@
# Changelog

## [11.41.0](https://github.com/blackbaud/skyux/compare/11.40.0...11.41.0) (2025-02-11)


### Features

* **components/core:** add SkyViewkeeper support for SkyAppViewportService properties ([#3120](https://github.com/blackbaud/skyux/issues/3120)) ([f994ff7](https://github.com/blackbaud/skyux/commit/f994ff75cb27c00a5cfdadad5c55aebabb001f8c))


### Bug Fixes

* **components/datetime:** address flaky display behavior of key date tooltips ([#3128](https://github.com/blackbaud/skyux/issues/3128)) ([bd94278](https://github.com/blackbaud/skyux/commit/bd942789232b3affeee8303190ee234aee7d27ef))

## [11.40.0](https://github.com/blackbaud/skyux/compare/11.39.0...11.40.0) (2025-02-10)


### Features

* **components/pages:** add `sky-modal-link-list` component ([#3131](https://github.com/blackbaud/skyux/issues/3131)) ([d54bb9c](https://github.com/blackbaud/skyux/commit/d54bb9cc556f53f92b1555b0526b3f8b10668154))
* **components/popovers:** add support for custom trigger buttons to dropdown harness ([#3129](https://github.com/blackbaud/skyux/issues/3129)) ([8ea599f](https://github.com/blackbaud/skyux/commit/8ea599ffcb804a88e336e5ed941678b24e6e6bf7))


### Bug Fixes

* **components/router:** skyHref should shut down when the application is destroyed ([#3134](https://github.com/blackbaud/skyux/issues/3134)) ([1dde88d](https://github.com/blackbaud/skyux/commit/1dde88dcfc9f932831ad0dbde797e51248ddadd2))

## [11.39.0](https://github.com/blackbaud/skyux/compare/11.38.1...11.39.0) (2025-02-07)


### Features

* **components/layout:** add action button harness ([#3101](https://github.com/blackbaud/skyux/issues/3101)) ([869c438](https://github.com/blackbaud/skyux/commit/869c43873fd1de008ad0c1fd385ed0393a6d5871))
* **components/layout:** add harness for description list ([#3124](https://github.com/blackbaud/skyux/issues/3124)) ([e23b4ba](https://github.com/blackbaud/skyux/commit/e23b4ba9001591b0962c30e2701e8b4ee71e71b5))
* **components/popovers:** add custom trigger option to dropdown ([#3118](https://github.com/blackbaud/skyux/issues/3118)) ([57b1488](https://github.com/blackbaud/skyux/commit/57b148867e0ef308d0c1b5700ae9b2278f6c23b0))

## [12.0.0-alpha.3](https://github.com/blackbaud/skyux/compare/12.0.0-alpha.2...12.0.0-alpha.3) (2025-02-04)


Expand Down
6 changes: 4 additions & 2 deletions apps/code-examples/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
"styles": [
"libs/components/theme/src/lib/styles/sky.scss",
"libs/components/theme/src/lib/styles/themes/modern/styles.scss",
"libs/components/ag-grid/src/lib/styles/ag-grid-styles.scss"
"libs/components/ag-grid/src/lib/styles/ag-grid-styles.scss",
"node_modules/@blackbaud/skyux-design-tokens/scss/blackbaud.css"
],
"scripts": []
},
Expand Down Expand Up @@ -100,7 +101,8 @@
"styles": [
"libs/components/theme/src/lib/styles/sky.scss",
"libs/components/theme/src/lib/styles/themes/modern/styles.scss",
"libs/components/ag-grid/src/lib/styles/ag-grid-styles.scss"
"libs/components/ag-grid/src/lib/styles/ag-grid-styles.scss",
"node_modules/@blackbaud/skyux-design-tokens/scss/blackbaud.css"
],
"scripts": [],
"assets": [],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import {
SkyHelpTestingController,
SkyHelpTestingModule,
} from '@skyux/core/testing';
import { SkyDescriptionListHarness } from '@skyux/layout/testing';

import { DemoComponent } from './demo.component';

describe('Help key description list', () => {
async function setupTest(
options: {
dataSkyId?: string;
} = {},
): Promise<{
descriptionListHarness: SkyDescriptionListHarness;
fixture: ComponentFixture<DemoComponent>;
helpController: SkyHelpTestingController;
}> {
await TestBed.configureTestingModule({
imports: [DemoComponent, SkyHelpTestingModule, NoopAnimationsModule],
}).compileComponents();

const fixture = TestBed.createComponent(DemoComponent);
const loader = TestbedHarnessEnvironment.documentRootLoader(fixture);
const helpController = TestBed.inject(SkyHelpTestingController);

const descriptionListHarness: SkyDescriptionListHarness =
await loader.getHarness(SkyDescriptionListHarness);

return { descriptionListHarness, fixture, helpController };
}

it('should set up the component', async () => {
const { descriptionListHarness, fixture, helpController } =
await setupTest();

await expectAsync(descriptionListHarness.getMode()).toBeResolvedTo(
'horizontal',
);

const content = await descriptionListHarness.getContent();

expect(content.length).toBe(4);

await expectAsync(content[0].getTermText()).toBeResolvedTo('College');
await expectAsync(content[0].getDescriptionText()).toBeResolvedTo(
'Humanities and Social Sciences',
);

await content[0].clickHelpInline();
fixture.detectChanges();
await fixture.whenStable();

helpController.expectCurrentHelpKey('college-help');
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { SkyHelpTestingModule } from '@skyux/core/testing';
import { SkyDescriptionListHarness } from '@skyux/layout/testing';

import { DemoComponent } from './demo.component';

describe('Horizontal description list', () => {
async function setupTest(
options: {
dataSkyId?: string;
} = {},
): Promise<{
descriptionListHarness: SkyDescriptionListHarness;
fixture: ComponentFixture<DemoComponent>;
}> {
await TestBed.configureTestingModule({
imports: [DemoComponent, SkyHelpTestingModule, NoopAnimationsModule],
}).compileComponents();

const fixture = TestBed.createComponent(DemoComponent);
const loader = TestbedHarnessEnvironment.documentRootLoader(fixture);

const descriptionListHarness: SkyDescriptionListHarness =
await loader.getHarness(SkyDescriptionListHarness);

return { descriptionListHarness, fixture };
}

it('should set up the component', async () => {
const { descriptionListHarness, fixture } = await setupTest();

await expectAsync(descriptionListHarness.getMode()).toBeResolvedTo(
'horizontal',
);

const content = await descriptionListHarness.getContent();

expect(content.length).toBe(4);

await expectAsync(content[0].getTermText()).toBeResolvedTo('College');
await expectAsync(content[0].getDescriptionText()).toBeResolvedTo(
'Humanities and Social Sciences',
);

await content[2].clickHelpInline();
fixture.detectChanges();
await fixture.whenStable();
await expectAsync(content[2].getHelpPopoverContent()).toBeResolvedTo(
'The faculty member who advises the student.',
);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { SkyHelpTestingModule } from '@skyux/core/testing';
import { SkyDescriptionListHarness } from '@skyux/layout/testing';

import { DemoComponent } from './demo.component';

describe('Horizontal description list', () => {
async function setupTest(
options: {
dataSkyId?: string;
} = {},
): Promise<{
descriptionListHarness: SkyDescriptionListHarness;
fixture: ComponentFixture<DemoComponent>;
}> {
await TestBed.configureTestingModule({
imports: [DemoComponent, SkyHelpTestingModule, NoopAnimationsModule],
}).compileComponents();

const fixture = TestBed.createComponent(DemoComponent);
const loader = TestbedHarnessEnvironment.documentRootLoader(fixture);

const descriptionListHarness: SkyDescriptionListHarness =
await loader.getHarness(SkyDescriptionListHarness);

return { descriptionListHarness, fixture };
}

it('should set up the component', async () => {
const { descriptionListHarness, fixture } = await setupTest();

await expectAsync(descriptionListHarness.getMode()).toBeResolvedTo(
'horizontal',
);

const content = await descriptionListHarness.getContent();

expect(content.length).toBe(4);

await expectAsync(content[0].getTermText()).toBeResolvedTo('College');
await expectAsync(content[0].getDescriptionText()).toBeResolvedTo(
'Humanities and Social Sciences',
);

await content[2].clickHelpInline();
fixture.detectChanges();
await fixture.whenStable();
await expectAsync(content[2].getHelpPopoverContent()).toBeResolvedTo(
'The faculty member who advises the student.',
);
});
});
Loading

0 comments on commit bcb53cc

Please sign in to comment.