# @blackbaud/skyux-lib-addin-client 中文文档

规范地址：https://npmcn.com/package/%40blackbaud/skyux-lib-addin-client/

版本：15\.0\.0
npm 元数据更新时间：2026-10-14T19:20:04.134Z
中文译文更新时间：2026-11-08T05:43:31.703Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40blackbaud/skyux-lib-addin-client
原文对照：https://npmcn.com/package/%40blackbaud/skyux-lib-addin-client/?lang=original
项目主页：https://github.com/blackbaud/skyux-lib-addin-client#readme
源码仓库：https://github.com/blackbaud/skyux-lib-addin-client

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：82.4 kB，6 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：@skyux/theme ^15\.2\.0，@angular/core ^22\.1\.2，@skyux/config ^15\.2\.0，@angular/common ^22\.1\.2
- 首次发布：2018-08-11T13:51:03.719Z
- 最新版本发布：2026-10-14T19:20:03.746Z
- 近 30 天下载量：12112（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：50（近 12 个月 6 个）

## 中文简介

[![npm](https://img.shields.io/npm/v/@blackbaud/skyux-lib-addin-client.svg)](https://www.npmjs.com/package/@blackbaud/skyux-lib-addin-client) ![SKY UX CI](https://github.com/blackbaud/skyux-lib-addin-client/workflows/SKY%20UX%20CI/badge.svg) \[遮 (!)

## 安装

```sh
npm install @blackbaud/skyux-lib-addin-client
```

也可以使用：`pnpm add @blackbaud/skyux-lib-addin-client`、`yarn add @blackbaud/skyux-lib-addin-client`、`bun add @blackbaud/skyux-lib-addin-client`

## README

[![npm](https://img.shields.io/npm/v/@blackbaud/skyux-lib-addin-client.svg)](https://www.npmjs.com/package/@blackbaud/skyux-lib-addin-client) ![SKY UX CI](https://github.com/blackbaud/skyux-lib-addin-client/workflows/SKY%20UX%20CI/badge.svg) [![coverage](https://codecov.io/gh/blackbaud/skyux-lib-addin-client/branch/master/graphs/badge.svg?branch=master)](https://codecov.io/gh/blackbaud/skyux-lib-addin-client/branch/master)

# SKY UX 添加客户端库

SKY UX 添加客户端库包裹下层 [SKY 添加客户端库](https://github.com/blackbaud/sky-addin-client) 并提供Angular服务,可以更方便地被SKY UX SPA所消耗. 它还提供了一个可选的插件,可以用来自动将环境标识上下文注入到您的 SKY UX SPA 中,从而去除在每个组件中跟踪和管理环境标识的需要.

## 安装

使用 npm 将库安装为您的工程的依赖 。 SKY UX 添加客户端库直接依赖SKY添加客户端库,因此不需要单独安装:

```
npm install --save @blackbaud/skyux-lib-addin-client
```

## 使用

要使用服务,请导入您的 SPA 服务 `app-extras.module.ts` 文件并添加到 `providers` 数组 :

```js
import {
  NgModule
} from '@angular/core';

import {
  AddinClientService
} from '@blackbaud/skyux-lib-addin-client';

@NgModule({
  providers: [AddinClientService]
})

export class AppExtrasModule { }
```

然后,把它注入到你的组件中,作为构建器的一部分:

```js
import {
  Component,
  OnInit
} from '@angular/core';

import {
  AddinClientService
} from '@blackbaud/skyux-lib-addin-client';

import {
  AddinClientInitArgs
} from '@blackbaud/sky-addin-client';

@Component({
  selector: 'my-tile',
  templateUrl: './my-tile.component.html',
  styleUrls: ['./my-tile.component.scss']
})
export class MyTileComponent implements OnInit {
  public context: any;

  constructor(private addinClientService: AddinClientService) {}

  public ngOnInit() {
    this.addinClientService.args.subscribe((args: AddinClientInitArgs) => {
      this.context = args.context;

      args.ready({
        showUI: true,
        title: 'My tile',
        tileConfig: {
          summaryStyle: AddinTileSummaryStyle.Text,
          summaryText: 'Summary text',
          showInlineHelp: true,
          showSettings: true
        }
      });
    });

    // Handle tile inline help icon click
    this.addinClientService.inlineHelpClick.subscribe(() => {
      this.showHelp();
    });

    // Handle tile settings icon click
    this.addinClientService.settingsClick.subscribe(() => {
      this.showSettings();
    });
  }

  private showHelp() {
    // Define what happens when the inline help icon is clicked
  }

  private showSettings() {
    // Define what happens when the settings icon is clicked
  }

}
```

这个 `AddinClientService` 为低级执行提供了包装方法。 这样您就可以使用 `getUserIdentityToken()` 函数(以前名为 `getAuthToken()`:

```js
this.addinClientService.getUserIdentityToken().subscribe((token: string) => {
  this.userIdentityToken = token;
});
```

您可以使用 `navigate` 方法 :

```js
this.addinClientService.navigate({
  url: someUrl
});
```

帮助窗口可以使用 `openHelp` 方法 :

```js
this.addinClientService.openHelp({
  helpKey: someHelpKey
});
```

您可以打开直接支持 a 的 SKY UX 组件的帮助 `helpKey` 通过提供 `AddinClientHelpService`数字 :

```js
import {
  AddinClientService,
  provideAddinClientHelp,
} from '@blackbaud/skyux-lib-addin-client'

private openModal() {
  const options: SkyModalConfigurationInterface = {
    providers: [
      {
        ...
      }
      provideAddinClientHelp(),
    ],
  };

  const modalInstance = this.modalService.open(
    MyModalComponent,
    options,
  );
}
```

您可以使用 `showModal` 方法 :

```js
this.addinClientService.showModal({
  url: someUrl,
  context: someContextObject
}).subscribe((modalResponse: any) => {
  // Define response from closing a modal
});
```

你可以用这个来表示敬酒 `showToast` 方法 :

```js
this.addinClientService.showToast({
  message: someMessage,
  style: AddinToastStyle.Info
});
```

您可以使用 `showFlyout` 方法 :

```js
this.addinClientService.showFlyout({
  url: someUrl,
  context: someContextObject
}).subscribe(() => {
  // Define what happens when a flyout has closed
});
```

您可以使用 `showConfirm` 方法 :

```js
this.addinClientService.showConfirm({
  message: 'confirm title',
  body: 'confirm message body',
  buttons: [
    {
      action: 'ok',
      text: 'OK',
      autofocus: true,
      style: AddinConfirmButtonStyle.Primary
    },
    {
      action: 'cancel',
      text: 'Cancel',
      style: AddinConfirmButtonStyle.Link
    }
  ]
}).subscribe((action) => {
  // Handle the action returned when the dialog closes
});
```

您可以使用 `showError` 方法 :

```js
this.addinClientService.showError({
  closeText: 'OK',
  description: 'An unexpected error occurred',
  title: 'Error'
});
```

您可以使用 `addEventHandler` 方法 :

```js
this.addinClientService.addEventHandler({
  eventType: 'form-data-update'
}).addinEvent.subscribe((addinEvent: AddinEvent) => {
  // get updated data from addinEvent.context object
});

this.addinClientService.addEventHandler({
  eventType: 'form-save'
}).addinEvent.subscribe((addinEvent: AddinEvent) => {
  // handle the save event, asynchronously

  addinEvent.done(); // When done, call the done function (tells the entry form it's OK to close)
});

this.addinClientService.addEventHandler({
  eventType: 'form-cancel'
}).addinEvent.subscribe((addinEvent: AddinEvent) => {
  // handle the cancel event, asynchronously

  addinEvent.done(); // When done, call the done function (tells the entry form it's OK to close)
});

this.addinClientService.addEventHandler({
  eventType: 'load-data'
}).addinEvent.subscribe((addinEvent: AddinEvent) => {
  // retrieve data based on the addinEvent.context object
  const data = [
    { id: 1, name: 'Item 1' },
    { id: 2, name: 'Item 2' }
  ];

  addinEvent.done(data);
});
```

只要主机支持事件类型,就可以将自定义事件发送到主机页面. 在将事件发送到主机页面之前, 您必须订阅 AddinClientService 的输入 `args` 事件并检查 `supportedEventTypes` 属性以决定主机页面的类型 将处理.

```js
this.addinClientService.args.subscribe((args: AddinClientInitArgs) => {
  this.supportedEventTypes = args.supportedEventTypes;

  args.ready({
    showUI: true
  });
});

// Before sending event, check to make sure the event is supported by the host page
if (this.supportedEventTypes.includes('my-event-type')) {
  // To send add-in events to the host, call the sendEvent method
  this.addinClientService.sendEvent({
    type: 'my-event-type',
    context: { /* context object to pass to host page */ }
  }).subscribe(() => {
    // host page received the event
  }, (err) => {
    // an error occurred while attempting to send the event
  });
}
```

为了确定支持自定义事件的扩展点, 请看 [https://developer.blackbaud.com/skyapi/docs/addins/概念/extension-points (英语)](https://developer.blackbaud.com/skyapi/docs/addins/concepts/extension-points)。 。 。 .

最后,你可以显示/隐藏一个 页面屏蔽等待使用 `showWait` 财务报告和审定财务报表 `hideWait` 方法:

```js
this.addinClientService.showWait();
// Execute code
this.addinClientService.hideWait();
```

## 额外配置

SKY UX 添加客户端允许通过扩展指定额外配置 `AddinClientConfigService`。 。 。 .

您可以允许您添加的客户端在一个 Blackbaud 主机页面中运行的额外来源 。 其他出处作为正则表达式模式提供. 这个 `AddinClientService` 默认已允许多个 Blackbaud 主机来源 。 如果您发现需要延长默认值,您可以通过压倒 `AddinClientConfigService`是因为 `getAddinClientConfig()` 方法.

```js
class AddinConfigService extends AddinClientConfigService {
  public override getAddinClientConfig(): AddinClientConfig {
    return {
      allowedOrigins: [
        /^https\:\/\/[\w\-\.]+\.additionalblackbauddomain\.com$/
      ]
    };
  }
}

@NgModule({
  // specify providers
  providers: [
    AddinClientService,
    {
      provide: AddinClientConfigService,
      useClass: AddinConfigService
    }
  ]
})
export class MyModule { }
```

有关创建 SKY 添加的更多信息,请查看 [SKY 开发者门户](https://developer.blackbaud.com/skyapi/docs/addins)

## 主机添加背景

从15.0.0版本开始,添加客户端给出添加文档SKY UX 在当前主题和模式下匹配添加所在位置的背景 :

-   Modal 加入获得透明背景, 因此 SKY UX 模式背景显示后面 模式.
-   框、平板、平板和垂直标签表加载使用 SKY UX 容器背景, 如 SKY UX盒,瓷砖, 和飞出它们自己的内容.
-   页面、标签、通用、全页模式、按钮、动作按钮和数据集添加内容保留 本身的背景。 SKY UX 标签不提供内容背景, 所以一个 Tab 添加到 匹配其选项卡后的任何内容,通常是页面。 一个通用加载器被嵌入 `sky-addin` 而非更具体的类型,通常作为页面的一部分.
-   当客户端无法确定添加主机所在时, 它会使用 SKY UX 容器 背景情况.

客户加一个 `<style>` 这些背景的元素。 如果添加的内容 安全政策受到限制 `style-src`,通过 `CSP_NONCE` 或者说 页:1 `ngCspNonce` 属性,因为 Angular 需要组件样式。 客户申请 同样的非ce.

### 删除历史样式覆盖

Modal 添加先前需要的全局样式覆盖使其文档透明 并隐藏 SKY UX 模式背景 。 删除它们 :

```scss
::ng-deep body { background: transparent; }
::ng-deep .sky-modal-host-backdrop { display: none; }
```

客户端现在使文档本身透明, 并保持 SKY UX 模式的背景 可见。 在您删除这些规则之前,客户端会推翻隐藏规则 上下文,所以现有的加进继续工作.

### 不打开 SKY UX 模式的模块加载

一种使其内容直接化的模式,而不是打开SKY UX模式, 应保持自己的背景。 发送空样式 `ready()`数字 :

```ts
args.ready({
  showUI: true,
  modalConfig: {
    style: {}
  }
});
```

任意 `modalConfig.style`,包括一个空对象,关闭 那个 `ready()` 电话 见 [模块样式](https://npmcn.com/package/%40blackbaud/skyux-lib-addin-client/#readme-modal-style)。 。 。 .

### 选择添加的背景

要选择背景而不是自动背景,请扩展 `AddinClientConfigService` (见 [额外配置](https://npmcn.com/package/%40blackbaud/skyux-lib-addin-client/#readme-additional-configuration))并覆盖 `getHostedSurfaceMode()`。它可以返回 :

| 模式 | 行为 |
| --- | --- |
| `'automatic'` (默认) | 如上所述,使用添加主机的背景. |
| `'preserve'` | 保留添加内容本身的背景。 客户端不更改新增文档. |
| `'container'` | 使用 SKY UX 容器背景, 无论添加的主机在哪里 . |

每个客户都问 `ready()` 如果 任何,和增加的论据传递给 `ready()`。这样可以增加一个在 为每个选择几个位置, 例如按路由 :

```ts
class AddinConfigService extends AddinClientConfigService {
  readonly #router = inject(Router);

  public override getHostedSurfaceMode(
    context: AddinClientHostedSurfaceContext
  ): AddinClientHostedSurfaceMode {
    // The list page renders as part of the host's page, so it keeps the page background.
    return this.#router.url.startsWith('/single-list') ? 'preserve' : 'automatic';
  }
}
```

模式添加仍然可以设置 `modalConfig.style` 明确,无论模式如何.

## 模块样式

一个模式加载可以设置其文档背景,主机的覆盖可以明确通过 `modalConfig.style`。这两个选项是独立的:

| 选项 | 行为 |
| --- | --- |
| `transparentBackground: true` | 使添加的文档透明, 并加入内线 `!important` `background-color: transparent` 财务报告和审定财务报表 `background-image: none` 联合国 `<html>` 财务报告和审定财务报表 `<body>`。 。 。 . |
| `transparentBackground: false` 或省略 | 保留添加内容本身的背景. |
| `hostOverlay: false` | 请主机使其模式覆盖透明 . |
| `hostOverlay: true` 或省略 | 主机保持其可见模式覆盖. |

```ts
args.ready({
  showUI: true,
  modalConfig: {
    style: {
      transparentBackground: true,
      hostOverlay: false
    }
  }
});
```

在两个选项都设置之后,添加的文档和主机的覆盖都是透明的,所以 SKY UX模式背景是唯一可见的相片. 定义 `modalConfig.style`,包括 空对象, 关闭自动背景 `ready()` 电话.

## 常见问题

### @blackbaud/skyux-lib-addin-client 是什么？

\[遮 \(\!\)

### 如何安装 @blackbaud/skyux-lib-addin-client？

在项目目录运行 npm install @blackbaud/skyux-lib-addin-client，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@skyux/theme（^15\.2\.0）、@angular/core（^22\.1\.2）、@skyux/config（^15\.2\.0）、@angular/common（^22\.1\.2）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @blackbaud/skyux-lib-addin-client 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @blackbaud/skyux-lib-addin-client 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @blackbaud/skyux-lib-addin-client 可以商用吗？

@blackbaud/skyux-lib-addin-client 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @blackbaud/skyux-lib-addin-client 的下载量有多少？

根据 npm 官方下载统计，@blackbaud/skyux-lib-addin-client 在 2026/10/09 – 2026/11/07 这 30 天内被下载 12,112 次，日均约 404 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @blackbaud/skyux-lib-addin-client 还在维护吗？

最新版本 15\.0\.0 发布于 2026/10/15（24 天前）；至今共发布 50 个版本，其中过去 12 个月发布了 6 个；首次发布于 2018/08/11。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

