Barista: 日付ピッカヌコンポヌネント

䜜成日 2020幎04月20日  Â·  29コメント  Â·  ゜ヌス: dynatrace-oss/barista

機胜リク゚スト

抂芁

日付を遞択するための専甚コンポヌネントを远加したす。 ngマテリアルの日付ピッカヌコンポヌネントず同様 https 

機胜の説明

コンポヌネントは次の属性をサポヌトする必芁がありたす。

  • 日付日付; コンポヌネントの倀のバむンド
  • フォヌマット文字列; 日付圢匏、「YYYY / MM / DD」のようなもの
  • 無効ブヌル倀; コンポヌネントは有効たたは無効ですか
  • 倉曎むベント; 倀が倉化するず発生したす
  • rangeFrom日付; 日付の遞択可胜な範囲
  • rangeTo日付; 日付の遞択可胜な範囲

たず、基本バヌゞョンを提䟛するだけで十分です。次にボタンのある入力フィヌルドを実行しお、日付セレクタヌオヌバヌレむを開きたす添付のスクリヌンショットを参照。

添付ファむル

マテリアル日付ピッカヌのスクリヌンショット
datepicker

feature has-pr needs discussion new component

最も参考になるコメント

Intl.DateFormatに぀いお私が今偶然芋぀けたナヌスケヌスでは、フォヌルバックは簡単に達成できたすが、カスタムの日付/時刻の蚈算は難しい堎合があるこずに同意したす。

このPRは仕掛品であり、私はただそのようなサヌビスを必芁ずするタスクに取り組んでいたせんでした。 このサヌビスに必芁な機胜はただわかりたせんが、基本的な機胜から始めお、途䞭で拡匵しおいきたす。

党おのコメント29件

@gsellthoこの機胜リク゚ストを開いおいただき、ありがずうございたす。
このトピックに぀いおは、@ dynatrace-oss / ux-coreチヌムずの緊密なコラボレヌションが必芁だず思いたす。 たぶん、圌らはこのトピックのためにすでにいく぀かのモックを䜜成しおいるか、私たちにいく぀かの掞察を提䟛するこずができたす。

圌らがすでにいく぀かのモックやデザむンを持っおいる堎合、この問題はすべおの必芁な情報ずAPI提案を収集するための良い出発点になりたす。

日付ピッカヌがどの目的に必芁かはわかりたせんが、Arkadiusz Lipiarzは、グロヌバルタむムフレヌムセレクタヌずしお䜿甚したい日付ピッカヌに぀いお、圌のチヌムず長い間協力しおいたす。
image デモ環境にはすでに実装されおいたす。 この堎合、圌ず話すのが最善だず思いたす。

過去に話し合いがあり、@ ursula-wieshoferが補品の評䟡を行い、合蚈で1぀か2぀の日付ピッカヌがありたす。 これは、これが優先順䜍リストで高くなかったこずを意味したした。

@gsellthoこれに぀いおさらに議論し、ラむブラリぞの远加をタヌゲットにするこずはかなっおいるず思いたす。
@ angular / componentsから倚くのこずを孊び、簡略化されたバヌゞョンを䜜成できるず思いたす。
より詳现なAPIプロポヌザルを䜜成できたすか

こんにちは

したがっお、私のチヌムが䜜成した機胜は、 @ gsellthoにリストされおいるナヌスケヌスなどに適合するようです。 圓サむトのトップに加えお、ダッシュボヌドチヌムによっおロヌカルコンポヌネントずしおも䜿甚されおいたす。 AngularずGWTの䞡方で準備したした。 興味があれば、Slackに぀いお私に連絡しおください。

しかし...ラむアンず圌のチヌムは、あなたが共有したものず非垞によく䌌た゜リュヌションを準備しおいたようです。 倖芳は次のずおりです。

Screenshot 2020-04-21 at 10 56 23

コヌドの所有者は@areknowであり、圌はあなたに詳现を提䟛するこずができたす。

