﻿# Bone Flow #025 - DatePicker

Version: 1.0.33
Status: Development

## 役割

#025 DatePicker は、呼び出し元 INPUT と #024 Calendar をつなぐ Primitive UI です。

正式依存:

```text
#030 DateBox
    ↓
#025 DatePicker
    ↓
#024 Calendar capability
    +
#118 Transition capability
```

## 責務

- 呼び出し元 INPUT に DatePicker trigger を接続
- Calendar / Emoji アイコンで開閉
- #024 Calendar を呼び出し元 INPUT の直下へ表示
- Theme / Font Awesome相当内蔵SVG / 絵文字を #024 へ反映
- `min / max / step / weekStart / locale / annotations / showTasks` を #024 へ委譲
- 日付選択結果を `bone-datepicker:select` Event / `onSelect` callback で呼び出し元へ返却
- Escape / 外側クリックで閉じる
- scroll / resize 時に INPUT 直下へ再配置

## 最重要責務境界

DatePicker自身は呼び出し元 INPUT の値を変更しません。

持たないもの:

- INPUT value の commit
- editingValue / committedValue
- Bone.value 更新
- OUT
- invoke
- BoneDatePicker自身のDelivery Channel API

選択後にINPUTへ値を適用するかどうかは呼び出し元UIの責務です。

## API

```text
BoneDatePicker.getPropertySchema()
BoneDatePicker.getPropertyDefaults()
BoneDatePicker.getPropertyDefinition(key)
BoneDatePicker.create(input, options)
BoneDatePicker.destroy(picker)
BoneDatePicker.open(picker)
BoneDatePicker.close(picker)
BoneDatePicker.toggle(picker)
BoneDatePicker.isOpen(picker)
BoneDatePicker.reposition(picker)
BoneDatePicker.setOptions(picker, patch)
BoneDatePicker.getOptions(picker)
BoneDatePicker.setValue(picker, YYYY-MM-DD)
BoneDatePicker.getValue(picker)
BoneDatePicker.getAnchor(picker)
BoneDatePicker.getPanel(picker)
BoneDatePicker.getCalendar(picker)
BoneDatePicker.validateDate(value, options)
```

## Event

```text
bone-datepicker:open
bone-datepicker:close
bone-datepicker:select
```

`bone-datepicker:select` detail には `date / value / previousValue / anchorValue` が含まれます。`anchorValue` は選択時点の呼び出し元INPUT値であり、DatePicker自身は変更しません。

## Test URL

```text
http://localhost/boneflow/test/bone-datepicker.html
```

Runtime QA はユーザー localhost で確認します。


## v1.0.6

- 【履歴】当時の #024 Calendar 更新記録。現在は特定versionを依存契約にせず、Component ID + Public API capabilityで判定する。
- 【履歴】Test/Property UIへ #022 Hover Border Effect連携を追加。現在は特定versionを固定せず、Public API capability / `effects` inventoryで接続する。
- Effect色は #040 ColorPicker capability Caller API / solid-only。Consumer Native ColorPickerは使用しない。
- `Class リスト / Public API` と #020型の統合ガイドを追加。実在する BoneDatePicker Public Object / Factory API 17件を、各APIごとに「いつ使うのか / 引数 / 使用方法 / サンプルコード / 操作説明 / 戻り値 / 役割 / 責務境界」で表示する。
- DatePicker Runtime本体の責務境界（INPUT非commit / OUTなし / invokeなし / Deliveryなし）は維持。

## v1.0.4

- v1.0.0の責務構成へ整理。Themeは正式責務として維持。
- `inheritParent` / 親吸着を削除し、常に呼び出し元INPUT直下へ配置。
- BoneDatePicker Runtime自身はOUT / Deliveryを所有しない。テストページには#017基準として、DatePicker RETURNをCaller OUTへ渡す想定の #002正式Delivery Channel（WAIT / FIFO / BLOCKED）接続検証を置く。
- v1.0.1以降で確認した初期 disabled=false、接続イメージ起動、Calendar選択値保持の修正は維持。


