@hed-hog/operations 0.0.306 → 0.0.310

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/controllers/operations-approvals.controller.d.ts +114 -1
  2. package/dist/controllers/operations-approvals.controller.d.ts.map +1 -1
  3. package/dist/controllers/operations-approvals.controller.js +16 -3
  4. package/dist/controllers/operations-approvals.controller.js.map +1 -1
  5. package/dist/controllers/operations-collaborators.controller.d.ts +16 -1
  6. package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -1
  7. package/dist/controllers/operations-collaborators.controller.js +16 -3
  8. package/dist/controllers/operations-collaborators.controller.js.map +1 -1
  9. package/dist/controllers/operations-contracts.controller.d.ts +14 -453
  10. package/dist/controllers/operations-contracts.controller.d.ts.map +1 -1
  11. package/dist/controllers/operations-contracts.controller.js +11 -112
  12. package/dist/controllers/operations-contracts.controller.js.map +1 -1
  13. package/dist/controllers/operations-org-structure.controller.d.ts +65 -2
  14. package/dist/controllers/operations-org-structure.controller.d.ts.map +1 -1
  15. package/dist/controllers/operations-org-structure.controller.js +18 -5
  16. package/dist/controllers/operations-org-structure.controller.js.map +1 -1
  17. package/dist/controllers/operations-projects.controller.d.ts +28 -4
  18. package/dist/controllers/operations-projects.controller.d.ts.map +1 -1
  19. package/dist/controllers/operations-projects.controller.js +17 -5
  20. package/dist/controllers/operations-projects.controller.js.map +1 -1
  21. package/dist/controllers/operations-timesheets.controller.d.ts +31 -4
  22. package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -1
  23. package/dist/controllers/operations-timesheets.controller.js +16 -11
  24. package/dist/controllers/operations-timesheets.controller.js.map +1 -1
  25. package/dist/dto/list-approvals.dto.d.ts +6 -0
  26. package/dist/dto/list-approvals.dto.d.ts.map +1 -0
  27. package/dist/dto/list-approvals.dto.js +28 -0
  28. package/dist/dto/list-approvals.dto.js.map +1 -0
  29. package/dist/dto/list-collaborator-types.dto.d.ts +3 -1
  30. package/dist/dto/list-collaborator-types.dto.d.ts.map +1 -1
  31. package/dist/dto/list-collaborator-types.dto.js +7 -1
  32. package/dist/dto/list-collaborator-types.dto.js.map +1 -1
  33. package/dist/dto/list-collaborators.dto.d.ts +1 -0
  34. package/dist/dto/list-collaborators.dto.d.ts.map +1 -1
  35. package/dist/dto/list-collaborators.dto.js +5 -0
  36. package/dist/dto/list-collaborators.dto.js.map +1 -1
  37. package/dist/dto/list-contracts.dto.d.ts +8 -0
  38. package/dist/dto/list-contracts.dto.d.ts.map +1 -0
  39. package/dist/dto/list-contracts.dto.js +38 -0
  40. package/dist/dto/list-contracts.dto.js.map +1 -0
  41. package/dist/dto/list-departments.dto.d.ts +5 -0
  42. package/dist/dto/list-departments.dto.d.ts.map +1 -0
  43. package/dist/dto/list-departments.dto.js +23 -0
  44. package/dist/dto/list-departments.dto.js.map +1 -0
  45. package/dist/dto/list-projects.dto.d.ts +5 -0
  46. package/dist/dto/list-projects.dto.d.ts.map +1 -0
  47. package/dist/dto/list-projects.dto.js +23 -0
  48. package/dist/dto/list-projects.dto.js.map +1 -0
  49. package/dist/dto/list-schedule-adjustments.dto.d.ts +5 -0
  50. package/dist/dto/list-schedule-adjustments.dto.d.ts.map +1 -0
  51. package/dist/dto/list-schedule-adjustments.dto.js +23 -0
  52. package/dist/dto/list-schedule-adjustments.dto.js.map +1 -0
  53. package/dist/dto/list-time-off-requests.dto.d.ts +5 -0
  54. package/dist/dto/list-time-off-requests.dto.d.ts.map +1 -0
  55. package/dist/dto/list-time-off-requests.dto.js +23 -0
  56. package/dist/dto/list-time-off-requests.dto.js.map +1 -0
  57. package/dist/dto/list-timesheets.dto.d.ts +5 -0
  58. package/dist/dto/list-timesheets.dto.d.ts.map +1 -0
  59. package/dist/dto/list-timesheets.dto.js +23 -0
  60. package/dist/dto/list-timesheets.dto.js.map +1 -0
  61. package/dist/dto/reorder-collaborator-types.dto.d.ts +4 -0
  62. package/dist/dto/reorder-collaborator-types.dto.d.ts.map +1 -0
  63. package/dist/dto/reorder-collaborator-types.dto.js +25 -0
  64. package/dist/dto/reorder-collaborator-types.dto.js.map +1 -0
  65. package/dist/operations.service.d.ts +340 -271
  66. package/dist/operations.service.d.ts.map +1 -1
  67. package/dist/operations.service.js +1007 -1043
  68. package/dist/operations.service.js.map +1 -1
  69. package/dist/operations.service.spec.js +0 -22
  70. package/dist/operations.service.spec.js.map +1 -1
  71. package/hedhog/data/menu.yaml +0 -36
  72. package/hedhog/data/route.yaml +42 -73
  73. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +8 -1
  74. package/hedhog/frontend/app/_components/collaborator-select-with-create.tsx.ejs +15 -10
  75. package/hedhog/frontend/app/_components/contract-details-screen.tsx.ejs +108 -213
  76. package/hedhog/frontend/app/_components/contract-form-screen.tsx.ejs +251 -2039
  77. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +167 -60
  78. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +70 -301
  79. package/hedhog/frontend/app/_components/system-user-select-with-create.tsx.ejs +102 -51
  80. package/hedhog/frontend/app/_lib/types.ts.ejs +19 -24
  81. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +14 -9
  82. package/hedhog/frontend/app/approvals/page.tsx.ejs +842 -150
  83. package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +445 -153
  84. package/hedhog/frontend/app/collaborators/page.tsx.ejs +118 -49
  85. package/hedhog/frontend/app/contracts/[id]/page.tsx.ejs +2 -2
  86. package/hedhog/frontend/app/contracts/page.tsx.ejs +215 -617
  87. package/hedhog/frontend/app/departments/page.tsx.ejs +257 -113
  88. package/hedhog/frontend/app/projects/page.tsx.ejs +90 -51
  89. package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +412 -147
  90. package/hedhog/frontend/app/time-off/page.tsx.ejs +400 -123
  91. package/hedhog/frontend/app/timesheets/page.tsx.ejs +460 -365
  92. package/hedhog/frontend/messages/en.json +143 -14
  93. package/hedhog/frontend/messages/pt.json +192 -54
  94. package/hedhog/table/operations_contract.yaml +0 -9
  95. package/package.json +4 -4
  96. package/src/controllers/operations-approvals.controller.ts +9 -3
  97. package/src/controllers/operations-collaborators.controller.ts +15 -2
  98. package/src/controllers/operations-contracts.controller.ts +8 -92
  99. package/src/controllers/operations-org-structure.controller.ts +17 -4
  100. package/src/controllers/operations-projects.controller.ts +10 -4
  101. package/src/controllers/operations-timesheets.controller.ts +17 -8
  102. package/src/dto/list-approvals.dto.ts +12 -0
  103. package/src/dto/list-collaborator-types.dto.ts +7 -2
  104. package/src/dto/list-collaborators.dto.ts +4 -0
  105. package/src/dto/list-contracts.dto.ts +20 -0
  106. package/src/dto/list-departments.dto.ts +8 -0
  107. package/src/dto/list-projects.dto.ts +8 -0
  108. package/src/dto/list-schedule-adjustments.dto.ts +8 -0
  109. package/src/dto/list-time-off-requests.dto.ts +8 -0
  110. package/src/dto/list-timesheets.dto.ts +8 -0
  111. package/src/dto/reorder-collaborator-types.dto.ts +10 -0
  112. package/src/operations.service.spec.ts +0 -30
  113. package/src/operations.service.ts +1557 -1806
  114. package/hedhog/frontend/app/_components/contract-creation-wizard.tsx.ejs +0 -631
  115. package/hedhog/frontend/app/_components/contract-template-form-screen.tsx.ejs +0 -526
  116. package/hedhog/frontend/app/_components/contract-template-select-with-create.tsx.ejs +0 -247
  117. package/hedhog/frontend/app/_components/contract-wizard-sheet.tsx.ejs +0 -3520
  118. package/hedhog/frontend/app/contracts/templates/page.tsx.ejs +0 -380
  119. package/hedhog/frontend/app/team/page.tsx.ejs +0 -352
  120. package/hedhog/table/operations_contract_financial_term.yaml +0 -40
  121. package/hedhog/table/operations_contract_revision.yaml +0 -38
  122. package/hedhog/table/operations_contract_signature.yaml +0 -38
  123. package/hedhog/table/operations_contract_template.yaml +0 -58
