PageSourceSearch

https://relexable.de/assets/time-picker-field-DXH2T62g.js

js relexable.de collected 2026-10-02 00:04:12 UTC 3,019 bytes, 1 lines download raw bytes

1import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-DEAHbL4P.js";import{t as n}from"./jsx-runtime-CFwixLRt.js";import{t as r}from"./clock-BdcNHPUQ.js";import{t as i}from"./utils-DqNhCx4L.js";import{t as a}from"./button-BU-D9igF.js";import{n as o,r as s,t as c}from"./popover-zOaw86sA.js";import{t as l}from"./input-Bsk94ndB.js";var u=e(t(),1),d=n();function f(e){if(!e)return null;let[t,n]=e.split(`:`),r=Number(t),i=Number(n);return Number.isNaN(r)||Number.isNaN(i)?null:r*60+i}function p(e){let t=Math.floor(e/60)%24,n=e%60;return`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}`}function m({value:e,onChange:t,placeholder:n=`Uhrzeit`,disabled:m=!1,step:g=15,minTime:_=`00:00`,maxTime:v=`23:45`,className:y,id:b}){let[x,S]=u.useState(!1),[C,w]=u.useState(e??``),T=u.useRef(null);u.useEffect(()=>{if(!x)return;let e=requestAnimationFrame(()=>{(T.current?.querySelector(`[data-selected="true"]`))?.scrollIntoView({block:`center`})});return()=>cancelAnimationFrame(e)},[x]),u.useEffect(()=>{w(e??``)},[e]);let E=u.useMemo(()=>{let e=f(_)??0,t=f(v)??1425,n=[];for(let r=e;r<=t;r+=Math.max(5,g))n.push(p(r));return n},[_,v,g]),D=()=>{let n=h(C);n?t(n):w(e??``)};return(0,d.jsxs)(c,{open:x,onOpenChange:S,children:[(0,d.jsx)(s,{asChild:!0,children:(0,d.jsxs)(a,{id:b,type:`button`,variant:`outline`,disabled:m,className:i(`w-full justify-start text-left font-normal h-10`,!e&&`text-muted-foreground`,y),children:[(0,d.jsx)(r,{className:`mr-2 h-4 w-4 shrink-0`}),e||(0,d.jsx)(`span`,{children:n})]})}),(0,d.jsxs)(o,{className:`w-[200px] p-0 pointer-events-auto overflow-hidden`,align:`start`,children:[(0,d.jsx)(`div`,{className:`border-b bg-muted/40 p-2`,children:(0,d.jsx)(l,{value:C,placeholder:`HH:mm`,inputMode:`numeric`,className:`h-8 bg-background text-sm tabular-nums`,onChange:e=>w(e.target.value),onBlur:D,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),D(),S(!1))}})}),(0,d.jsx)(`div`,{ref:T,onWheel:e=>e.stopPropagation(),className:`max-h-60 overflow-y-auto overscroll-contain p-1 [scrollbar-color:hsl(var(--muted-foreground)/0.35)_transparent] [scrollbar-width:thin]`,children:(0,d.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:E.map(n=>(0,d.jsx)(`button`,{type:`button`,"data-selected":e===n?`true`:void 0,onClick:()=>{t(n),S(!1)},className:i(`rounded-md px-2.5 py-1.5 text-left text-sm tabular-nums transition-colors hover:bg-surface-subtle`,e===n&&`bg-selected font-medium ring-1 ring-selected-ring`),children:n},n))})})]})]})}function h(e){let t=(e||``).trim();if(!t)return null;let n=t.match(/^(\d{1,2}):(\d{1,2})$/);if(n){let e=Number(n[1]),t=Number(n[2]);return e>23||t>59?null:`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}let r=t.replace(/\D/g,``);if(r.length===1||r.length===2){let e=Number(r);return e>23?null:`${String(e).padStart(2,`0`)}:00`}if(r.length===3||r.length===4){let e=Number(r.slice(0,r.length-2)),t=Number(r.slice(-2));return e>23||t>59?null:`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}return null}export{m as t};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.