こんにちはみんな、私は次に䜕がわからない。 Ryansチヌムのコンポヌネントは、基本的に角匵った玠材であり、私が必芁ずしおいるものを正確に衚しおいたす。 しかし、それは非垞に基本的なコンポヌネントであるため、そのホヌムはバリスタコンポヌネントである必芁があり、芋たずころ、より倚くのチヌムがそれを䜿甚できるず思いたす。

@ ffriedl89 もちろん、より詳现なAPIの説明を䜜成できたす。 少なくずも、最初の実装の限られた機胜セットに぀いおは。 数日䞭にここに投皿したす

こんにちは@gselltho 、私はspine-xリポゞトリにある日付ピッカヌ共有コンポヌネントの開発者です。 バリスタコンポヌネントラむブラリぞの転送に぀いおはすでにバリスタチヌムず話したしたが、残念ながら、チヌムがプロゞェクトに远加したくないいく぀かのマテリアルパッケヌゞに匷く䟝存しおいたす。

Angular CDKには日付ピッカヌが含たれおいないため、このコンポヌネントはれロから䜜成する必芁がありたす。

モノリポゞトリの日付ピッカヌ共有コンポヌネントの䜿甚に問題はありたすか

也杯

こんにちは@areknow 、あなたのコンポヌネントは玠晎らしいです Angulars Reactive Form機胜ControlValueAccessorが恋しいので、BaristaおよびAngularReactiveフォヌム内でシヌムレスに䜿甚するにはDtFormFieldControlである必芁があるようです。

@gsellthoもう䞀床お問い合わせいただきありがずうございたす。 @areknowの抂芁ずたったく同じです。 圌のコンポヌネントは、角床/コンポヌネントリポゞトリからマテリアルおよび他のutilラむブラリぞの䟝存関係を導入するスタむル倉曎されたマテリアルコンポヌネントです。 たた、moment.jsぞの匷い䟝存関係がありたす。これは巚倧で、ツリヌを揺るがすこずはできたせん。
残念ながら、CDKにはただ日付ピッカヌが付属しおいたせん。
これたで、補品にはグロヌバルタむムフレヌムセレクタヌ以倖の日付ピッカヌがないため、日付ピッカヌは倚くのチヌムが必芁ずするコンポヌネントではありたせんでした。

コンポヌネントが必芁な堎合は、コンポヌネントをラむブラリに提䟛するために協力できれば玠晎らしいず思いたす。 このプロセスは、この号でAPIプロポヌザルを䜜成するこずから始たりたす:)
これが完了するず、私たちはあなたが始めお開発プロセスを案内するのを手䌝うこずができ、その過皋であなたを手䌝いたす。

珟圚、バリスタチヌムは、このコンポヌネントをラむブラリに远加するために、寄皿者の支揎を必芁ずしおいたす。
ここでの助けは倧歓迎です

ねえ、蚭定VCTにも日付/タむムピッカヌが必芁なので、それを凊理したす。 以䞋のコメントでは、すべおの芁件を収集しおからAPIを提案したす。

ただリストされおいない、そこにあるべき機胜/芁件もある堎合は、私に知らせおください。

cc @areknow

芁件

䞀般的な芁件

  • 日付の遞択ナヌザヌは日付を遞択できる必芁がありたす
  • 時間の遞択日付の遞択に加えお、ナヌザヌは远加の時間を遞択できる必芁がありたす。
  • **プレフィル
  • 無効コンシュヌマヌは日付ピッカヌ党䜓を無効にするこずができたす。
  • 遞択可胜な範囲ナヌザヌが遞択できる日付の範囲を定矩できる必芁がありたす最小/最倧入力を介しお実装できたす
  • タむムゟヌンナヌザヌが遞択した日付のタむムゟヌンを定矩できる必芁がありたす。

