Angular API リファレンス

@reelkit/angular のコンポーネント、ディレクティブ、サービス、ユーティリティの完全なリファレンスです。

ReelComponent

セレクター:rk-reel

入力

入力デフォルト説明
countnumber必須スライドの総数
direction'vertical' | 'horizontal''vertical'スクロールの方向
size[number, number] | undefinedundefined[幅, 高さ] の形での幅と高さ。省略すると ResizeObserver で自動計測します
initialIndexnumber0開始時のスライドのインデックス
loopbooleanfalse無限ループを有効にします
transitionTransitionTransformFnslideTransitionトランジション効果の関数。組み込み:slideTransition、fadeTransition、flipTransition、cubeTransition、zoomTransition
transitionDurationnumber300アニメーションの長さ(ms)
swipeDistanceFactornumber0.12スワイプのしきい値(0-1)
enableGesturesbooleantrueタッチやマウスのドラッグによる操作を有効にします
enableNavKeysbooleantrueキーボードの矢印キーによる操作を有効にします
enableWheelbooleanfalseマウスホイールでの操作を有効にします
wheelDebounceMsnumber200ホイールイベントのデバウンス(ms)
rangeExtractor(index: number, count: number) => number[]defaultRangeExtractor描画するインデックスを決める独自の関数
keyExtractor(index: number, indexInRange: number) => string | numberindex => index@for の track 式に使う独自のキー関数(ループ時に便利)
classNamestring''ルートのコンテナー要素に適用する CSS クラス
ariaLabelstring'Carousel'カルーセル領域のアクセシブルなラベル

出力

出力説明
afterChangeEventEmitter<{ index: number; indexInRange: number }>スライドのトランジションが完了したあとに発行されます
beforeChangeEventEmitter<{ index: number; nextIndex: number; indexInRange: number }>スライドのトランジションが始まる前に発行されます
slideDragStartEventEmitter<number>ドラッグジェスチャーが始まったときに発行されます
slideDragEndEventEmitter<number>ドラッグジェスチャーが終わった(指を離した)ときに発行されます
slideDragCanceledEventEmitter<number>ドラッグジェスチャーがキャンセルされた(元に戻った)ときに発行されます
apiReadyEventEmitter<ReelApi>ビューの初期化後に 1 回だけ発行され、命令的な API を公開します

ReelApi インターフェース

(apiReady) 出力から取得します:

typescript
メソッド説明
next()() => void次のスライドへ移動します
prev()() => void前のスライドへ移動します
goTo(index, animate?)(number, boolean?) => Promise<void>指定したスライドのインデックスへ移動します
adjust()() => voidスライドの位置を計算し直します(レイアウトが変わったあとに便利)
observe()() => voidキーボードイベントの監視を始めます
unobserve()() => voidキーボードイベントの監視を止めます

RkReelItemDirective

セレクター:[rkReelItem]rk-reel の中の ng-template に適用します。

テンプレートのコンテキスト

html
変数説明
$implicit (let-i)numberスライドの絶対インデックス(0 から count-1)
indexInRangenumber表示ウィンドウ内での位置(0、1、2)
size[number, number]現在のスライダーの寸法。[幅, 高さ] のピクセル値

ReelIndicatorComponent

セレクター:rk-reel-indicator

入力

入力デフォルト説明
countnumber | undefined自動アイテムの総数。rk-reel の中に置けば親のコンテキストから自動で接続されます。単独で使うときは明示的に渡してください
activenumber | undefined自動現在アクティブなインデックス。rk-reel の中に置けば親のコンテキストから自動で接続されます。単独で使うときは明示的に渡してください
direction'vertical' | 'horizontal''vertical'インジケーターの向き
radiusnumber3ドットの半径(ピクセル)
visiblenumber5同時に通常サイズで表示するドットの最大数
gapnumber4ドットの間隔(ピクセル)
activeColorstring'#fff'アクティブなドットの色
inactiveColorstring'rgba(255,255,255,0.5)'非アクティブなドットの色
edgeScalenumber0.5はみ出した端のドットの縮小率
classNamestring''インジケーターのコンテナーに適用する独自の CSS クラス
tablistLabelstring'Slide navigation'tablist のランドマークのアクセシブルなラベル

出力

出力説明
dotClickEventEmitter<number>ドットがクリックされたときに発行され、ドットのインデックスを渡します

RK_REEL_CONTEXT

rk-reel が子孫に提供する InjectionToken<ReelContextValue> です。rk-reel-indicator の自動接続に内部で使われています。スライダーのコンテキストが必要な独自のコンポーネントでインジェクトしてください。