@@ -1,247 +0,0 @@
1
- 'use client';
2
-
3
- import { Button } from '@/components/ui/button';
4
- import {
5
- Command,
6
- CommandEmpty,
7
- CommandGroup,
8
- CommandInput,
9
- CommandItem,
10
- CommandList,
11
- } from '@/components/ui/command';
12
- import {
13
- Popover,
14
- PopoverContent,
15
- PopoverTrigger,
16
- } from '@/components/ui/popover';
17
- import {
18
- Sheet,
19
- SheetContent,
20
- SheetDescription,
21
- SheetHeader,
22
- SheetTitle,
23
- } from '@/components/ui/sheet';
24
- import { useApp, useQuery } from '@hed-hog/next-app-provider';
25
- import { Check, ChevronsUpDown, Plus, X } from 'lucide-react';
26
- import { useEffect, useRef, useState } from 'react';
27
- import { fetchOperations } from '../_lib/api';
28
- import type { OperationsContractTemplate } from '../_lib/types';
29
- import { ContractTemplateFormScreen } from './contract-template-form-screen';
30
-
31
- type ContractTemplateSelectWithCreateProps = {
32
- label: string;
33
- value?: number | null;
34
- initialSelectedLabel?: string;
35
- placeholder: string;
36
- disabled?: boolean;
37
- onChange: (option: OperationsContractTemplate | null) => void;
38
- };
39
-
40
- export function ContractTemplateSelectWithCreate({
41
- label,
42
- value,
43
- initialSelectedLabel = '',
44
- placeholder,
45
- disabled = false,
46
- onChange,
47
- }: ContractTemplateSelectWithCreateProps) {
48
- const { request, currentLocaleCode } = useApp();
49
- const [open, setOpen] = useState(false);
50
- const [search, setSearch] = useState('');
51
- const [createOpen, setCreateOpen] = useState(false);
52
- const [selectedLabel, setSelectedLabel] = useState(initialSelectedLabel);
53
- const parentScrollContainerRef = useRef<HTMLElement | null>(null);
54
- const parentScrollTopRef = useRef(0);
55
-
56
- const { data: templates = [] } = useQuery<OperationsContractTemplate[]>({
57
- queryKey: ['operations-inline-contract-templates', currentLocaleCode],
58
- queryFn: () =>
59
- fetchOperations<OperationsContractTemplate[]>(
60
- request,
61
- '/operations/contract-templates'
62
- ),
63
- placeholderData: (old) => old ?? [],
64
- });
65
-
66
- useEffect(() => {
67
- setSelectedLabel(initialSelectedLabel);
68
- }, [initialSelectedLabel]);
69
-
70
- useEffect(() => {
71
- if (value == null) {
72
- setSelectedLabel('');
73
- return;
74
- }
75
-
76
- const option = templates.find((item) => item.id === value);
77
- if (option) {
78
- setSelectedLabel(option.name);
79
- }
80
- }, [templates, value]);
81
-
82
- const filteredOptions = templates.filter((item) => {
83
- const haystack = [item.name, item.code, item.description]
84
- .filter(Boolean)
85
- .join(' ')
86
- .toLowerCase();
87
- return haystack.includes(search.trim().toLowerCase());
88
- });
89
-
90
- const captureParentScrollPosition = (trigger: HTMLElement) => {
91
- const parentSheetContent = trigger.closest(
92
- '[data-radix-dialog-content]'
93
- ) as HTMLElement | null;
94
-
95
- if (!parentSheetContent) {
96
- parentScrollContainerRef.current = null;
97
- parentScrollTopRef.current = 0;
98
- return;
99
- }
100
-
101
- parentScrollContainerRef.current = parentSheetContent;
102
- parentScrollTopRef.current = parentSheetContent.scrollTop;
103
- };
104
-
105
- const restoreParentScrollPosition = () => {
106
- const container =
107
- parentScrollContainerRef.current &&
108
- document.body.contains(parentScrollContainerRef.current)
109
- ? parentScrollContainerRef.current
110
- : null;
111
-
112
- if (!container) {
113
- return;
114
- }
115
-
116
- const restore = () => {
117
- container.scrollTop = parentScrollTopRef.current;
118
- };
119
-
120
- requestAnimationFrame(restore);
121
- setTimeout(restore, 0);
122
- setTimeout(restore, 120);
123
- };
124
-
125
- return (
126
- <div className="space-y-1.5">
127
- <label className="text-xs font-medium text-muted-foreground">
128
- {label}
129
- </label>
130
-
131
- <div className="flex gap-2">
132
- <Popover open={open} onOpenChange={setOpen}>
133
- <PopoverTrigger asChild>
134
- <Button
135
- type="button"
136
- variant="outline"
137
- role="combobox"
138
- disabled={disabled}
139
- className="h-9 flex-1 justify-between overflow-hidden"
140
- >
141
- <span className="truncate text-left">
142
- {selectedLabel || placeholder}
143
- </span>
144
- <ChevronsUpDown className="size-4 shrink-0 opacity-50" />
145
- </Button>
146
- </PopoverTrigger>
147
- <PopoverContent className="w-[var(--radix-popover-trigger-width)] p-0">
148
- <Command shouldFilter={false}>
149
- <CommandInput
150
- value={search}
151
- onValueChange={setSearch}
152
- placeholder="Buscar template..."
153
- />
154
- <CommandList>
155
- <CommandEmpty>Nenhum template encontrado.</CommandEmpty>
156
- <CommandGroup>
157
- {filteredOptions.map((option) => (
158
- <CommandItem
159
- key={option.id}
160
- value={String(option.id)}
161
- onSelect={() => {
162
- onChange(option);
163
- setSelectedLabel(option.name);
164
- setOpen(false);
165
- }}
166
- >
167
- <Check
168
- className={`mr-2 size-4 ${
169
- value === option.id ? 'opacity-100' : 'opacity-0'
170
- }`}
171
- />
172
- <div className="min-w-0">
173
- <div className="truncate">{option.name}</div>
174
- <div className="truncate text-xs text-muted-foreground">
175
- {[option.code, option.contractType]
176
- .filter(Boolean)
177
- .join(' • ')}
178
- </div>
179
- </div>
180
- </CommandItem>
181
- ))}
182
- </CommandGroup>
183
- </CommandList>
184
- </Command>
185
- </PopoverContent>
186
- </Popover>
187
-
188
- {value ? (
189
- <Button
190
- type="button"
191
- variant="outline"
192
- size="icon"
193
- className="h-9 w-9 shrink-0 cursor-pointer"
194
- onClick={() => {
195
- onChange(null);
196
- setSelectedLabel('');
197
- }}
198
- >
199
- <X className="size-4" />
200
- </Button>
201
- ) : null}
202
-
203
- <Button
204
- type="button"
205
- variant="outline"
206
- size="icon"
207
- className="h-9 w-9 shrink-0 cursor-pointer"
208
- disabled={disabled}
209
- onClick={(event) => {
210
- captureParentScrollPosition(event.currentTarget);
211
- setCreateOpen(true);
212
- }}
213
- aria-label={`Criar ${label.toLowerCase()}`}
214
- >
215
- <Plus className="size-4" />
216
- </Button>
217
- </div>
218
-
219
- <Sheet
220
- open={createOpen}
221
- onOpenChange={(nextOpen) => {
222
- setCreateOpen(nextOpen);
223
- if (!nextOpen) {
224
- restoreParentScrollPosition();
225
- }
226
- }}
227
- >
228
- <SheetContent className="w-full overflow-y-auto sm:max-w-[min(92vw,72rem)]">
229
- <SheetHeader>
230
- <SheetTitle>Novo template</SheetTitle>
231
- <SheetDescription>
232
- Crie um template sem sair do wizard do contrato.
233
- </SheetDescription>
234
- </SheetHeader>
235
- <ContractTemplateFormScreen
236
- onCancel={() => setCreateOpen(false)}
237
- onSaved={async (template) => {
238
- onChange(template);
239
- setSelectedLabel(template.name);
240
- setCreateOpen(false);
241
- }}
242
- />
243
- </SheetContent>
244
- </Sheet>
245
- </div>
246
- );
247
- }