﻿# Bone Flow #025 DatePicker Specification v1.0

- Component ID: 025
- Component Name: DatePicker
- Runtime Version: 1.0.12
- Status: Development
- Layer: Primitive UI
- Formal dependencies: #024 Calendar capability / #118 Transition capability / #022 Hover Border Effect capability / #040 ColorPicker Caller capability

## Contract

1. `create(input, options)` の第1引数は呼び出し元要素。
2. trigger から #024 Calendar を開閉する。
3. Panel のY座標は INPUT bottom + gap とする。
4. #024 Calendar の選択値は Event / callback で返す。
5. DatePicker自身は INPUT.value を変更しない。
6. DatePicker自身は commit / OUT / invoke / Delivery を持たない。
7. `theme / iconVisual / locale / weekStart / min / max / step / annotations / showTasks` は #024へ委譲する。
8. disabled / readonly のときは開かない。
9. Escape / outside pointer で閉じる。
10. 呼び出し元INPUT値が外部変更されない限り、Calendarで返した選択値をPicker内に保持する。
11. #024 Calendarは必要Public API capabilityで依存判定し、特定patch番号をConsumer契約にしない。
12. Picker PanelのENTER / EXITは#118 Transitionへ委譲し、semantic open/closed stateは#025が所有する。
13. #022 Effect inventoryは正式Public API `BoneHoverBorderEffect.effects` から取得する。現行 #022 v1.0.27 の9種は `normal / neon / spin / blink / dash / corner / chase / double / wave`。
14. Runtime-owned Property Schemaを公開する。
15. HTML Functional Classは `bf-datepicker` とする。


## v1.0.6 Test / Property UI integration

- #022 Hover Border Effect capability: DatePicker trigger mouseover border effect. Exact dependency version is not a compatibility gate.
- #040 ColorPicker capability: Effect color selection through `attachCaller()` / solid-only.
- Class / Public API guide follows the #020 guide structure and documents the 17 real BoneDatePicker functions.
- These UI integrations do not add commit / OUT / invoke / Delivery responsibility to #025.


## 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 outer mouse-over #022 target is the visible caller INPUT + calendar button group, not only the generated 36px trigger root.
- Calendar settings expose a separate #024 date-cell mouse-over #022 configuration: enabled/effect/color/direction/speed/spinWidth/spinGlow.
- Calendar date effect color uses #040 ColorPicker capability solid-only Caller.
- Calendar day effects are reattached after Calendar creation/rerender through the existing #024 DOM.
- #025 commit / OUT / Delivery responsibilities remain unchanged.


## 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

- The former minimum-version / same-major-minor gate is historical and MUST NOT be used by the current installer, boot, Smoke, Validation, or cumulative registration.
- Current dependency compatibility is determined by Component ID + required Public API capability only.
- Observed dependency versions may be displayed in diagnostics but are not PASS/FAIL gates.
- DatePicker responsibility boundary remains unchanged.


## v1.0.26 formal correction

- Runtime-owned Property Schema APIs: `getPropertySchema()` / `getPropertyDefaults()` / `getPropertyDefinition(key)`.
- #118: Panelは正式 `bf-transition` hostとし、`BoneTransitionFunctionalClass.mount/getInstance` が所有する同一instanceへ `setOptions / enter / exit / cancel / getState / getTarget` を適用する。#025は別instanceを生成しない。
- #022: effect options derive from the formal public `BoneHoverBorderEffect.effects` array. The inspected v1.0.27 current inventory is `normal / neon / spin / blink / dash / corner / chase / double / wave`.
- Dependencies are capability-based; v1.0.9 patch-lock rules are superseded.
- `bf-datepicker` HTML Functional Class and DOC-0025 ja/en are part of the package.
- Smoke / Validation remain NOT RUN until explicitly executed.


## 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

- Japanese / English switching applies to Property labels, option labels, #118 Transition catalog display names, Preview labels, Runtime Schema table headings, and Guide UI.
- Internal enum values (`fade`, `slide`, `down`, `normal`, etc.) remain stable and are not translated.
- Dependency compatibility remains Component ID + Public API capability based; exact dependency versions are diagnostic only.


## v1.0.23 Guide contract

- Guide viewer is the shared BoneDocGuide only.
- Formal document is DOC-0025 ja/en.
- A DatePicker-owned duplicate guide overlay/modal is prohibited.
- Public API usage and operation documentation belongs to DOC-0025, not the test-page DOM.


## v1.0.23 Date-only manager visibility / EXIT contract
- `showCalendarManagerButtons:boolean` Default=false。年月日選択用途ではCalendar下部の管理ボタンを初期非表示とする。
- ON時のみ#024正式4Propertyへ表示=trueを委譲する。
- close/select/Escape/outsideの全Close経路は#118 EXITを通し、EXIT開始直後にPanelをhiddenにしない。


## v1.0.25 #022 canonical effect inventory correction

- Inspected source: `BoneFlow_022_Hover_Border_Effect_v1.0.27_Candidate.zip`.
- Runtime export: `BoneHoverBorderEffect 1.0.12`.
- Formal effect inventory exposed by `BoneHoverBorderEffect.effects`: `normal / neon / spin / blink / dash / corner / chase / double / wave`.
- #022 v1.0.27 **does** expose `getPropertySchema()` / `getPropertyDefaults()` / `getPropertyDefinition()`. #025 effect option synchronization nevertheless uses the formal public `BoneHoverBorderEffect.effects` inventory directly, so the visible 9-effect catalog has one explicit source of truth.
- Both DatePicker border-effect `<select>` elements ship the nine current values directly in HTML so a script/boot failure cannot render an empty control.
- After boot, labels/options are synchronized from `BoneHoverBorderEffect.effects`; JA/EN labels must remain non-empty.
- Smoke/Validation include explicit checks for both selects, exact current nine-value inventory, non-empty labels, and default values (`normal` outer / `spin` Calendar day).

## v1.0.26 Installer correction
The installer MUST validate both #022 effect selects as exactly the formal 9 values (`normal`, `neon`, `spin`, `blink`, `dash`, `corner`, `chase`, `double`, `wave`). A 5-option count gate is prohibited.


## #002 Delivery Channel test-page contract (Package 1.0.33)
- BoneDatePicker Runtime does not gain commit / OUT / invoke / Delivery APIs.
- The test page MUST expose the #017-standard `OUT WAIT / FIFO / BLOCKED — #002正式Delivery Channel` verification UI.
- The verification MUST use `BoneJoint.createDeliveryChannel()` and verify WAIT queue → READY → FIFO, BLOCKED non-delivery, and #002 WAIT/BLOCKED markers.
- Component completion requires Smoke ALL PASS, Validation ALL PASS, and user visual confirmation checkboxes for WAIT/FIFO and BLOCKED.