## v1.0.6 scoped correction
- DatePicker trigger rootに#022 Hover Border Effectをtrigger=mouseoverで適用し、初期有効とする。
- Propertyに「Calendar設定 (#024)」を明示し、theme / iconVisual / weekStart / min / max / step / calendarHeight / locale / showTasksを#024へ委譲する。
- #025のINPUT非commit / RETURN責務境界は変更しない。


## v1.0.7 scoped correction

- 外側DatePickerのMouse Over Effectは、呼び出し元INPUT＋Calendarボタン全体を1つの表示対象として#022を適用。
- Calendar設定内に、#024日付セル用のMouse Over Effect設定を追加。外側DatePicker Effectとは独立。
- 日付セルEffect色は#040 ColorPicker capability solid-only Caller。
- Calendar生成・再描画後に日付セルへ#022を再適用。
- DatePickerのINPUT非commit / RETURN責務は変更しない。


## v1.0.8 scoped correction

- Calendar日付セル #022 Mouse Over Effect の再attach監視対象を `.bone-calendar__days` 直下の `childList` 変更だけに限定。
- Annotation / Tooltip の内部DOM更新では日付セルの #022 を detach / reattach しない。
- 値・Annotationを持つ日付セルでもHover中のEffectを維持し、Mouse Leave後に再度Hoverした場合も毎回発火する。
- #022 Public APIに存在しない独自Loop設定は追加しない。
- DatePicker外枠Effect、#024設定、#040 Caller、INPUT非commit / RETURN責務は変更しない。


## v1.0.9 dependency compatibility history / superseded

- 過去の minimum version / same major.minor / patch比較は現行契約では使用しない。
- #022 / #024 / #040 / #118 は Component ID + 必須Public API capability で互換判定する。
- dependency versionは診断表示のみで、Installer / Boot / Smoke / Validation / 累積回帰のPASS/FAIL条件にしない。
- DatePicker本体、Calendar連携、Property、Preview、Guide、Completionの責務は変更しない。


## v1.0.27 #017 baseline rebuild correction

- #017 Text `BoneFlow_017_Text_Rebuild_v1.0.14_Candidate.zip` の構造を細部比較し、Runtime-owned Property Schema / HTML Functional Class / DOC Integration / Package QA構造を追加。
- Runtime Schema API: `getPropertySchema()` / `getPropertyDefaults()` / `getPropertyDefinition(key)`。
- Picker Panel の表示/非表示は #118 BoneTransitionの正式 ENTER / EXITへ委譲。Semantic open/closed stateは#025が所有。
- #022 Hover Border Effect のEffect一覧は正式Public API `BoneHoverBorderEffect.effects` から取得する。現行 #022 v1.0.27 は `normal / neon / spin / blink / dash / corner / chase / double / wave`。
- #024 / #022 / #118 / #040 はpatch番号完全一致ではなく必要Public API capabilityで判定する。
- JS/CSSの `?v=` 固定Queryを廃止。
- `class="bf-datepicker"` HTML Functional Classを追加。
- DOC-0025（ja/en）を追加。
- Smoke / Validationの起動時自動実行を廃止し、初期状態をNOT RUNに戻す。
- v1.0.9のminimum-version gatingは現行契約として廃止。履歴記録としてのみ残す。


## v1.0.11 Installer correction
- Root INDEX update is semantic URL based and no longer depends on exact #024 display wording.
- Cumulative registration uses #024 DOM/data/id anchors rather than an exact visible string.
- INDEX FIRST is the actual target mutation order.
- Runtime remains BoneDatePicker 1.0.12.


## v1.0.14 UI language correction

- 日本語モードで #118 Transition 23種を日本語表示名にする。内部enum値は変更しない。
- Direction / Speed / Theme / Week Start / #022 Effect option を日本語・English切替へ追従させる。
- Property / Preview / Runtime Schema table / Completion / Guide の主要表示を言語切替へ追従させる。
- #022 / #024 / #040 / #118 の依存互換性は version文字列で固定せず、Component ID + Public API capabilityで判定する。


## v1.0.23 Guide unification

- #017方式に合わせ、Guide Viewerは共有 `BoneDocGuide` / `DOC-0025` の1系統へ統合。
- DatePicker独自 `#datepicker-guide` / `#open-guide` を削除。
- Class/Public API panelは実API一覧だけを表示し、詳細説明はDOC-0025 ja/enへ集約。
- ガイド導線を増やす場合も独自Modalを作らず、同じDOC-0025内のsectionを参照する。


## v1.0.23 Date-only consumer correction
- `showCalendarManagerButtons`を追加。Default=false。
- false時は#024の `showTaskTypeManagerButton / showTaskManagerButton / showEventManagerButton / showAnnotationManagerButton` をすべてfalseへ委譲する。
- true時のみ4つをtrueへ委譲する。#024 Runtime自体は変更しない。
- Picker closeは#118 EXIT開始後に即hidden/finishしない。#118/ブラウザAnimation完了を待ってPanelをhiddenにする。


## v1.0.25 #022 Border Effect correction



## v1.0.26 Installer correction
- `Assert-HoverEffectSelect` requires the formal 9 effects.
- The obsolete `count != 5` failure gate from v1.0.25 was corrected to `count != 9`.
- v1.0.25 is rejected because a correct 9-option HTML select was guaranteed to fail installation.

## v1.0.27 Smoke / Validation + version correction

- #017 Text baseline behavior restored: QA handlers are bound before integration initialization.
- Smoke / Validation remain runnable even if a dependency integration fails during boot.
- Initialization errors are surfaced as Smoke failures and in the Runtime Console rather than leaving the QA section inert.
- Connection Image BoneCore objects are initialized lazily after QA binding.



## v1.0.32 Preview caller-row correction
- INPUT and generated DatePicker trigger are kept on the same horizontal row.
- Duplicate Preview CSS definitions were corrected together so later CSS cannot restore wrapping.
- Validation V39 checks actual browser geometry.


## v1.0.33 #017 Delivery Channel alignment
- `OUT WAIT / FIFO / BLOCKED — #002正式Delivery Channel` を #017 正本と同じSmoke / Validation前の独立パネルとして復元。
- #025 RuntimeにOUT / queue / BLOCKED APIは追加しない。DatePicker RETURNを受けたCaller OUTを模擬し、`BoneJoint.createDeliveryChannel()`へ委譲する接続テストのみを行う。
- Target BUSY中はWAIT queue、READY復帰時はFIFO、BLOCKED時はTarget不達を実確認する。
- WAIT / BLOCKED目視確認checkboxをCompletion gateへ追加し、Smoke / Validation ALL PASSだけでは完了不可。
- Package 1.0.33 / Runtime 1.0.12 を分離管理。