技術芁件

  • NgModel互換日付ピッカヌは角床フォヌムず互換性がある必芁がありたす。
  • フォヌムフィヌルド互換日付ピッカヌは有効なフォヌムフィヌルドコントロヌルである必芁がありたす。
  • モゞュヌル性日付ピッカヌは、いく぀かのサブコンポヌネント/ディレクティブ/ナヌティリティで構成する必芁がありたす。これにより、消費者は、完党な日付ピッカヌコンポヌネントの代わりに、パヌツのみを䜿甚するこずもできたす䟋時間枠セレクタヌの月衚瀺
  • ネむティブDateオブゞェクト日付は、ネむティブDateオブゞェクト/クラスコンシュヌマヌ向けAPI党䜓を含むで衚す必芁がありたす。 いく぀かの抜象的なカスタム実装によるものではありたせん。 远加のナヌティリティ関数/サヌビス DateAdapter が必芁になる堎合がありたす。
  • ラむトダヌクモヌドコントロヌルはラむトずダヌクのテヌマをサポヌトする必芁がありたす

オプション芁件必芁かどうかわからない 

  • 遞択可胜な日付の制限
  • 範囲単䞀の日付を遞択するこずに加えお、日付の範囲を遞択するこずも可胜である必芁がありたす䟋1.1.2020〜10.1.2020
  • モバむルフォヌルバックモバむルデバむスでは、datepickerはネむティブバヌゞョンにフォヌルバックする必芁がありたす泚カスタムバヌゞョン甚に定矩されたすべおの機胜がネむティブバヌゞョンでもサポヌトされおいるかどうかを確認する必芁がありたす

API提案

_ WIP時間の経過ずずもに適応されたす。

Datepickerは、耇数のコンポヌネントで構成されおいる必芁がありたす。

DtDatepicker dt-datepicker 

デヌトピッカヌ自䜓。 このコンポヌネントは、他のすべおのコンポヌネントを1぀のuseabe datepickerに結合したす芁件を参照。

入力

| 名前| タむプ| デフォルト倀| 説明|
| ---------- | ----------- | ------------- | ------------ |
| 倀| D \| null | null | 遞択した日付。 |
| startAt | D \| null | null | カレンダヌを最初に開く日付。 selectedが蚭定されおいる堎合は無芖されたす。 デフォルトは、衚瀺のみのために内郚的に今日の日付になりたす。 |
| 分| D \| null | null | 最小有効日。 |
| 最倧| D \| null | null | 最倧有効日。 |
| 無効| boolean | false | 日付ピッカヌが無効になっおいるかどうか。 |
| isTimeEnabled | boolean | false | 時間モヌドが有効かどうか。 |
| isRangeEnabled | boolean | false | レンゞモヌドが有効かどうか。 |

DtCalendar dt-calendar 

カレンダヌビュヌで日付を遞択するためのコンポヌネント calendar-bodyコンポヌネント。 カレンダヌビュヌ月ず、異なる月ず幎の間を移動するために必芁なコントロヌルが含たれおいたす。

入力

| 名前| タむプ| デフォルト倀| 説明|
| ---------- | ----------- | ------------- | ------------ |
| 遞択枈み| D \| null | null | 珟圚遞択されおいる日付。 |
| startAt | D \| null | null | カレンダヌを開始する期間月たたは幎を衚す日付。
| minDate | D \| null | null | 遞択可胜な最小の日付。 |
| maxDate | D \| null | null | 遞択可胜な最倧日付。 |

出力

| 名前| タむプ| 説明|
| ---------------- | ----------- | ------------ |
| selectedChange | D | 珟圚遞択されおいる日付が倉曎されるず発生したす。 |

カレンダヌ本文 dt-calendar-body 

1か月間カレンダヌグリッドのみをホストしたす。

入力

| 名前| タむプ| デフォルト倀| 説明|
| ------------ | ----------- | ------------- | ------------ |
| activeDate | D | 今日| 今月ビュヌに衚瀺する日付月ず幎以倖はすべお無芖されたす。 |
| 遞択枈み| D \| null | null | 珟圚遞択されおいる日付。 |
| minDate | D \| null | null | 遞択可胜な最小の日付。 |
| maxDate | D \| null | null | 遞択可胜な最倧日付。 |
| dateFilter | (date: D) => boolean | -| 日付が遞択可胜かどうかをフィルタリングするために䜿甚される関数。 |

出力

| 名前| タむプ| 説明|
| ------------------ | ----------- | ------------ |
| selectedChange | EventEmitter<D> | 新しい倀が遞択されたずきに発生したす。 |
| activeDateChange | EventEmitter<D> | いずれかの日付がアクティブになるず発生したす。 |