typescript
プロパティ説明
indexSignal<number>現在のスライドのリアクティブなインデックス
countSignal<number>アイテムの総数のリアクティブな値
goTo(index: number, animate?: boolean) => Promise<void>プログラムからスライドへ移動します

BodyLockService

参照カウント付きで body のスクロールを止めます。同時に複数の呼び出し元(たとえばギャラリーとモーダルが両方開いている場合)がそれぞれ独立して止めたり解除したりでき、最後の呼び出し元が解除したときにだけ body が元に戻ります。ルートで提供されているので、どこでもインジェクトできます。

typescript
メンバー説明
lockedboolean (getter)body が現在ロックされているかどうか
lock()() => voidbody のスクロールを止め、スクロールバーの幅を補正します
unlock()() => voidbody の元のスクロールのスタイルに戻します

シグナルブリッジのユーティリティ

コアのシグナルシステム(@reelkit/core)と Angular ネイティブのシグナル API をつなぐユーティリティ関数です。ReelComponent が内部で使っており、独自のフレームワーク連携にも使えます。

関数シグネチャ説明
toAngularSignal(source: Subscribable<T>, destroyRef: DestroyRef) => Signal<T>コアの Subscribable を、読み取り専用の Angular の Signal につなぎます
animatedSignalBridge(source: AnimatedValue, zone: NgZone, cdRef: ChangeDetectorRef, destroyRef: DestroyRef) => Signal<number>コアのアニメーションする値を Angular の Signal につなぎ、zone の外で requestAnimationFrame によって更新します
typescript

createOverlayUrlState

OverlayUrlStateOptions

オーバーレイ用の URL 状態コントローラーを作ります。それを <rk-lightbox-url-overlay>[controller] 入力に渡します。インジェクションコンテキスト(フィールドの初期化子かコンストラクター)の中で呼んでください。すぐに接続し、DestroyRef で解放されます。手順:Angular Lightbox のページの URL の状態

オプションデフォルト説明
paramstring必須アクティブなスライドを持つクエリパラメーター(たとえば photo)。
adapterUrlAdapterHistory API読み書きに使うナビゲーションの仕組み。ルーターを使うアプリでは、Router の位置情報が古くならないよう、Router に連動したアダプターを渡してください。
codecUrlCodec<Id>必須通信形式:パラメーターの文字列から安定した識別子へ。対として locator と一緒に使います。デフォルトの ?photo=3 のギャラリーなら ...urlIndexKey(() => images().length) を展開し、並べ替えてもブックマークが保たれるようにするなら独自のものを用意します。
locatorUrlLocator<Id>必須識別子を位置に対応させ、その妥当性を自分で判断します:locate(同期)、locateAsync(ページングされたギャラリー向けの非同期フォールバック)、identify(書き込み)。

createRouterUrlAdapter

@reelkit/angular/ng-router-url-adapter

Angular の Router に連動した UrlAdapter です。ルーターを使うアプリで createOverlayUrlStateadapter オプションに渡すと、ナビゲーションの信頼できる情報源が Router だけに保たれます。Router の裏で history.pushState を書くと、その位置情報が古くなり、次のナビゲーションでパラメーターが消えます。書き込むのはクエリだけなので、パス、フラグメント、?tag=a&tag=b のような繰り返しのキーはそのまま残ります。変更のたびに、Router が同じページで push したのか、replace したのか、履歴をたどったのかを報告するので、routerLink から開いたギャラリーは 1 回戻るだけで閉じます。インジェクションコンテキストの中で呼んでください。ルーターの購読は DestroyRef で解放されます。

独自のサブパスから提供されるので、ルーティングを使わないアプリのバンドルに @angular/router が入ることはありません。@angular/router は任意の peer dependency です。

typescript

アクセシビリティ

<rk-reel>aria-roledescription="carousel" を持つ role="region" として描画されます。ariaLabel 入力を指定すると、スクリーンリーダー向けの名前が付きます。控えめなライブリージョンが、スライドが変わるたびに「Slide N of M」と読み上げます。非アクティブなスライドには inert 属性が付くので、フォーカスや支援技術での移動では飛ばされます。

<rk-reel-indicator> は、ドットにローミング tabindex を持つ role="tablist" として描画されます。矢印キーでフォーカスが移動し、Enter か Space でスライドが有効になります。

<rk-reel> を囲む独自のモーダルを作るなら、フォーカスを戻したり閉じ込めたりするために captureFocusForReturncreateFocusTrapgetFocusableElements@reelkit/angular から再エクスポートされています。

パッケージのエクスポート

@reelkit/angular の公開エクスポートの一覧:

typescript