リリースノート|バージョン 1.7
主要パッケージ (@yamato-daiwa/es-extensions)
新規機能
配列の弄り
破壊的変更
配列の弄り
getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne
と
getIndexOfArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne
でのの3引数目の名前変更
オブジェクト型の第3引数目に於いて、
mustThrowErrorIfElementNotFoundOrMoreThan1
プロパティは
mustThrowErrorIfElementNotFoundOrMatchesAreMultipleに名前が変更された。
- 理由
- 以前の名前が迷わせる、即ち「or more than1」を「元の配列に1個以上の要素がなくては 成らない」と勘違いしがち。 今の「or matches are multiple」(「・・・それとも一致は複数の場合」)は、 プレディケートに満たされている要素の中には複数がなくては成らないと明確に伝える様に成った。
- 貴方のコードが編集が必要に成る条件
getArrayElementSatisfiesThePredicateIfSuchElementIsExactlyOne
の利用の際、 3引数目が参照されている所が有る。- 対策
- コードエディター又は結合開発環境の適切な機能を使って、プロジェクトの全ファイルに
mustThrowErrorIfElementNotFoundOrMoreThan1
をmustThrowErrorIfElementNotFoundOrMatchesAreMultiple
に置き換えて下さい。
「RawObjectDataProcessor」クラス
ローカリゼーションオブジェクト名前変更
更新された名付けのガイドライン通り、RawObjectDataProcessorLocalization__English
と言う
ローカリゼーションオブジェクトはrawObjectDataProcessorLocalization__english
に
名前が変更された。
同じ様な変更が他のローカリゼーションオブジェクトにも適応された。
ブラウザーJavaScript (@yamato-daiwa/es-extensions-browserjs)
破壊的変更
DOMの弄り
getExpectedToBeSingleDOM_Element
とgetExpectedToBeSingleChildOfTemplateElement
関数に於ける
引数及びエラー投擲条件変更
以前、オブジェクト型の単一引数は
context
と言う多態性の任意
プロパティが有り、指定された場合、
Element型か、
Document型か、
何方からから継承した型でなければいけなかった。
当プロパティはcontextElement
に代えられ、多態性の儘だが、
型はParentNode | Readonly<{ selector: string; }>
に成った御蔭て
コンテキスト要素自体だけでなく、此れのセレクターを指定可能に成った。
但し、コンテキスト要素のセレクターが指定された場合、此れに丁度
一個の要素が該当しなければいけない、
然もないとエラーが投げられる(0個の場合は
DOM_ElementRetrievingFailedError
、2個以上の場合は
UnexpectedEventError
)。
Element
もDocument
も
ParentNode
から継承した御蔭で、旧い
プロパティの型と新しいプロパティの型が互換性が有る。
- 理由
- コンテキスト要素の指定方法の統一。
ParentNode | Readonly<{ selector: string; }>
型のcontextElement
プロパティは複数の 関数に使われる様に成っただけでなく、YDEE以外にも使われる事が有る(例えば、Yamato Daiwa Frontendと言うフロントエンド開発専用ライブラリで). - 貴方のコードが編集が必要に成る条件
getExpectedToBeSingleDOM_Element
関数か、getExpectedToBeSingleChildOfTemplateElement
関数のcontext
プロパティが使用中。- 対策
- コードエディター又は結合開発環境の適切な機能を使って、プロジェクトの全ファイルに
context
プロパティをcontextElement
に 置き換えて下さい。 コンテキスト要素ではなく、此れのセレクターが使えば便利なら、最新のAPIを 使ってリファクタリングしても良いが、エラーが投げられない様に、コンテキスト 要素のセレクターに丁度 1個の要素が該当していなければいけない。
イベント処理
addLeftClickEventHandler
関数APIの変更
相変わらず、当関数の単一の引数はオブジェクト型だが、 此れのプロパティに下記の変更が適応された。
targetElementSelector
の廃止- 当プロパティが削除されかた代わりに、
targetElement
プロパティが多態性のになった。 今後目的要素のセレクターをtargetElement
オブジェクトのselector
と言う 文字列型のプロパティで指定しなければいけない。 但し以前と相変わらず、目的要素はセレクターで指定された場合、mustApplyToAllMatchingsWithSelector
か、mustIgnoreSubsequentMatchingsWithSelector
か、mustExpectExactlyOneMatchingWithSelector
プロパティで 当セレクターに該当している複数の要素が発見された時の振る舞いを指定 しなくてはならない。 contextElement
の追加targetElementSelector
プロパティが指定された場合、 其れに加えてcontextElement
と言う新規で 任意なプロパティを用いて、 対象要素が検索される事に成るコンテキスト要素を指定出来る様に成った。targetElementSelector
の場合と同じ様に、要素のインスタンスを指定するか、 セレクターを指定出来る、但しセレクターの場合 当セレクターは単一の要素に該当していなければいけない、 さもなくばエラーが投げられるのだ。mustInvokeBeforeChildren_sHandlers
をeventPropagation
への置き換えeventPropagation
と言う新規多態性の プロパティでイベントの伝播の種類を指定可能だけでなく、 イベントの伝播自体の無効化も出来る様に成った。capturing
とbubbling
と言うeventPropagation
列挙の要素は以前の APIに比べて分かりにくいと評判されるかもしれないが、「capturing」 (DOMツリーの下降移動)と「bubbling」 (DOMツリーの上昇移動)は正規的な用語であり、正規的な用語の利用は低品質のAPIとして見做されない。
- 理由
- 他関数とのAPIの部分的な統一
- コンテキスト依存の対象要素をセレクターを指定する需要
- イベントの伝搬のもっと柔軟な指定の需要
- 貴方のコードが編集が必要に成る条件
単一の引数の下記のプロパティの中から1個以上利用中
targetElementSelector
mustInvokeBeforeChildren_sHandlers
- 対策
targetElementSelector
プロパティをtargetElement
に名前変更の上、セレクターを含めている 文字列リテラルか、此のリテラルを含めている変数を 子オブジェクトのselector
プロパティ へ移してください。 例えば、targetElementSelector: ".Card-SavingButton"
はtargetElement: { selector: ".Card-SavingButton"}
に成る。mustInvokeBeforeChildren_sHandlers: true
が指定してある場合、eventPropagation: EventPropagationTypes.capturing
に置き換えて下さい。mustInvokeBeforeChildren_sHandlers: true
が指定してある場合、eventPropagation: EventPropagationTypes.bubbling
に置き換えて下さい。