diff --git a/src/uix/eidos/components/time-picker/time-picker-hour-slider.svelte b/src/uix/eidos/components/time-picker/time-picker-hour-slider.svelte index b84233968..8029f680a 100644 --- a/src/uix/eidos/components/time-picker/time-picker-hour-slider.svelte +++ b/src/uix/eidos/components/time-picker/time-picker-hour-slider.svelte @@ -1,6 +1,12 @@ -
+
{#if showRuler} - + + {#snippet children({ ticks, percent, label })} + {#each ticks as v} + + + {label(v)} + + {/each} + {/snippet} + {/if} {#if children} diff --git a/src/uix/eidos/components/time-range-picker/time-range-picker-hour-slider.svelte b/src/uix/eidos/components/time-range-picker/time-range-picker-hour-slider.svelte index 9cfaa1585..bbdd219d0 100644 --- a/src/uix/eidos/components/time-range-picker/time-range-picker-hour-slider.svelte +++ b/src/uix/eidos/components/time-range-picker/time-range-picker-hour-slider.svelte @@ -1,6 +1,12 @@
{#if showRuler} - + + {#snippet children({ ticks, percent, label })} + {#each ticks as v} + + + {label(v)} + + {/each} + {/snippet} + {/if} {#if children} diff --git a/src/uix/morfo/components/time-picker.ts b/src/uix/morfo/components/time-picker.ts index dfe307f1c..91b80b8ee 100644 --- a/src/uix/morfo/components/time-picker.ts +++ b/src/uix/morfo/components/time-picker.ts @@ -233,6 +233,16 @@ export const timePickerMorfo = { { // Hour / Minute / Second sliders — composite parts. The outer // wrapper element carries `data-time-picker-{X}-slider`; the + name: 'HourScale', + kebab: 'hour-scale', + archetype: 'group', + kind: 'public', + defaultElement: 'div', + optional: true, + data: [], + aria: [{ attr: 'aria-hidden', value: v.literal('true') }] + }, + { // inner slider DOM is declared by the slider morfo (data-slider, // data-slider-thumb, data-slider-range). name: 'HourSlider', diff --git a/src/uix/morfo/components/time-range-picker.ts b/src/uix/morfo/components/time-range-picker.ts index 9d8cf365f..01f2b0554 100644 --- a/src/uix/morfo/components/time-range-picker.ts +++ b/src/uix/morfo/components/time-range-picker.ts @@ -231,6 +231,19 @@ export const timeRangePickerMorfo = { { key: 'Shift+Tab', action: 'focus-prev' } ] }, + { + // Hour scale — decorative ruler exposing tick data to eidos. + // No per-endpoint state; the scale is global to the range + // picker (both endpoints share the same hour cycle). + name: 'HourScale', + kebab: 'hour-scale', + archetype: 'group', + kind: 'public', + defaultElement: 'div', + optional: true, + data: [], + aria: [{ attr: 'aria-hidden', value: v.literal('true') }] + }, { // Hour / Minute / Second sliders — composite parts. The outer // wrapper carries `data-time-range-picker-{X}-slider` plus diff --git a/src/uix/soma/components/time-picker/components/time-picker-hour-scale.svelte b/src/uix/soma/components/time-picker/components/time-picker-hour-scale.svelte new file mode 100644 index 000000000..a1d503839 --- /dev/null +++ b/src/uix/soma/components/time-picker/components/time-picker-hour-scale.svelte @@ -0,0 +1,63 @@ + + + diff --git a/src/uix/soma/components/time-picker/exports.ts b/src/uix/soma/components/time-picker/exports.ts index 57a4eb244..147fb402c 100644 --- a/src/uix/soma/components/time-picker/exports.ts +++ b/src/uix/soma/components/time-picker/exports.ts @@ -2,6 +2,7 @@ export { default as Provider } from './components/time-picker.svelte'; export { default as Trigger } from './components/time-picker-trigger.svelte'; export { default as Clock } from './components/time-picker-clock.svelte'; +export { default as HourScale } from './components/time-picker-hour-scale.svelte'; export { default as HourSlider } from './components/time-picker-hour-slider.svelte'; export { default as MinuteSlider } from './components/time-picker-minute-slider.svelte'; export { default as SecondSlider } from './components/time-picker-second-slider.svelte'; diff --git a/src/uix/soma/components/time-range-picker/components/time-range-picker-hour-scale.svelte b/src/uix/soma/components/time-range-picker/components/time-range-picker-hour-scale.svelte new file mode 100644 index 000000000..021a71735 --- /dev/null +++ b/src/uix/soma/components/time-range-picker/components/time-range-picker-hour-scale.svelte @@ -0,0 +1,51 @@ + + + diff --git a/src/uix/soma/components/time-range-picker/exports.ts b/src/uix/soma/components/time-range-picker/exports.ts index add899d5c..439082a70 100644 --- a/src/uix/soma/components/time-range-picker/exports.ts +++ b/src/uix/soma/components/time-range-picker/exports.ts @@ -2,6 +2,7 @@ export { default as Provider } from './components/time-range-picker.svelte'; export { default as Trigger } from './components/time-range-picker-trigger.svelte'; export { default as Clock } from './components/time-range-picker-clock.svelte'; +export { default as HourScale } from './components/time-range-picker-hour-scale.svelte'; export { default as HourSlider } from './components/time-range-picker-hour-slider.svelte'; export { default as MinuteSlider } from './components/time-range-picker-minute-slider.svelte'; export { default as SecondSlider } from './components/time-range-picker-second-slider.svelte';