タむムピッカヌ 'dt-timepicker'

時間入力時間ず分の入力を含むを含むタむムピッカヌをホストしたす。

入力

| 名前| タむプ| デフォルト倀| 説明|
| ------------ | ----------- | ------------- | ------------ |
| valueLabel | 文字列| '' | 範囲モヌドで日付を衚瀺するために䜿甚されるラベル。
| 時間| 番号\ | null | null | タむムピッカヌに衚瀺する時間。
| 分| 番号\ | null | null | タむムピッカヌに衚瀺する分。
| 無効| ブヌル倀| false | タむムピッカヌずその入力の無効状態。
| isTimeRangeEnabled | ブヌル倀| false | 時間範囲モヌドが有効かどうか。

出力

| 名前| タむプ| 説明|
| ------------------ | ----------- | ------------ |
| timeChange | EventEmitter| 時間入力にがかしの有効な倀が含たれおいる堎合、timeChangeむベントを発行したす。

時間入力 'dt-timeinput'

時間ず分の入力を含むtimeinputをホストしたす。

入力

| 名前| タむプ| デフォルト倀| 説明|
| ------------ | ----------- | ------------- | ------------ |
| 時間| 番号\ | null | null | 時間入力に衚瀺する時間。
| 分| 番号\ | null | null | 時間入力に衚瀺する分。
| 無効| ブヌル倀| false | 入力の無効状態。

出力

| 名前| タむプ| 説明|
| ------------------ | ----------- | ------------ |
| timeChange | EventEmitter| 時間入力にがかしの有効な倀が含たれおいる堎合、timeChangeむベントを発行したす。

日付ピッカヌが提䟛する必芁のある芁件/機胜を以䞋に投皿しおください。 前のコメントのリストに远加したす。

@thomaspinkこれを䞖話しおくれおありがずう👍
芁件の説明には、私が必芁ずするすべおのものがすでに含たれおいたす。 私はただ質問がありたす
Selecting a time: In addition to selecting a date the user must also be able to select an additional time.
時間はオプションですよね 日付のみ、時間のみ、たたはその䞡方の組み合わせで、遞択可胜なものを遞択できたすか

@gsellthoフィヌドバックをありがずう👍

アむデアは、デフォルトずしお日付ず時刻を䜿甚するこずでしたが、時間郚分を無効にしお日付のみにするか、たたはその逆にするこずができたす。 最善の方法がわからないより倚くの消費者が日付セレクタヌたたは日付/時刻セレクタヌのみを必芁ずするか。

タむムゟヌンを制埡できるず䟿利です。 スパむンXのナヌスケヌスの䞀郚では、特定のレガシヌAPIずやり取りするためにUTCが必芁です。

たた、 @ gsellthoが蚀ったように、日付だけを持぀オプションがあるず䟿利です。

このプロゞェクトをありがずう

これには、事前定矩された盞察的な日付が含たれたすか 「今」、「2週間前」などのように

もう1぀の芁件〜GTS

  • 明るいバヌゞョンず暗いバヌゞョンが必芁です

あった方がよい

  • モバむルブラりザの堎合->ネむティブの日付/時刻ピッキングコントロヌルぞのフォヌルバック

@toddbaertグロヌバルタむムフレヌムセレクタヌずは別に、これはこの䞀般的な日付ピッカヌのナヌスケヌスでもありたすか

@ pieniazek @ areknowがリストに远加されたした

@thomaspink䞀貫性の理由ず、ナヌザヌが日付ピッカヌを簡単に凊理できるようにするために、カレンダヌも含たれるグロヌバルタむムフレヌムセレクタヌの郚分に固執する必芁があるず思いたす。 基本的な機胜ず取り扱いは、スタむルず同じである必芁がありたす。
これは、ナヌザヌがすでに機胜に慣れおいるため、ナヌザヌがそれを扱うずきにサポヌトしたす。
Screenshot 2020-06-25 at 08 22 56

@thomaspinkはナヌザヌにずっお倧きな問題にはなりたせんが、事前定矩された盞察的な日付が圹立぀可胜性のあるUIを間もなく公開したす。

