PageSourceSearch

https://keydevsdemo.com/ProjectSelector-Cy20rzfH.js

js keydevsdemo.com collected 2026-10-07 03:33:37 UTC 4,084 bytes, 1 lines download raw bytes

1import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{t}from"./react-Augu_vA3.js";import{t as n}from"./jsx-runtime-CTknu7_t.js";import{It as r,J as i,Lt as a,Mr as o,er as s,it as c,nt as l,q as u,rt as d,wt as f}from"./forms-DEWnBS77.js";import{t as p}from"./useTranslation-BsqE6et4.js";import{n as m}from"./useHasPermission-BaSlT7Iw.js";import{n as h}from"./Combobox-Jqj4GNaw.js";import{t as g}from"./Modal-CrYovsxi.js";import{t as _}from"./ClientSelector-CQ-sis4t.js";import{t as v}from"./ColorPicker-c18MJlRC.js";import{t as y}from"./UserSelector-CF-UCt2U.js";import{t as b,u as x}from"./TagPillSelector-ByRcRMXz.js";import{t as S}from"./useClientResolver-DIPMnPgK.js";import{t as C}from"./projects-BHxQ37Kq.js";var w=e(t(),1),T=e(n(),1);function E(e){let[t]=p(),{data:n}=C(),[i,m]=(0,w.useState)(),[h,E]=(0,w.useState)(),[D,O]=(0,w.useState)(!1),k=o(),A=S(),j=(e,t)=>{E(void 0),m(n=>n&&{...n,[e]:t})};return(0,w.useEffect)(()=>{n&&m({...n,task_rate:k?.settings.default_task_rate||0})},[n]),(0,w.useEffect)(()=>{i?.client_id&&i.client_id.length>1&&A.find(i.client_id).then(e=>{e.settings.default_task_rate&&j(`task_rate`,e.settings.default_task_rate)})},[i?.client_id]),(0,T.jsx)(g,{title:t(`new_project`),size:`regular`,visible:e.visible,onClose:()=>{m(n),e.setVisible(!1)},children:i?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-5 gap-y-3`,children:[(0,T.jsx)(u,{label:t(`project_name`),value:i.name,onValueChange:e=>j(`name`,e),errorMessage:h?.errors.name}),(0,T.jsx)(_,{inputLabel:t(`client`),value:i.client_id,onChange:e=>j(`client_id`,e.id),clearButton:!0,onClearButtonClick:()=>j(`client_id`,``),errorMessage:h?.errors.client_id}),(0,T.jsx)(y,{inputLabel:t(`assigned_user`),value:i.assigned_user_id,onChange:e=>j(`assigned_user_id`,e.id),onClearButtonClick:()=>j(`assigned_user_id`,``),errorMessage:h?.errors.assigned_user_id}),(0,T.jsx)(b,{className:`col-span-2`,label:t(`tags`),entityType:x.project,value:i.tags||[],onChange:e=>j(`tags`,e),errorMessage:h?.errors.tags}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(l,{className:`mb-1`,children:t(`color`)}),(0,T.jsx)(v,{value:i.color,onValueChange:e=>j(`color`,e)})]}),(0,T.jsx)(u,{label:t(`due_date`),type:`date`,value:i.due_date,onValueChange:e=>j(`due_date`,e),errorMessage:h?.errors.due_date}),(0,T.jsx)(u,{label:t(`budgeted_hours`),value:i.budgeted_hours,onValueChange:e=>j(`budgeted_hours`,e),errorMessage:h?.errors.budgeted_hours}),(0,T.jsx)(u,{label:t(`task_rate`),value:i.task_rate,onValueChange:e=>j(`task_rate`,e),errorMessage:h?.errors.task_rate}),(0,T.jsx)(u,{label:t(`public_notes`),element:`textarea`,value:i.public_notes,onValueChange:e=>j(`public_notes`,e),errorMessage:h?.errors.public_notes}),(0,T.jsx)(u,{label:t(`private_notes`),element:`textarea`,value:i.private_notes,onValueChange:e=>j(`private_notes`,e),errorMessage:h?.errors.private_notes})]}),(0,T.jsx)(d,{className:`flex self-end`,disableWithoutIcon:!0,disabled:!i||D,onClick:t=>{t.preventDefault(),D||(a.processing(),E(void 0),O(!0),r(`POST`,f(`/api/v1/projects`),i).then(t=>{a.success(`created_project`),s([`projects`]),window.dispatchEvent(new CustomEvent(`invalidate.combobox.queries`,{detail:{url:f(`/api/v1/projects`)}})),e.onProjectCreated(t.data.data),m(n),e.setVisible(!1)}).catch(e=>{e.response?.status===422&&(a.dismiss(),E(e.response.data))}).finally(()=>O(!1)))},children:t(`save`)})]}):(0,T.jsx)(c,{})})}function D(e){let[t]=p(),n=m(),[r,a]=(0,w.useState)(!1),o=e.clientId?`&client_id=${e.clientId}`:``;return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(E,{visible:r,setVisible:a,onProjectCreated:t=>e.onChange(t)}),(0,T.jsx)(h,{inputOptions:{label:e.inputLabel?.toString(),value:e.value??null},endpoint:f(`/api/v1/projects?status=active&filter_deleted_clients=true${o}`),entryOptions:{id:`id`,label:`name`,value:`id`},onChange:t=>t.resource?e.onChange(t.resource):null,readonly:e.readonly,onDismiss:e.onClearButtonClick,action:{label:t(`new_project`),onClick:()=>a(!0),visible:n(`create_project`)&&!e.withoutAction}}),(0,T.jsx)(i,{className:`mt-2`,children:e.errorMessage})]})}export{D 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.