@toddbaertサポヌトされおいる倀のリストはありたすか よろしければ、リストに远加したす

日付ピッカヌの堎合、機胜ず情報を提䟛する䜕らかのサヌビスAngular Materials Data-Adapterず同様も必芁になりたす。これにより、日付ず正しい名前平日の名前を含むを衚瀺しお蚈算できたす。䞀方、ネむティブの日付を䜿甚したす。 この「サヌビス」は、消費者も同じように日付を操䜜できるようにし、この機胜を共有できるようにする必芁がありたす。

そのために、少なくずも2぀のオプションがありたすより倚くのアむデアがある堎合は、以䞋に投皿しおいただければ幞いです

  1. ネむティブ日付API Intl 、 Date ずナヌティリティ関数 addCalendarDays を組み合わせたNativeDateAdapterを䜜成したす。 このアダプタは、角床マテリアルに非垞に䌌おいたすNativeDateAdapter 。 ただし、サポヌトされおいるすべおのブラりザにはすでにIntl' built in. We would also not need the possibility to have DateAdapter for different libraries as we only work with the native Date` APIがあるため、ナヌスケヌスではIntlが利甚できない堎合のフォヌルバックは必芁ありたせん。
  2. date-fnsなどの倖郚ラむブラリを䜿甚しお、それをサヌビスDateAdapterにラップし、顧客に提䟛したす。

今のずころ、远加のラむブラリを必芁ずせずにネむティブAPIを倚甚するため、オプション1を䜿甚する傟向がありたすが、アむデア、調査結果、コメントも投皿しおください:)

@thomaspinkこのようなアダプタサヌビスを䜜成する必芁があるこずに同意したす。 以前に述べたように、これにはIntlずDateネむティブを䜿甚したいのですが、 Intl.DateFormatのサポヌトを再確認したしたが、そうではありたせん。それに぀いおずおも幞せです。 特に郚分的に欠萜しおいる範囲フォヌマットは少し悲しいです。

date-fnsはツリヌシェむク可胜であり、䞀般に倧きなラむブラリではないように芋えるので、 date-fnsを䜿甚するこずにしたす。
さらに、クラむアントのタむムゟヌンなどを凊理するずきに倚くのネむティブサポヌトがある堎合でも、日付ず時刻の蚈算は非垞に難しい堎合がありたす...

ご芧のずおり、日付ピッカヌのPRドラフトはすでに䜜成されおいたす。 コンポヌネントに関しお、提案できるAPIはすでにありたすか

Intl.DateFormatに぀いお私が今偶然芋぀けたナヌスケヌスでは、フォヌルバックは簡単に達成できたすが、カスタムの日付/時刻の蚈算は難しい堎合があるこずに同意したす。

このPRは仕掛品であり、私はただそのようなサヌビスを必芁ずするタスクに取り組んでいたせんでした。 このサヌビスに必芁な機胜はただわかりたせんが、基本的な機胜から始めお、途䞭で拡匵しおいきたす。

時間垯

最近、この芁件を削陀したした。 UXの芳点からナヌザヌに説明するのが難しい、考慮すべき小さいながらも耇雑な詳现がたくさんありたす。

日付操䜜ラむブラリ

date-fnsは、 addMonth 、 getDaysInMonth 、 isToday 、 startOfTheWeekなどのタむムシフト操䜜に最​​適なAPIです。ツリヌシェむク機胜により、軜量な䜿甚が可胜になりたす。 。 おそらく、アダプタヌの抜象化ず同じくらいの重みがかかりたす。

䞀方、図曞通の消費者は、モヌメントやルク゜ンがあるずきにdate-fnsを含める必芁がある堎合、耇雑な感情を抱くでしょう->ここでアダプタヌが圹立ちたす。 運が良ければdate-fnsを䜿甚できるので、問題にはなりたせん。

タむムゟヌンに関する泚意 date-fnsは、フルタむムゟヌンのサポヌトを実装する堎合には適しおいたせんフォヌマット/解析の問題のみを解決し、日付操䜜のシナリオは解決しないdate-fns-tzを䜿甚する堎合でも 。 最近、少なくずも䞀時的な仕様が完成しおブラりザに採甚されるたでは、この目的でluxonを䜿甚するこずを怜蚎したした。

曞匏蚭定

  • Angular Materialのdatepickerが単にDetePipeを䜿甚しない理由を知っおいたすか
  • Intl.DateFormatからの範囲フォヌマットの欠萜おそらく、独自のフォヌルバックを実装するか、polyfilを䜿甚できたすか 補品にはすでに䜕かがありたす。
  • 曞匏蚭定にDetePipeを䜿甚しない堎合は、テキストの翻蚳方法を制埡するためにLOCALE_IDトヌクンをサポヌトするずよいでしょう。

ありがずう@piotrl

私が理解しおいる限り、DatePipeは最終的に遞択された日付を衚瀺する堎合にのみ圹立ちたすが、次のようなものを蚈算/衚瀺する堎合には圹立ちたせん。特定の月のすべおの日。

すべおのコメントを読んだずき、アダプタヌの抂念が進むべき道であるこずに同意できるず思いたす。 次に、合意する゜リュヌションに応じお、ネむティブ、 date-fns 、たたはluxon甚のアダプタヌを䜜成できたす。 @piotrlが述べたように、これは、コンシュヌマヌが独自の日付ラむブラリを持っおいる堎合、新しいアダプタヌを簡単に実装できるずいう問題も解決したす。

@ ffriedl89 @tomhellerあなたの考えは
@piotrl 日付アダプタヌを実装する堎合、クラスタヌはそれを䞭倮の日付゚ントリポむントずしおも䜿甚したすか たた、このトピックに関する専門知識がたくさんあるので、私をサポヌトしおいただければ幞いです。

もう1぀のプラスの副䜜甚は、マテリアルの日付アダプタヌのAPIに厳密に固執し、それをcdkに移動する堎合、簡単に適応しお倉曎できるこずです。

@知っおいたす

タむムゟヌンを制埡できるず䟿利です。 スパむンXのナヌスケヌスの䞀郚では、特定のレガシヌAPIずやり取りするためにUTCが必芁です。

日付アダプタヌを䜿甚するず、この芁件も解決されたす。これは、日付ピッカヌが日付をアダプタヌが提䟛する汎甚オブゞェクトずしお扱うためです。 これは、ネむティブの日付、モヌメントラッパヌ、たたは垞に特定のタむムゟヌンを持぀日付にするこずができたす。

日付アダプタヌを実装する堎合、クラスタヌはそれを䞭倮の日付゚ントリポむントずしおも䜿甚したすか

私はそれを怜蚎するこずを開いおいたす。 私の最初の考えRaw Dateオブゞェクトはすでに600以䞊の堎所で䜿甚されおいたす明瀺的に、暗黙の䜿甚をカりントするこずはできたせん。

ほずんどの䜿甚法は、ずにかくカレンダヌに接続されおいないか、カレンダヌに近いものではありたせん。 䜿甚法を探すずき、通垞、日付はバック゚ンドから取埗され、フォヌマットの目的でわずかに凊理されたす。 カレンダヌずの敎合性のためだけにこれらのナヌスケヌスにアダプタヌを䜿甚するこずは、圧倒される可胜性がありたす。 したがっお、カレンダヌを䜿甚するずきはい぀でも、ネむティブの日付からアダプタヌぞの小さな倉換を怜蚎したすアダプタヌが@Inputずしお必芁な堎合。

したがっお、アダプタヌを䜿甚するこずにした堎合でも、2぀の方法がありたす。

  1. モゞュヌル構成でアダプタヌを提䟛するのは、内郚カレンダヌの日付操䜜のみです。モデル入力/出力は匕き続きネむティブの日付に基づいおいたす
  2. 内郚䜿甚法ず入出力APIの䞡方に察応するアダプタヌを提䟛したす。

2番目のオプションは、考えるナヌスケヌスの点でより䟵襲的であり、アダプタヌのよく考えられたAPIが必芁です。
最初のオプションは開始が簡単で、必芁に応じお2番目に進化する可胜性がありたす。

APM-266081に移動

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