@cwellt_software/shared-employee 0.0.1
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.
- package/dist/AccountingRulesTab-CdYj-dz8.js +84 -0
- package/dist/AccountingRulesTab-DQJ7nD71.cjs +1 -0
- package/dist/AdditionalInfoTab-DW-S373w.cjs +1 -0
- package/dist/AdditionalInfoTab-j-Ixuvog.js +114 -0
- package/dist/App.d.ts +3 -0
- package/dist/ChangeRequestsTab-CFCWKZkt.js +342 -0
- package/dist/ChangeRequestsTab-CY7-qObu.cjs +1 -0
- package/dist/CosmicRadiationTab-6fqnDLH3.cjs +1 -0
- package/dist/CosmicRadiationTab-CLlfjJNA.js +120 -0
- package/dist/DeleteDialog-BqXtjGGi.cjs +1 -0
- package/dist/DeleteDialog-CyRsLr_c.js +21 -0
- package/dist/DetailsTab-DKFAMvlW.cjs +1 -0
- package/dist/DetailsTab-Dh1lfSr2.js +248 -0
- package/dist/DivisionsTab--eEVFupH.cjs +1 -0
- package/dist/DivisionsTab-BfIIZ_ld.js +86 -0
- package/dist/FunctionsTab-BMWoqfK2.js +160 -0
- package/dist/FunctionsTab-DQPsK0rq.cjs +1 -0
- package/dist/HistoryTab-CViMxBYc.cjs +1 -0
- package/dist/HistoryTab-CwCD46f3.js +277 -0
- package/dist/LanguagesTab-BKa7nmoT.cjs +1 -0
- package/dist/LanguagesTab-BznJDDXK.js +181 -0
- package/dist/RelatedPersonsTab-C-6ti_Be.js +260 -0
- package/dist/RelatedPersonsTab-DgoBLK21.cjs +1 -0
- package/dist/VaccinesTab-BGhy3EgY.cjs +1 -0
- package/dist/VaccinesTab-BtdAXAyo.js +171 -0
- package/dist/context/DialogShellContext.d.ts +22 -0
- package/dist/dateUtils-BULQTXVb.cjs +1 -0
- package/dist/dateUtils-CTu1RDq1.js +25 -0
- package/dist/domain/model/ChangeRequest.d.ts +23 -0
- package/dist/domain/model/Dietary.d.ts +24 -0
- package/dist/domain/model/EmployeeDetail.d.ts +89 -0
- package/dist/domain/model/EmployeeDropdowns.d.ts +31 -0
- package/dist/domain/model/EmployeeListItem.d.ts +15 -0
- package/dist/domain/model/EmployeeTabModels.d.ts +91 -0
- package/dist/domain/repository/DietaryRepository.d.ts +8 -0
- package/dist/domain/repository/EmployeeRepository.d.ts +62 -0
- package/dist/index.d.ts +18 -0
- package/dist/infrastructure/DietaryRepositoryImpl.d.ts +20 -0
- package/dist/infrastructure/EmployeeRepositoryImpl.d.ts +74 -0
- package/dist/infrastructure/dto/DietaryDto.d.ts +26 -0
- package/dist/main.d.ts +1 -0
- package/dist/presentation/EmployeeOverview.d.ts +18 -0
- package/dist/presentation/common/DeleteDialog.d.ts +16 -0
- package/dist/presentation/common/EmptyState.d.ts +11 -0
- package/dist/presentation/common/LazyImage.d.ts +15 -0
- package/dist/presentation/common/useLazyTabs.d.ts +14 -0
- package/dist/presentation/comps/modals/AddEmployeeModal.d.ts +10 -0
- package/dist/presentation/comps/modals/EditEmployeeModal.d.ts +13 -0
- package/dist/presentation/comps/tabs/AccountingRulesTab.d.ts +10 -0
- package/dist/presentation/comps/tabs/AdditionalInfoTab.d.ts +12 -0
- package/dist/presentation/comps/tabs/ChangeRequestsTab.d.ts +16 -0
- package/dist/presentation/comps/tabs/CosmicRadiationTab.d.ts +8 -0
- package/dist/presentation/comps/tabs/DetailsTab.d.ts +8 -0
- package/dist/presentation/comps/tabs/DivisionsTab.d.ts +11 -0
- package/dist/presentation/comps/tabs/FunctionsTab.d.ts +13 -0
- package/dist/presentation/comps/tabs/HistoryTab.d.ts +15 -0
- package/dist/presentation/comps/tabs/LanguagesTab.d.ts +13 -0
- package/dist/presentation/comps/tabs/RelatedPersonsTab.d.ts +13 -0
- package/dist/presentation/comps/tabs/VaccinesTab.d.ts +12 -0
- package/dist/presentation/dietary/DietaryPage.d.ts +9 -0
- package/dist/presentation/dietary/comps/DietaryEntryDialog.d.ts +13 -0
- package/dist/presentation/dietary/comps/DietarySection.d.ts +8 -0
- package/dist/presentation/dietary/hooks/useDietary.d.ts +12 -0
- package/dist/presentation/dietary/parsers/catalogSuggestions.d.ts +12 -0
- package/dist/presentation/hooks/data/useChangeRequests.d.ts +17 -0
- package/dist/presentation/hooks/data/useEmployeeData.d.ts +79 -0
- package/dist/presentation/hooks/data/useEmployeeFilters.d.ts +10 -0
- package/dist/presentation/hooks/ui/useEmployeeOverviewUI.d.ts +15 -0
- package/dist/presentation/parsers/dateUtils.d.ts +12 -0
- package/dist/presentation/parsers/employeeParsers.d.ts +3 -0
- package/dist/presentation/parsers/imageUtils.d.ts +1 -0
- package/dist/shared-employee.cjs.js +1 -0
- package/dist/shared-employee.css +2 -0
- package/dist/shared-employee.es.js +2592 -0
- package/package.json +58 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ChangeRequest, PendingCounts } from "../../../domain/model/ChangeRequest";
|
|
2
|
+
import type { EmployeeRepository } from "../../../domain/repository/EmployeeRepository";
|
|
3
|
+
export declare function useChangeRequests(repository: EmployeeRepository): {
|
|
4
|
+
pendingCounts: PendingCounts;
|
|
5
|
+
changeRequests: ChangeRequest[];
|
|
6
|
+
loading: boolean;
|
|
7
|
+
loadPendingCounts: () => Promise<void>;
|
|
8
|
+
loadChangeRequests: (employeeId: number) => Promise<void>;
|
|
9
|
+
reviewFields: (requestId: number, fieldReviews: {
|
|
10
|
+
changeFieldId: number;
|
|
11
|
+
approved: boolean;
|
|
12
|
+
comment?: string;
|
|
13
|
+
}[], employeeId: number) => Promise<void>;
|
|
14
|
+
approveAllFields: (requestId: number, employeeId: number) => Promise<void>;
|
|
15
|
+
reviewPhoto: (requestId: number, approved: boolean, employeeId: number, comment?: string) => Promise<void>;
|
|
16
|
+
getPendingCount: (employeeId: number) => number;
|
|
17
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { EmployeeListItem } from "../../../domain/model/EmployeeListItem";
|
|
2
|
+
import type { EmployeeDetail } from "../../../domain/model/EmployeeDetail";
|
|
3
|
+
import type { EmployeeDropdowns } from "../../../domain/model/EmployeeDropdowns";
|
|
4
|
+
import type { EmployeeDivision, EmployeeFunction, EmployeeContactInfo, EmployeeHistoryEntry, RelatedPerson, AccountingRule, AccountingRuleSet, CosmicRadiation, EmployeeVaccine, EmployeeLanguage } from "../../../domain/model/EmployeeTabModels";
|
|
5
|
+
import type { EmployeeRepository } from "../../../domain/repository/EmployeeRepository";
|
|
6
|
+
export interface EmployeeDataState {
|
|
7
|
+
employeeList: EmployeeListItem[];
|
|
8
|
+
dropdowns: EmployeeDropdowns | null;
|
|
9
|
+
selectedEmployeeId: number | null;
|
|
10
|
+
selectedEmployee: EmployeeDetail | null;
|
|
11
|
+
employeeImage: string | null;
|
|
12
|
+
divisions: EmployeeDivision[];
|
|
13
|
+
functions: EmployeeFunction[];
|
|
14
|
+
additionalInfo: EmployeeContactInfo[];
|
|
15
|
+
history: EmployeeHistoryEntry[];
|
|
16
|
+
relatedPersons: RelatedPerson[];
|
|
17
|
+
accountingRules: AccountingRule[];
|
|
18
|
+
availableRuleSets: AccountingRuleSet[];
|
|
19
|
+
cosmicRadiation: CosmicRadiation | null;
|
|
20
|
+
vaccines: EmployeeVaccine[];
|
|
21
|
+
languages: EmployeeLanguage[];
|
|
22
|
+
loading: boolean;
|
|
23
|
+
detailLoading: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function useEmployeeData(repository: EmployeeRepository): {
|
|
26
|
+
selectEmployee: (employeeId: number) => Promise<void>;
|
|
27
|
+
getEmployeeImageCached: (id: number) => Promise<string | null>;
|
|
28
|
+
ensureTabData: (tab: string, employeeId: number) => Promise<void>;
|
|
29
|
+
refreshEmployeeList: () => Promise<void>;
|
|
30
|
+
createEmployee: (data: Parameters<EmployeeRepository["createEmployee"]>[0]) => Promise<EmployeeListItem>;
|
|
31
|
+
updateEmployee: (data: Parameters<EmployeeRepository["updateEmployee"]>[0]) => Promise<EmployeeDetail>;
|
|
32
|
+
deactivateEmployee: (id: number) => Promise<void>;
|
|
33
|
+
activateEmployee: (id: number) => Promise<void>;
|
|
34
|
+
uploadEmployeeImage: (id: number, base64: string) => Promise<string>;
|
|
35
|
+
deleteEmployeeImage: (id: number) => Promise<void>;
|
|
36
|
+
createDivision: (employeeId: number, divisionId: number) => Promise<void>;
|
|
37
|
+
deleteDivision: (id: number) => Promise<void>;
|
|
38
|
+
refreshFunctions: (employeeId: number, includeInactive: boolean) => Promise<void>;
|
|
39
|
+
createFunction: (data: Parameters<EmployeeRepository["createFunction"]>[0]) => Promise<void>;
|
|
40
|
+
updateFunction: (data: EmployeeFunction) => Promise<void>;
|
|
41
|
+
deactivateFunction: (id: number) => Promise<void>;
|
|
42
|
+
createAdditionalInfo: (data: Parameters<EmployeeRepository["createAdditionalInfo"]>[0]) => Promise<void>;
|
|
43
|
+
updateAdditionalInfo: (data: EmployeeContactInfo) => Promise<void>;
|
|
44
|
+
deleteAdditionalInfo: (employeeId: number, contactTypeId: number) => Promise<void>;
|
|
45
|
+
createHistory: (data: Parameters<EmployeeRepository["createHistory"]>[0]) => Promise<void>;
|
|
46
|
+
updateHistory: (data: EmployeeHistoryEntry) => Promise<void>;
|
|
47
|
+
deleteHistory: (id: number) => Promise<void>;
|
|
48
|
+
createRelatedPerson: (data: Parameters<EmployeeRepository["createRelatedPerson"]>[0]) => Promise<void>;
|
|
49
|
+
updateRelatedPerson: (data: RelatedPerson) => Promise<void>;
|
|
50
|
+
deleteRelatedPerson: (id: number) => Promise<void>;
|
|
51
|
+
confirmRelatedPerson: (id: number) => Promise<void>;
|
|
52
|
+
assignAccountingRule: (employeeId: number, ruleId: number) => Promise<void>;
|
|
53
|
+
removeAccountingRule: (employeeId: number, ruleId: number) => Promise<void>;
|
|
54
|
+
updateCosmicRadiation: (employeeId: number, data: CosmicRadiation) => Promise<void>;
|
|
55
|
+
createVaccine: (data: Parameters<EmployeeRepository["createEmployeeVaccine"]>[0]) => Promise<void>;
|
|
56
|
+
updateVaccine: (data: EmployeeVaccine) => Promise<void>;
|
|
57
|
+
deleteVaccine: (id: string) => Promise<void>;
|
|
58
|
+
createLanguage: (data: Parameters<EmployeeRepository["createEmployeeLanguage"]>[0]) => Promise<void>;
|
|
59
|
+
updateLanguage: (data: EmployeeLanguage) => Promise<void>;
|
|
60
|
+
deleteLanguage: (id: string) => Promise<void>;
|
|
61
|
+
unconfirmedRelatedPersonsCounts: Record<number, number>;
|
|
62
|
+
employeeList: EmployeeListItem[];
|
|
63
|
+
dropdowns: EmployeeDropdowns | null;
|
|
64
|
+
selectedEmployeeId: number | null;
|
|
65
|
+
selectedEmployee: EmployeeDetail | null;
|
|
66
|
+
employeeImage: string | null;
|
|
67
|
+
divisions: EmployeeDivision[];
|
|
68
|
+
functions: EmployeeFunction[];
|
|
69
|
+
additionalInfo: EmployeeContactInfo[];
|
|
70
|
+
history: EmployeeHistoryEntry[];
|
|
71
|
+
relatedPersons: RelatedPerson[];
|
|
72
|
+
accountingRules: AccountingRule[];
|
|
73
|
+
availableRuleSets: AccountingRuleSet[];
|
|
74
|
+
cosmicRadiation: CosmicRadiation | null;
|
|
75
|
+
vaccines: EmployeeVaccine[];
|
|
76
|
+
languages: EmployeeLanguage[];
|
|
77
|
+
loading: boolean;
|
|
78
|
+
detailLoading: boolean;
|
|
79
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ICwMultiFilterTag, CwMultiFilterTagProps } from "@cwellt_software/cwellt-reactjs-lib";
|
|
2
|
+
import type { PendingCounts } from "../../../domain/model/ChangeRequest";
|
|
3
|
+
import type { EmployeeDropdowns } from "../../../domain/model/EmployeeDropdowns";
|
|
4
|
+
import type { EmployeeListItem } from "../../../domain/model/EmployeeListItem";
|
|
5
|
+
export declare function useEmployeeFilters(dropdowns: EmployeeDropdowns | null, employeeList: EmployeeListItem[], pendingCounts: PendingCounts): {
|
|
6
|
+
allTags: Set<ICwMultiFilterTag>;
|
|
7
|
+
selectedTags: Set<CwMultiFilterTagProps>;
|
|
8
|
+
handleChangeSelectedTags: (tags: Set<ICwMultiFilterTag>) => void;
|
|
9
|
+
selectedFilters: Record<string, Set<string>>;
|
|
10
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type EmployeeTab = "details" | "additionalInfo" | "divisions" | "history" | "functions" | "files" | "reminders" | "relatedPersons" | "accountingRules" | "cosmicRadiation" | "historyTrack" | "languages" | "vaccines" | "changeRequests" | "dietary" | "wage";
|
|
2
|
+
export declare function useEmployeeOverviewUI(): {
|
|
3
|
+
activeTab: EmployeeTab;
|
|
4
|
+
setActiveTab: import("react").Dispatch<import("react").SetStateAction<EmployeeTab>>;
|
|
5
|
+
searchQuery: string;
|
|
6
|
+
setSearchQuery: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
7
|
+
showInactive: boolean;
|
|
8
|
+
setShowInactive: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
9
|
+
addModalOpen: boolean;
|
|
10
|
+
openAddModal: () => void;
|
|
11
|
+
closeAddModal: () => void;
|
|
12
|
+
editModalOpen: boolean;
|
|
13
|
+
openEditModal: () => void;
|
|
14
|
+
closeEditModal: () => void;
|
|
15
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Parse "YYYY-MM-DD" as local Date (avoids UTC midnight → timezone shift to previous day) */
|
|
2
|
+
export declare function parseLocalDate(s: string | null | undefined): Date | undefined;
|
|
3
|
+
/** Format Date to "YYYY-MM-DD" using local components (avoids UTC shift) */
|
|
4
|
+
export declare function formatLocalDate(d: Date | undefined | null): string | null;
|
|
5
|
+
/** Add a number of years to a local Date by operating on its calendar components (no timezone conversion). */
|
|
6
|
+
export declare function addYearsLocalDate(d: Date | undefined | null, years: number): Date | undefined;
|
|
7
|
+
/** Sentinel end-date used in the DB to mean "open end" */
|
|
8
|
+
export declare function isOpenEnd(s: string | null | undefined): boolean;
|
|
9
|
+
/** Clear sentinel dates so they appear as empty */
|
|
10
|
+
export declare function clearOpenEnd(s: string | null | undefined): string;
|
|
11
|
+
/** Display "YYYY-MM-DD" as localized string (e.g. "10.04.2025") without timezone shift */
|
|
12
|
+
export declare function displayDate(s: string | null | undefined, fallback?: string): string;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { EmployeeListItem } from "../../domain/model/EmployeeListItem";
|
|
2
|
+
export declare function filterEmployeeList(list: EmployeeListItem[], searchQuery: string, showInactive: boolean, selectedFilters: Record<string, Set<string>>, pendingCounts?: Record<number, number>): EmployeeListItem[];
|
|
3
|
+
export declare function getContractTypeLabel(code: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function openBase64ImageInNewTab(dataUri: string): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};const n=require("./dateUtils-BULQTXVb.cjs"),r=require("./DeleteDialog-BqXtjGGi.cjs");let i=require("@cwellt_software/cwellt-reactjs-lib"),a=require("react"),o=require("react/jsx-runtime");var s=class{baseUrl;constructor(e=`/api/employee`){this.baseUrl=e}async get(e){let t=await fetch(`${this.baseUrl}${e}`,{credentials:`include`});if(!t.ok)throw Error(`HTTP ${t.status}`);return t.json()}async post(e,t){let n=await fetch(`${this.baseUrl}${e}`,{method:`POST`,credentials:`include`,headers:t==null?{}:{"Content-Type":`application/json`},body:t==null?void 0:JSON.stringify(t)});if(!n.ok){let e=await n.text();try{let t=JSON.parse(e);throw Error(t.message||t.Message||`HTTP ${n.status}`)}catch(t){throw t instanceof SyntaxError?Error(e||`HTTP ${n.status}`):t}}return n.json()}async put(e,t){let n=await fetch(`${this.baseUrl}${e}`,{method:`PUT`,credentials:`include`,headers:t==null?{}:{"Content-Type":`application/json`},body:t==null?void 0:JSON.stringify(t)});if(!n.ok){let e=await n.text();try{let t=JSON.parse(e);throw Error(t.message||t.Message||`HTTP ${n.status}`)}catch(t){throw t instanceof SyntaxError?Error(e||`HTTP ${n.status}`):t}}let r=await n.text();return r?JSON.parse(r):void 0}async del(e){let t=await fetch(`${this.baseUrl}${e}`,{method:`DELETE`,credentials:`include`});if(!t.ok)throw Error(`HTTP ${t.status}`)}async getEmployeeList(){return this.get(`/list`)}async getEmployeeById(e){return this.get(`/${e}`)}async getEmployeeImage(e){return(await this.get(`/${e}/image`)).image}async uploadEmployeeImage(e,t){return(await this.post(`/${e}/image`,{image:t})).image}async deleteEmployeeImage(e){await this.del(`/${e}/image`)}async createEmployee(e){return this.post(``,e)}async updateEmployee(e){return this.put(``,e)}async deactivateEmployee(e){await this.put(`/${e}/deactivate`)}async activateEmployee(e){await this.put(`/${e}/activate`)}async check3LC(e){return(await this.get(`/check-3lc/${encodeURIComponent(e)}`)).available}async getDropdowns(){return this.get(`/dropdowns`)}async getDivisions(e){return this.get(`/${e}/divisions`)}async createDivision(e,t){return this.post(`/${e}/divisions/${t}`)}async deleteDivision(e){await this.del(`/divisions/${e}`)}async getFunctions(e,t){return this.get(`/${e}/functions?includeInactive=${t}`)}async createFunction(e){return this.post(`/functions`,e)}async updateFunction(e){return this.put(`/functions`,e)}async deactivateFunction(e){await this.put(`/functions/${e}/deactivate`)}async getAdditionalInfo(e){return this.get(`/${e}/additional-info`)}async createAdditionalInfo(e){return this.post(`/additional-info`,e)}async updateAdditionalInfo(e){return this.put(`/additional-info`,{employeeId:e.employeeId,contactTypeId:e.contactTypeId,value:e.value})}async deleteAdditionalInfo(e,t){await this.del(`/${e}/additional-info/${t}`)}async getHistory(e){return this.get(`/${e}/history`)}async createHistory(e){return this.post(`/history`,e)}async updateHistory(e){return this.put(`/history`,e)}async deleteHistory(e){await this.del(`/history/${e}`)}async getRelatedPersons(e){return this.get(`/${e}/related-persons`)}async createRelatedPerson(e){return this.post(`/related-persons`,e)}async updateRelatedPerson(e){return this.put(`/related-persons`,e)}async deleteRelatedPerson(e){await this.del(`/related-persons/${e}`)}async confirmRelatedPerson(e){return this.put(`/related-persons/${e}/confirm`,{})}async getUnconfirmedRelatedPersonsCounts(){return this.get(`/related-persons/unconfirmed-counts`)}async getAccountingRules(e){return this.get(`/${e}/accounting-rules`)}async getAvailableRuleSets(){return this.get(`/accounting-rule-sets`)}async assignAccountingRule(e,t){return this.post(`/${e}/accounting-rules/${t}`)}async removeAccountingRule(e,t){await this.del(`/${e}/accounting-rules/${t}`)}async getCosmicRadiation(e){return this.get(`/${e}/cosmic-radiation`)}async updateCosmicRadiation(e,t){return this.put(`/${e}/cosmic-radiation`,t)}async getEmployeeVaccines(e){return this.get(`/${e}/vaccines`)}async createEmployeeVaccine(e){return this.post(`/vaccines`,e)}async updateEmployeeVaccine(e){return this.put(`/vaccines`,e)}async deleteEmployeeVaccine(e){await this.del(`/vaccines/${e}`)}async getEmployeeLanguages(e){return this.get(`/${e}/languages`)}async createEmployeeLanguage(e){return this.post(`/languages`,e)}async updateEmployeeLanguage(e){return this.put(`/languages`,e)}async deleteEmployeeLanguage(e){await this.del(`/languages/${e}`)}async getPendingCounts(){return this.get(`/change-requests/pending-counts`)}async getChangeRequests(e){return this.get(`/${e}/change-requests`)}async reviewFields(e,t){await this.put(`/change-requests/${e}/review`,{changeRequestId:e,fieldReviews:t})}async approveAllFields(e){await this.put(`/change-requests/${e}/approve-all`)}async reviewPhoto(e,t,n){await this.put(`/change-requests/${e}/review-photo`,{changeRequestId:e,approved:t,comment:n})}},c=1,l=2;function u(e){return e===l?`allergy`:`dietaryNeed`}function d(e){return e===`allergy`?l:c}function f(e){return{id:e.id,name:e.name,itemType:u(e.itemType)}}function p(e){return{id:e.id,itemId:e.itemId,name:e.name,itemType:u(e.itemType),isCritical:e.isCritical,remarks:e.remarks??``}}function m(e){return{itemId:e.itemId,name:e.name,itemType:d(e.itemType),isCritical:e.isCritical,remarks:e.remarks}}var h=class{baseUrl;target;constructor(e,t){this.baseUrl=e,this.target=t}entriesUrl(){return`${this.baseUrl}/${this.target}`}async json(e,t){let n=await fetch(e,{credentials:`include`,...t});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.text();return r?JSON.parse(r):void 0}async getCatalog(){return(await this.json(`${this.baseUrl}/catalog`)).map(f)}async getEntries(){return(await this.json(this.entriesUrl())).map(p)}async createEntry(e){return p(await this.json(this.entriesUrl(),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(m(e))}))}async updateEntry(e,t){return p(await this.json(this.entriesUrl(),{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...m(t),id:e})}))}async deleteEntry(e){let t=await fetch(`${this.entriesUrl()}/${e}`,{method:`DELETE`,credentials:`include`});if(!t.ok)throw Error(`HTTP ${t.status}`)}},g=(0,a.createContext)(null),_=g.Provider;function v(e){let t=(0,a.useContext)(g);return t?(0,o.jsx)(o.Fragment,{children:t(e)}):(0,o.jsx)(i.CwDialog,{open:e.open,headline:e.title,width:e.width,onClose:e.onClose,onSave:e.onSave,disableSave:e.disableSave,children:e.children})}var y={emptyState:`_emptyState_1drnx_2`,transparent:`_transparent_1drnx_17`,subtitle:`_subtitle_1drnx_23`},b=({content:e,color:t=`neutral`,variant:n=`soft`,customColor:r,fontSize:a=`huge`,icon:s,className:c=``,style:l,subtitle:u,footer:d,children:f})=>{let p=t===`transparent`,m=[y.emptyState,p&&y.transparent,c].filter(Boolean).join(` `);return(0,o.jsxs)(i.CwNote,{color:p?`neutral`:t,variant:n,customColor:r,fontSize:a,icon:s,className:m,style:l,children:[f??e,u&&(0,o.jsx)(`p`,{className:y.subtitle,children:u}),d&&(0,o.jsx)(`footer`,{children:d})]})},x={lazyImage:`_lazyImage_tw8mr_1`,placeholder:`_placeholder_tw8mr_18`};function S({entityKey:e,loadImage:t,placeholder:n,className:r,style:i}){let[s,c]=(0,a.useState)(null),l=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let n=l.current;if(!n)return;let r=!1,i=new IntersectionObserver(([n])=>{n.isIntersecting&&(i.disconnect(),t(e).then(e=>{r||c(e)}).catch(()=>{r||c(null)}))},{rootMargin:`200px`});return i.observe(n),()=>{r=!0,i.disconnect()}},[e,t]),(0,o.jsx)(`figure`,{ref:l,className:[x.lazyImage,r].filter(Boolean).join(` `),style:i,children:s?(0,o.jsx)(`img`,{src:s,alt:``}):(0,o.jsx)(`figcaption`,{className:x.placeholder,children:n})})}function C({defaultTab:e,entityKey:t,onTabChange:n}){let[r,s]=(0,a.useState)(()=>new Set([e])),c=(0,a.useRef)(e);return(0,a.useEffect)(()=>{t!==void 0&&s(new Set([e,c.current]))},[t,e]),{activatedTabs:r,handleTabClick:(0,a.useCallback)(e=>{c.current=e.key,s(t=>{if(t.has(e.key))return t;let n=new Set(t);return n.add(e.key),n}),n?.(e.key)},[n]),renderTab:(0,a.useCallback)((e,t)=>r.has(e)?(0,o.jsx)(a.Suspense,{fallback:(0,o.jsx)(i.CwLoading,{}),children:t}):null,[r])}}var w={container:`_container_1gsem_3`,topBar:`_topBar_1gsem_12`,masterContent:`_masterContent_1gsem_32`,masterHeader:`_masterHeader_1gsem_43`,detailPanel:`_detailPanel_1gsem_50`,detailHeaderInfo:`_detailHeaderInfo_1gsem_88`,tabBody:`_tabBody_1gsem_112`,listAvatar:`_listAvatar_1gsem_131`};function T(){let e=new Date;return e.setMonth(e.getMonth()+1,1),n.i(e)}function E({dropdowns:e,onClose:t,onCheck3LC:r,onCreate:s}){let[c,l]=(0,a.useState)({letterCode:``,empNr:``,lastName:``,firstName:``,gender:1,birthdate:null,nationality:`CH`,licenseNo:``,socialNo:``,maritalStatusId:null,countryBirth:`CH`,placeBirth:``,entryDate:T(),exitDate:null,active:!0,functionId:null,employment:100,flightDuty:100,contractType:`FC`,holidaysPerYear:25,officeDays:0,dutyRegId:null,frmsConfigId:null,homeBaseId:null,travelBaseId:null,myIdTravelBlock:!1,loginMethod:1,mobile:``,telephone2:``,email:``,street:``,zipCode:``,city:``,homeCountry:`CH`,winUser:``,privateEmail:``,remark:``,emergencyContact:``,passengerTypeCode:``}),[u,d]=(0,a.useState)(``),[f,p]=(0,a.useState)(!1),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1),y=(0,a.useRef)(null),b=(0,a.useRef)(0),x=(e,t)=>l(n=>({...n,[e]:t})),S=e=>{let t=e.toUpperCase();if(x(`letterCode`,t),p(!1),d(``),y.current&&clearTimeout(y.current),t.length<3){h(!1);return}h(!0);let n=++b.current;y.current=setTimeout(async()=>{try{let e=await r(t);if(n!==b.current)return;p(e),d(e?``:`Letter Code already in use`)}catch{if(n!==b.current)return;d(`Check failed`)}finally{n===b.current&&h(!1)}},300)},C=async()=>{if(!c.letterCode||!c.lastName||!c.email){(0,i.CwDisplayMessage)(`Letter Code, Last Name and Email are required`,i.CwMessageType.WARN,5e3);return}if(!u){_(!0);try{await s(c)}finally{_(!1)}}},w=n.a,E=n.i;return(0,o.jsx)(v,{open:!0,title:`Add Employee`,onClose:t,onSave:C,width:`75rem`,disableSave:g||m||!!u,children:(0,o.jsxs)(`div`,{className:`cw-grid-base-auto`,children:[(0,o.jsxs)(`fieldset`,{className:`cw-fieldset cw-flex-column`,children:[(0,o.jsx)(`legend`,{children:`General`}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Letter Code`},value:c.letterCode,onChange:e=>S(e.currentTarget.value),required:!0,feedback:m?{message:`Checking…`,type:`info`}:u?{message:u,type:`danger`}:f?{message:`Available`,type:`success`}:void 0,"data-testid":`employee-form-letter-code`}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Employee No`},value:c.empNr,onChange:e=>x(`empNr`,e.currentTarget.value)})]}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Last Name`},"data-testid":`employee-form-last-name`,value:c.lastName,onChange:e=>x(`lastName`,e.currentTarget.value),required:!0}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`First Name`},"data-testid":`employee-form-first-name`,value:c.firstName,onChange:e=>x(`firstName`,e.currentTarget.value)}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Gender`},value:String(c.gender),onChange:e=>x(`gender`,Number(e.currentTarget.value)),children:e.genders.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwDatePicker,{alignProps:{flexDirection:`column`},labelProps:{text:`Birthdate`},value:w(c.birthdate),onChange:e=>x(`birthdate`,E(e))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Nationality`},value:c.nationality,onChange:e=>x(`nationality`,e.currentTarget.value),children:e.countries.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Marital Status`},value:c.maritalStatusId==null?``:String(c.maritalStatusId),onChange:e=>x(`maritalStatusId`,e.currentTarget.value?Number(e.currentTarget.value):null),placeholder:`Select...`,children:e.maritalStatuses.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`License No`},value:c.licenseNo,onChange:e=>x(`licenseNo`,e.currentTarget.value)}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Social No`},value:c.socialNo,onChange:e=>x(`socialNo`,e.currentTarget.value)}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Country of Birth`},value:c.countryBirth,onChange:e=>x(`countryBirth`,e.currentTarget.value),children:e.countries.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Place of Birth`},value:c.placeBirth,onChange:e=>x(`placeBirth`,e.currentTarget.value)})]})]}),(0,o.jsxs)(`fieldset`,{className:`cw-fieldset cw-flex-column`,children:[(0,o.jsx)(`legend`,{children:`Company`}),(0,o.jsx)(i.CwToggle,{checked:c.active,labelText:`Active`,onChange:()=>x(`active`,!c.active)}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwDatePicker,{alignProps:{flexDirection:`column`},labelProps:{text:`Entry Date`},value:w(c.entryDate),onChange:e=>x(`entryDate`,E(e))}),(0,o.jsx)(i.CwDatePicker,{alignProps:{flexDirection:`column`},labelProps:{text:`Exit Date`},value:w(c.exitDate),onChange:e=>x(`exitDate`,E(e)),showClear:!0}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Function`},value:c.functionId==null?``:String(c.functionId),onChange:e=>x(`functionId`,e.currentTarget.value?Number(e.currentTarget.value):null),placeholder:`Select...`,children:e.functions.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwDigit,{alignProps:{flexDirection:`column`},labelProps:{text:`Employment %`},value:String(c.employment),onChange:e=>x(`employment`,Number(e.currentTarget.value))}),(0,o.jsx)(i.CwDigit,{alignProps:{flexDirection:`column`},labelProps:{text:`Flight Duty %`},value:String(c.flightDuty),onChange:e=>x(`flightDuty`,Number(e.currentTarget.value))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Contract Type`},value:c.contractType,onChange:e=>x(`contractType`,e.currentTarget.value),children:e.contractTypes.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwDigit,{alignProps:{flexDirection:`column`},labelProps:{text:`Holidays p.a.`},value:c.holidaysPerYear==null?``:String(c.holidaysPerYear),onChange:e=>{let t=e.currentTarget.value;x(`holidaysPerYear`,t?Number(t):null)}}),(0,o.jsx)(i.CwDigit,{alignProps:{flexDirection:`column`},labelProps:{text:`Office Days`},value:c.officeDays==null?``:String(c.officeDays),onChange:e=>{let t=e.currentTarget.value;x(`officeDays`,t?Number(t):null)}})]}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Duty Regulation`},value:c.dutyRegId==null?``:String(c.dutyRegId),onChange:e=>x(`dutyRegId`,e.currentTarget.value?Number(e.currentTarget.value):null),placeholder:`Select...`,children:e.dutyRegulations.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`FRMS`},value:c.frmsConfigId==null?``:String(c.frmsConfigId),onChange:e=>x(`frmsConfigId`,e.currentTarget.value||null),placeholder:`Select...`,children:e.frmsConfigs.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Login Method`},value:String(c.loginMethod),onChange:e=>x(`loginMethod`,Number(e.currentTarget.value)),children:e.loginMethods.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwToggle,{checked:c.myIdTravelBlock,labelText:`MyIDTravel block`,onChange:()=>x(`myIdTravelBlock`,!c.myIdTravelBlock)})]}),(0,o.jsxs)(`fieldset`,{className:`cw-fieldset cw-flex-column`,style:{"--cw-size-large":`1rem`},children:[(0,o.jsx)(`legend`,{children:`Contact`}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Mobile`},value:c.mobile,onChange:e=>x(`mobile`,e.currentTarget.value)}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Telephone 2`},value:c.telephone2,onChange:e=>x(`telephone2`,e.currentTarget.value)})]}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Email`},"data-testid":`employee-form-email`,value:c.email,onChange:e=>x(`email`,e.currentTarget.value),required:!0}),(0,o.jsx)(i.CwTextArea,{alignProps:{flexDirection:`column`},labelProps:{text:`Street`},value:c.street,onChange:e=>x(`street`,e.currentTarget.value),rows:3}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Zip Code`},value:c.zipCode,onChange:e=>x(`zipCode`,e.currentTarget.value)}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`City`},value:c.city,onChange:e=>x(`city`,e.currentTarget.value)})]}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Country`},value:c.homeCountry,onChange:e=>x(`homeCountry`,e.currentTarget.value),children:e.countries.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Windows User`},value:c.winUser,onChange:e=>x(`winUser`,e.currentTarget.value)}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Private Email`},value:c.privateEmail,onChange:e=>x(`privateEmail`,e.currentTarget.value)}),(0,o.jsx)(i.CwTextArea,{alignProps:{flexDirection:`column`},labelProps:{text:`Remark`},value:c.remark,onChange:e=>x(`remark`,e.currentTarget.value),rows:4}),(0,o.jsx)(i.CwTextArea,{alignProps:{flexDirection:`column`},labelProps:{text:`Emergency Contact`},value:c.emergencyContact,onChange:e=>x(`emergencyContact`,e.currentTarget.value),rows:3})]})]})})}var D={editAvatarImg:`_editAvatarImg_14zk5_3`,editAvatarPlaceholder:`_editAvatarPlaceholder_14zk5_11 _lazyImage_tw8mr_1`};function O(e){let[t,n]=e.split(`,`),r=t.match(/:(.*?);/)?.[1]??`image/png`,i=atob(n),a=new Uint8Array(i.length);for(let e=0;e<i.length;e++)a[e]=i.charCodeAt(e);let o=new Blob([a],{type:r});window.open(URL.createObjectURL(o),`_blank`)}function k({employee:e,dropdowns:t,currentImage:r,onClose:s,onSave:c,onUploadImage:l,onDeleteImage:u}){let[d,f]=(0,a.useState)(()=>({id:e.id,letterCode:e.letterCode,empNr:e.empNr,lastName:e.lastName,firstName:e.firstName,gender:e.gender,birthdate:e.birthdate,nationality:e.nationality,licenseNo:e.licenseNo,socialNo:e.socialNo,maritalStatusId:e.maritalStatusId,countryBirth:e.countryBirth,placeBirth:e.placeBirth,entryDate:e.entryDate,exitDate:e.exitDate,active:e.active,functionId:e.functionId,employment:e.employment,flightDuty:e.flightDuty,contractType:e.contractType,holidaysPerYear:e.holidaysPerYear,officeDays:e.officeDays,dutyRegId:e.dutyRegId,frmsConfigId:e.frmsConfigId,homeBaseId:e.homeBaseId,travelBaseId:e.travelBaseId,myIdTravelBlock:e.myIdTravelBlock,loginMethod:e.loginMethod,mobile:e.mobile,telephone2:e.telephone2,email:e.email,street:e.street,zipCode:e.zipCode,city:e.city,homeCountry:e.homeCountry,winUser:e.winUser,privateEmail:e.privateEmail,remark:e.remark,emergencyContact:e.emergencyContact,passengerTypeCode:e.passengerTypeCode})),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),_=(e,t)=>f(n=>({...n,[e]:t})),y=async()=>{if(!d.lastName||!d.email){(0,i.CwDisplayMessage)(`Last Name and Email are required`,i.CwMessageType.WARN,5e3);return}m(!0);try{await c(d)}finally{m(!1)}},b=n.a,x=n.i;return(0,o.jsx)(v,{open:!0,title:`Edit: ${e.firstName} ${e.lastName}`,onClose:s,onSave:y,width:`75rem`,disableSave:p,children:(0,o.jsxs)(`div`,{className:`cw-grid-base-auto`,children:[(0,o.jsxs)(`fieldset`,{className:`cw-fieldset cw-flex-column`,children:[(0,o.jsx)(`legend`,{children:`General`}),(0,o.jsxs)(`div`,{className:`cw-flex-row cw-align-left-top`,children:[(0,o.jsx)(`figure`,{children:r?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`img`,{src:r,alt:`Employee`,className:D.editAvatarImg,onClick:()=>O(r)}),(0,o.jsx)(i.CwButton,{variant:`icon`,icon:`delete`,color:`danger`,onClick:async()=>{try{await u(e.id)}catch{(0,i.CwDisplayMessage)(`Failed to remove image`,i.CwMessageType.ERROR,5e3)}},title:`Remove image`})]}):(0,o.jsx)(`div`,{className:D.editAvatarPlaceholder,children:(0,o.jsx)(i.CwIcon,{iconId:`user-solid`,size:`large`})})}),h?(0,o.jsx)(i.CwLoading,{isLoading:!0,size:`small`,text:`Uploading…`}):(0,o.jsx)(i.CwInputImage,{onChange:async t=>{if(t){g(!0);try{let n=await(await fetch(t)).blob(),r=new FileReader;r.onloadend=async()=>{try{let t=r.result;await l(e.id,t)}catch{(0,i.CwDisplayMessage)(`Failed to upload image`,i.CwMessageType.ERROR,5e3)}finally{g(!1)}},r.readAsDataURL(n)}catch{(0,i.CwDisplayMessage)(`Failed to upload image`,i.CwMessageType.ERROR,5e3),g(!1)}}}})]}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Lettercode`},value:d.letterCode,disabled:!0,title:`Lettercode is not editable`}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Employee No`},value:d.empNr,onChange:e=>_(`empNr`,e.currentTarget.value)})]}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Last Name`},value:d.lastName,onChange:e=>_(`lastName`,e.currentTarget.value),required:!0}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`First Name`},value:d.firstName,onChange:e=>_(`firstName`,e.currentTarget.value)}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Gender`},value:String(d.gender),onChange:e=>_(`gender`,Number(e.currentTarget.value)),children:t.genders.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwDatePicker,{alignProps:{flexDirection:`column`},labelProps:{text:`Birthdate`},value:b(d.birthdate),onChange:e=>_(`birthdate`,x(e))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Nationality`},value:d.nationality,onChange:e=>_(`nationality`,e.currentTarget.value),children:t.countries.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Marital Status`},value:d.maritalStatusId==null?``:String(d.maritalStatusId),onChange:e=>_(`maritalStatusId`,e.currentTarget.value?Number(e.currentTarget.value):null),placeholder:`Select...`,children:t.maritalStatuses.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`License No`},value:d.licenseNo,onChange:e=>_(`licenseNo`,e.currentTarget.value)}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Social No`},value:d.socialNo,onChange:e=>_(`socialNo`,e.currentTarget.value)}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Country of Birth`},value:d.countryBirth,onChange:e=>_(`countryBirth`,e.currentTarget.value),children:t.countries.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Place of Birth`},value:d.placeBirth,onChange:e=>_(`placeBirth`,e.currentTarget.value)})]})]}),(0,o.jsxs)(`fieldset`,{className:`cw-fieldset cw-flex-column`,children:[(0,o.jsx)(`legend`,{children:`Company`}),(0,o.jsx)(i.CwToggle,{checked:d.active,labelText:`Active`,onChange:()=>{d.active?(_(`active`,!1),(!d.exitDate||d.exitDate.startsWith(`2099`))&&_(`exitDate`,n.i(new Date))):(_(`active`,!0),_(`exitDate`,null))}}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwDatePicker,{alignProps:{flexDirection:`column`},labelProps:{text:`Entry Date`},value:b(d.entryDate),onChange:e=>_(`entryDate`,x(e))}),(0,o.jsx)(i.CwDatePicker,{alignProps:{flexDirection:`column`},labelProps:{text:`Exit Date`},value:b(d.exitDate),onChange:e=>_(`exitDate`,x(e)),showClear:!0}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Function`},value:e.functionName,disabled:!0,title:`Managed via History tab`}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Employment %`},value:String(d.employment),disabled:!0,title:`Managed via History tab`}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Flight Duty %`},value:String(d.flightDuty),disabled:!0,title:`Managed via History tab`}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Contract Type`},value:d.contractType,disabled:!0,title:`Managed via History tab`}),(0,o.jsx)(i.CwDigit,{alignProps:{flexDirection:`column`},labelProps:{text:`Holidays p.a.`},value:d.holidaysPerYear==null?``:String(d.holidaysPerYear),onChange:e=>{let t=e.currentTarget.value;_(`holidaysPerYear`,t?Number(t):null)}}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Office Days`},value:d.officeDays==null?``:String(d.officeDays),disabled:!0,title:`Managed via History tab`})]}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Duty Regulation`},value:d.dutyRegId==null?``:String(d.dutyRegId),onChange:e=>_(`dutyRegId`,e.currentTarget.value?Number(e.currentTarget.value):null),placeholder:`Select...`,children:t.dutyRegulations.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`FRMS`},value:d.frmsConfigId==null?``:String(d.frmsConfigId),onChange:e=>_(`frmsConfigId`,e.currentTarget.value||null),placeholder:`Select...`,children:t.frmsConfigs.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Login Method`},value:String(d.loginMethod),onChange:e=>_(`loginMethod`,Number(e.currentTarget.value)),children:t.loginMethods.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwToggle,{checked:d.myIdTravelBlock,labelText:`MyIDTravel block`,onChange:()=>_(`myIdTravelBlock`,!d.myIdTravelBlock)})]}),(0,o.jsxs)(`fieldset`,{className:`cw-fieldset cw-flex-column`,style:{"--cw-size-large":`1rem`},children:[(0,o.jsx)(`legend`,{children:`Contact`}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Mobile`},value:d.mobile,onChange:e=>_(`mobile`,e.currentTarget.value)}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Telephone 2`},value:d.telephone2,onChange:e=>_(`telephone2`,e.currentTarget.value)})]}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Company Email`},value:d.email,onChange:e=>_(`email`,e.currentTarget.value),required:!0}),(0,o.jsx)(i.CwTextArea,{alignProps:{flexDirection:`column`},labelProps:{text:`Street`},value:d.street,onChange:e=>_(`street`,e.currentTarget.value)}),(0,o.jsxs)(`div`,{className:`cw-grid-base-auto cw-columns-smaller`,children:[(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Zip Code`},value:d.zipCode,onChange:e=>_(`zipCode`,e.currentTarget.value)}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`City`},value:d.city,onChange:e=>_(`city`,e.currentTarget.value)})]}),(0,o.jsx)(i.CwSelect,{alignProps:{flexDirection:`column`},labelProps:{text:`Country`},value:d.homeCountry,onChange:e=>_(`homeCountry`,e.currentTarget.value),children:t.countries.map(e=>(0,o.jsx)(i.CwOption,{value:e.id,children:e.name},e.id))}),(0,o.jsx)(i.CwInputText,{alignProps:{flexDirection:`column`},labelProps:{text:`Private Email`},value:d.privateEmail,onChange:e=>_(`privateEmail`,e.currentTarget.value)}),(0,o.jsx)(i.CwTextArea,{alignProps:{flexDirection:`column`},labelProps:{text:`Remark`},"data-testid":`employee-edit-form-remark`,value:d.remark,onChange:e=>_(`remark`,e.currentTarget.value)}),(0,o.jsx)(i.CwTextArea,{alignProps:{flexDirection:`column`},labelProps:{text:`Emergency Contact`},value:d.emergencyContact,onChange:e=>_(`emergencyContact`,e.currentTarget.value)})]})]})})}function A(e){let[t,n]=(0,a.useState)({}),[r,i]=(0,a.useState)([]),[o,s]=(0,a.useState)(!1),c=(0,a.useRef)(e);c.current=e;let l=(0,a.useCallback)(async()=>{try{let e=await c.current.getPendingCounts();n(e)}catch{}},[]),u=(0,a.useCallback)(async e=>{s(!0);try{let t=await c.current.getChangeRequests(e);i(t)}catch{i([])}finally{s(!1)}},[]);return{pendingCounts:t,changeRequests:r,loading:o,loadPendingCounts:l,loadChangeRequests:u,reviewFields:(0,a.useCallback)(async(e,t,n)=>{await c.current.reviewFields(e,t),await u(n),await l()},[u,l]),approveAllFields:(0,a.useCallback)(async(e,t)=>{await c.current.approveAllFields(e),await u(t),await l()},[u,l]),reviewPhoto:(0,a.useCallback)(async(e,t,n,r)=>{await c.current.reviewPhoto(e,t,r),await u(n),await l()},[u,l]),getPendingCount:(0,a.useCallback)(e=>t[e]??0,[t])}}function j(e){let[t,n]=(0,a.useState)({employeeList:[],dropdowns:null,selectedEmployeeId:null,selectedEmployee:null,employeeImage:null,divisions:[],functions:[],additionalInfo:[],history:[],relatedPersons:[],accountingRules:[],availableRuleSets:[],cosmicRadiation:null,vaccines:[],languages:[],loading:!0,detailLoading:!1}),[r,i]=(0,a.useState)({}),o=(0,a.useRef)(e);o.current=e;let s=(0,a.useRef)(new Set),c=(0,a.useRef)(!1),l=(0,a.useRef)(new Map),u=(0,a.useCallback)(async()=>{n(e=>({...e,loading:!0}));try{let e=await o.current.getEmployeeList();n(t=>({...t,employeeList:e,loading:!1}))}catch{n(e=>({...e,loading:!1}))}},[]);(0,a.useEffect)(()=>{u()},[u]);let d=(0,a.useCallback)(async()=>{try{let e=await o.current.getUnconfirmedRelatedPersonsCounts();i(e)}catch{}},[]);(0,a.useEffect)(()=>{d()},[d]);let f=(0,a.useCallback)(async()=>{if(!c.current){c.current=!0;try{let e=await o.current.getDropdowns();n(t=>({...t,dropdowns:e}))}catch{}}},[]);(0,a.useEffect)(()=>{f()},[f]);let p=(0,a.useCallback)(async e=>{n(t=>({...t,detailLoading:!0,selectedEmployeeId:e,employeeImage:null,selectedEmployee:null,divisions:[],functions:[],additionalInfo:[],history:[],relatedPersons:[],accountingRules:[],availableRuleSets:[],cosmicRadiation:null,vaccines:[],languages:[]})),s.current=new Set,await f(),n(e=>({...e,detailLoading:!1}));let t=l.current.get(e);t===void 0?o.current.getEmployeeImage(e).then(t=>{l.current.set(e,t),n(n=>n.selectedEmployeeId===e?{...n,employeeImage:t}:n)}).catch(()=>{}):n(n=>n.selectedEmployeeId===e?{...n,employeeImage:t}:n),o.current.getEmployeeById(e).then(t=>{n(n=>n.selectedEmployeeId===e?{...n,selectedEmployee:t}:n)}).catch(()=>{})},[f]),m=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(m.current)return;let e=new URLSearchParams(window.location.search).get(`employeeId`),n=e==null?NaN:Number(e);if(!Number.isFinite(n)){m.current=!0;return}t.employeeList.some(e=>e.id===n)&&(m.current=!0,p(n))},[t.employeeList,p]);let h=(0,a.useCallback)(async e=>{let t=l.current.get(e);if(t!==void 0)return t;try{let t=await o.current.getEmployeeImage(e);return l.current.set(e,t),t}catch{return null}},[]),g=(0,a.useCallback)(async(e,t)=>{if(!s.current.has(e)){s.current.add(e);try{switch(e){case`divisions`:{let e=await o.current.getDivisions(t);n(t=>({...t,divisions:e}));break}case`functions`:{let e=await o.current.getFunctions(t,!1);n(t=>({...t,functions:e}));break}case`additionalInfo`:{let e=await o.current.getAdditionalInfo(t);n(t=>({...t,additionalInfo:e}));break}case`history`:{let e=await o.current.getHistory(t);n(t=>({...t,history:e}));break}case`relatedPersons`:{let e=await o.current.getRelatedPersons(t);n(t=>({...t,relatedPersons:e}));break}case`accountingRules`:{let[e,r]=await Promise.all([o.current.getAccountingRules(t),o.current.getAvailableRuleSets()]);n(t=>({...t,accountingRules:e,availableRuleSets:r}));break}case`cosmicRadiation`:{let e=await o.current.getCosmicRadiation(t);n(t=>({...t,cosmicRadiation:e}));break}case`vaccines`:{let e=await o.current.getEmployeeVaccines(t);n(t=>({...t,vaccines:e}));break}case`languages`:{let e=await o.current.getEmployeeLanguages(t);n(t=>({...t,languages:e}));break}}}catch{}}},[]),_=(0,a.useCallback)(async()=>{let e=await o.current.getEmployeeList();n(t=>({...t,employeeList:e}))},[]),v=(0,a.useCallback)(async e=>{let t=await o.current.createEmployee(e);return n(e=>({...e,employeeList:[...e.employeeList,t]})),t},[]),y=(0,a.useCallback)(async e=>{let t=await o.current.updateEmployee(e);return n(e=>({...e,selectedEmployee:t,employeeList:e.employeeList.map(e=>e.id===t.id?{...e,firstName:t.firstName,lastName:t.lastName,letterCode:t.letterCode,active:t.active}:e)})),t},[]),b=(0,a.useCallback)(async e=>{await o.current.deactivateEmployee(e);let[,t]=await Promise.all([_(),o.current.getEmployeeById(e)]);n(n=>n.selectedEmployeeId===e?{...n,selectedEmployee:t}:n)},[_]),x=(0,a.useCallback)(async e=>{await o.current.activateEmployee(e);let[,t]=await Promise.all([_(),o.current.getEmployeeById(e)]);n(n=>n.selectedEmployeeId===e?{...n,selectedEmployee:t}:n)},[_]),S=(0,a.useCallback)(async(e,t)=>{let r=await o.current.uploadEmployeeImage(e,t);return l.current.set(e,r),n(t=>t.selectedEmployeeId===e?{...t,employeeImage:r}:t),r},[]),C=(0,a.useCallback)(async e=>{await o.current.deleteEmployeeImage(e),l.current.set(e,null),n(t=>t.selectedEmployeeId===e?{...t,employeeImage:null}:t)},[]),w=(0,a.useCallback)(async(e,t)=>{let r=await o.current.createDivision(e,t);n(e=>({...e,divisions:[...e.divisions,r]}))},[]),T=(0,a.useCallback)(async e=>{await o.current.deleteDivision(e),n(t=>({...t,divisions:t.divisions.filter(t=>t.id!==e)}))},[]),E=(0,a.useCallback)(async(e,t)=>{let r=await o.current.getFunctions(e,t);n(e=>({...e,functions:r}))},[]),D=(0,a.useCallback)(async e=>{let t=await o.current.createFunction(e);n(e=>({...e,functions:[...e.functions,t]}))},[]),O=(0,a.useCallback)(async e=>{let t=await o.current.updateFunction(e);n(e=>({...e,functions:e.functions.map(e=>e.id===t.id?t:e)}))},[]),k=(0,a.useCallback)(async e=>{await o.current.deactivateFunction(e);let t=new Date,r=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`;n(t=>({...t,functions:t.functions.map(t=>t.id===e?{...t,active:!1,functionEnd:r}:t)}))},[]),A=(0,a.useCallback)(async e=>{let t=await o.current.createAdditionalInfo(e);n(e=>({...e,additionalInfo:[...e.additionalInfo,t]}))},[]),j=(0,a.useCallback)(async e=>{let t=await o.current.updateAdditionalInfo(e);n(e=>({...e,additionalInfo:e.additionalInfo.map(e=>e.id===t.id?t:e)}))},[]),M=(0,a.useCallback)(async(e,t)=>{await o.current.deleteAdditionalInfo(e,t),n(e=>({...e,additionalInfo:e.additionalInfo.filter(e=>e.contactTypeId!==t)}))},[]),N=(0,a.useCallback)(async e=>{let t=await o.current.createHistory(e);n(e=>({...e,history:t}))},[]),P=(0,a.useCallback)(async e=>{let t=await o.current.updateHistory(e);n(e=>({...e,history:e.history.map(e=>e.id===t.id?t:e)}))},[]),F=(0,a.useCallback)(async e=>{await o.current.deleteHistory(e),n(t=>({...t,history:t.history.filter(t=>t.id!==e)}))},[]),I=(0,a.useCallback)(async e=>{let t=await o.current.createRelatedPerson(e);n(e=>({...e,relatedPersons:[...e.relatedPersons,t]})),await d()},[d]),L=(0,a.useCallback)(async e=>{let t=await o.current.updateRelatedPerson(e);n(e=>({...e,relatedPersons:e.relatedPersons.map(e=>e.id===t.id?t:e)})),await d()},[d]),R=(0,a.useCallback)(async e=>{await o.current.deleteRelatedPerson(e),n(t=>({...t,relatedPersons:t.relatedPersons.filter(t=>t.id!==e)})),await d()},[d]),z=(0,a.useCallback)(async e=>{let t=await o.current.confirmRelatedPerson(e);n(e=>({...e,relatedPersons:e.relatedPersons.map(e=>e.id===t.id?t:e)})),await d()},[d]),B=(0,a.useCallback)(async(e,t)=>{let r=await o.current.assignAccountingRule(e,t);n(e=>({...e,accountingRules:[...e.accountingRules,r]}))},[]),V=(0,a.useCallback)(async(e,t)=>{await o.current.removeAccountingRule(e,t),n(e=>({...e,accountingRules:e.accountingRules.filter(e=>e.ruleId!==t)}))},[]),H=(0,a.useCallback)(async(e,t)=>{let r=await o.current.updateCosmicRadiation(e,t);n(e=>({...e,cosmicRadiation:r}))},[]),U=(0,a.useCallback)(async e=>{let t=await o.current.createEmployeeVaccine(e);n(e=>({...e,vaccines:[...e.vaccines,t]}))},[]),W=(0,a.useCallback)(async e=>{let t=await o.current.updateEmployeeVaccine(e);n(e=>({...e,vaccines:e.vaccines.map(e=>e.id===t.id?t:e)}))},[]),G=(0,a.useCallback)(async e=>{await o.current.deleteEmployeeVaccine(e),n(t=>({...t,vaccines:t.vaccines.filter(t=>t.id!==e)}))},[]),K=(0,a.useCallback)(async e=>{let t=await o.current.createEmployeeLanguage(e);n(e=>({...e,languages:[...e.languages,t]}))},[]),q=(0,a.useCallback)(async e=>{let t=await o.current.updateEmployeeLanguage(e);n(e=>({...e,languages:e.languages.map(e=>e.id===t.id?t:e)}))},[]),J=(0,a.useCallback)(async e=>{await o.current.deleteEmployeeLanguage(e),n(t=>({...t,languages:t.languages.filter(t=>t.id!==e)}))},[]);return{...t,selectEmployee:p,getEmployeeImageCached:h,ensureTabData:g,refreshEmployeeList:_,createEmployee:v,updateEmployee:y,deactivateEmployee:b,activateEmployee:x,uploadEmployeeImage:S,deleteEmployeeImage:C,createDivision:w,deleteDivision:T,refreshFunctions:E,createFunction:D,updateFunction:O,deactivateFunction:k,createAdditionalInfo:A,updateAdditionalInfo:j,deleteAdditionalInfo:M,createHistory:N,updateHistory:P,deleteHistory:F,createRelatedPerson:I,updateRelatedPerson:L,deleteRelatedPerson:R,confirmRelatedPerson:z,assignAccountingRule:B,removeAccountingRule:V,updateCosmicRadiation:H,createVaccine:U,updateVaccine:W,deleteVaccine:G,createLanguage:K,updateLanguage:q,deleteLanguage:J,unconfirmedRelatedPersonsCounts:r}}var M=e=>({r:parseInt(e.slice(1,3),16),g:parseInt(e.slice(3,5),16),b:parseInt(e.slice(5,7),16)}),N={Function:M(`#cedcff`),"Contract Type":M(`#ffddb3`),Division:M(`#c8e6c9`),Homebase:M(`#f3e5f5`),"Change Request":M(`#ffe0b2`),Vaccination:M(`#e0f7fa`),Language:M(`#f1f8e9`)};function P(e,t,n){let[r,i]=(0,a.useState)(new Set);return{allTags:(0,a.useMemo)(()=>{if(!e)return new Set;let r=new Set;for(let t of e.functions)r.add({ID:`Function_${t.id}`,Name:t.name,Value:t.name,Category:`Function`,PrimaryColor:N.Function});for(let t of e.contractTypes)r.add({ID:`ContractType_${t.id}`,Name:t.name,Value:t.id,Category:`Contract Type`,PrimaryColor:N[`Contract Type`]});for(let t of e.divisions)r.add({ID:`Division_${t.id}`,Name:t.name,Value:t.name,Category:`Division`,PrimaryColor:N.Division});let i=new Set(t.map(e=>e.homebaseIcao).filter(Boolean));for(let e of[...i].sort())r.add({ID:`Homebase_${e}`,Name:e,Value:e,Category:`Homebase`,PrimaryColor:N.Homebase});let a=new Set,o=new Set;for(let e of t){if(e.vaccineIds)for(let t of e.vaccineIds)a.add(t);if(e.languageIds)for(let t of e.languageIds)o.add(t)}for(let t of e.vaccines)a.has(t.id)&&r.add({ID:`Vaccination_${t.id}`,Name:t.name,Value:t.id,Category:`Vaccination`,PrimaryColor:N.Vaccination});for(let t of e.languages)o.has(t.id)&&r.add({ID:`Language_${t.id}`,Name:t.name,Value:t.id,Category:`Language`,PrimaryColor:N.Language});return Object.keys(n).length>0&&r.add({ID:`ChangeRequest_Pending`,Name:`Pending Changes`,Value:`Pending`,Category:`Change Request`,PrimaryColor:N[`Change Request`]}),r},[e,t,n]),selectedTags:r,handleChangeSelectedTags:(0,a.useCallback)(e=>{i(e)},[]),selectedFilters:(0,a.useMemo)(()=>{let e={};for(let t of r)e[t.Category]||(e[t.Category]=new Set),e[t.Category].add(t.Value);return e},[r])}}function F(){let[e,t]=(0,a.useState)(`details`),[n,r]=(0,a.useState)(``),[i,o]=(0,a.useState)(!1),[s,c]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1);return{activeTab:e,setActiveTab:t,searchQuery:n,setSearchQuery:r,showInactive:i,setShowInactive:o,addModalOpen:s,openAddModal:(0,a.useCallback)(()=>c(!0),[]),closeAddModal:(0,a.useCallback)(()=>c(!1),[]),editModalOpen:l,openEditModal:(0,a.useCallback)(()=>u(!0),[]),closeEditModal:(0,a.useCallback)(()=>u(!1),[])}}function I(e,t,n,r,i){let a=e;if(n||(a=a.filter(e=>e.active)),t.trim()){let e=t.toLowerCase();a=a.filter(t=>t.lastName?.toLowerCase().includes(e)||t.firstName?.toLowerCase().includes(e)||t.letterCode?.toLowerCase().includes(e)||t.empNr?.toLowerCase().includes(e))}for(let[e,t]of Object.entries(r))if(t.size!==0)switch(e){case`Function`:a=a.filter(e=>e.currentFunctions.some(e=>t.has(e)));break;case`Contract Type`:a=a.filter(e=>t.has(e.contractType));break;case`Division`:a=a.filter(e=>e.divisions.some(e=>t.has(e)));break;case`Homebase`:a=a.filter(e=>t.has(e.homebaseIcao));break;case`Vaccination`:a=a.filter(e=>e.vaccineIds?.some(e=>t.has(e)));break;case`Language`:a=a.filter(e=>e.languageIds?.some(e=>t.has(e)));break;case`Change Request`:t.has(`Pending`)&&i&&(a=a.filter(e=>(i[e.id]??0)>0));break}return a}var L=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./DetailsTab-DKFAMvlW.cjs")).then(e=>({default:e.DetailsTab}))),R=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./AdditionalInfoTab-DW-S373w.cjs")).then(e=>({default:e.AdditionalInfoTab}))),z=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./DivisionsTab--eEVFupH.cjs")).then(e=>({default:e.DivisionsTab}))),B=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./HistoryTab-CViMxBYc.cjs")).then(e=>({default:e.HistoryTab}))),V=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./FunctionsTab-DQPsK0rq.cjs")).then(e=>({default:e.FunctionsTab}))),H=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./RelatedPersonsTab-DgoBLK21.cjs")).then(e=>({default:e.RelatedPersonsTab}))),U=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./AccountingRulesTab-DQJ7nD71.cjs")).then(e=>({default:e.AccountingRulesTab}))),W=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./CosmicRadiationTab-6fqnDLH3.cjs")).then(e=>({default:e.CosmicRadiationTab}))),G=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./LanguagesTab-BKa7nmoT.cjs")).then(e=>({default:e.LanguagesTab}))),K=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./VaccinesTab-BGhy3EgY.cjs")).then(e=>({default:e.VaccinesTab}))),q=(0,a.lazy)(()=>Promise.resolve().then(()=>require("./ChangeRequestsTab-CY7-qObu.cjs")).then(e=>({default:e.ChangeRequestsTab}))),J=(0,a.lazy)(()=>Promise.resolve().then(()=>se).then(e=>({default:e.DietaryPageWithParams})));function ee({employee:e,getImage:t}){let n=`${e.firstName?.[0]??``}${e.lastName?.[0]??``}`.toUpperCase();return(0,o.jsxs)(`div`,{className:`cw-flex-row cw-gap-dense cw-align-left-center`,children:[(0,o.jsx)(S,{entityKey:e.id,loadImage:t,placeholder:n,className:w.listAvatar}),(0,o.jsxs)(`div`,{className:`cw-flex-column cw-gap-tiny cw-flex-grow`,children:[(0,o.jsxs)(`p`,{style:{fontWeight:600},children:[e.lastName,`, `,e.firstName]}),(0,o.jsxs)(`p`,{className:`cw-color-neutral cw-font-size-small`,children:[e.letterCode,` · `,e.empNr]}),(0,o.jsxs)(`p`,{className:`cw-flex-row cw-align-left-center cw-gap-tiny cw-flex-wrap`,children:[e.homebaseIcao&&(0,o.jsx)(i.CwChip,{label:e.homebaseIcao,colorScheme:`neutral`}),e.currentFunctions.slice(0,3).map((e,t)=>(0,o.jsx)(i.CwChip,{label:e,colorScheme:`info`},`${e}-${t}`)),e.currentFunctions.length>3&&(0,o.jsxs)(`span`,{className:`cw-color-neutral cw-font-size-small`,children:[`+`,e.currentFunctions.length-3]}),!e.active&&(0,o.jsx)(i.CwChip,{label:`Inactive`,colorScheme:`danger`})]})]})]})}function te({api:e,enabledTabs:t,airportConfig:n,dietaryBaseUrl:r,renderFiles:s,renderReminders:c,renderHistoryTrack:l}){let u=j(e),d=F(),f=A(e),p=P(u.dropdowns,u.employeeList,f.pendingCounts);(0,a.useEffect)(()=>{f.loadPendingCounts()},[f.loadPendingCounts]);let m=(0,a.useMemo)(()=>I(u.employeeList,d.searchQuery,d.showInactive,p.selectedFilters,f.pendingCounts),[u.employeeList,d.searchQuery,d.showInactive,p.selectedFilters,f.pendingCounts]),h=(0,a.useMemo)(()=>m.map(e=>{let t=f.getPendingCount(e.id)+(u.unconfirmedRelatedPersonsCounts[e.id]??0);return{key:String(e.id),content:(0,o.jsxs)(`div`,{className:`cw-flex-row cw-gap-dense cw-align-left-center`,style:{width:`100%`},children:[(0,o.jsx)(`div`,{style:{flex:1},children:(0,o.jsx)(ee,{employee:e,getImage:u.getEmployeeImageCached})}),t>0&&(0,o.jsx)(i.CwChip,{label:String(t),colorScheme:`warning`})]})}}),[m,u.getEmployeeImageCached,f.getPendingCount,u.unconfirmedRelatedPersonsCounts]),g=(0,a.useCallback)(e=>{u.selectEmployee(Number(e)),d.setActiveTab(`details`)},[u.selectEmployee,d.setActiveTab]),_=(0,a.useMemo)(()=>u.employeeList.find(e=>e.id===u.selectedEmployeeId)??null,[u.employeeList,u.selectedEmployeeId]),v=m.filter(e=>e.active).length,{handleTabClick:y,renderTab:x}=C({defaultTab:`details`,entityKey:u.selectedEmployeeId,onTabChange:e=>d.setActiveTab(e)});(0,a.useEffect)(()=>{_&&(u.ensureTabData(d.activeTab,_.id),d.activeTab===`changeRequests`&&f.loadChangeRequests(_.id))},[_?.id,d.activeTab]);let S=(0,a.useMemo)(()=>{if(!_)return[];let e=_.id,i=f.getPendingCount(e),a=(u.unconfirmedRelatedPersonsCounts[e]??0)>0,d=[{key:`details`,title:`Details`,content:x(`details`,(0,o.jsx)(L,{employee:u.selectedEmployee,dropdowns:u.dropdowns}))},{key:`additionalInfo`,title:`Additional Info`,content:x(`additionalInfo`,(0,o.jsx)(R,{items:u.additionalInfo,employeeId:e,contactTypes:u.dropdowns?.contactTypes??[],onCreate:u.createAdditionalInfo,onUpdate:u.updateAdditionalInfo,onDelete:u.deleteAdditionalInfo}))},{key:`divisions`,title:`Divisions`,content:x(`divisions`,(0,o.jsx)(z,{items:u.divisions,employeeId:e,availableDivisions:u.dropdowns?.divisions??[],onCreate:u.createDivision,onDelete:u.deleteDivision}))},{key:`history`,title:`History`,content:x(`history`,(0,o.jsx)(B,{items:u.history,employeeId:e,functions:u.dropdowns?.functionsNonTraining??[],contractTypes:u.dropdowns?.contractTypes??[],airportConfig:n,onCreate:u.createHistory,onUpdate:u.updateHistory,onDelete:u.deleteHistory}))},{key:`functions`,title:`Functions`,content:x(`functions`,(0,o.jsx)(V,{items:u.functions,employeeId:e,availableFunctions:u.dropdowns?.functionsNonTraining??[],onCreate:u.createFunction,onUpdate:u.updateFunction,onDeactivate:u.deactivateFunction,onRefresh:u.refreshFunctions}))},...s?[{key:`files`,title:`Files`,content:x(`files`,s(e))}]:[],...c?[{key:`reminders`,title:`Reminders`,content:x(`reminders`,c(e))}]:[],{key:`relatedPersons`,title:`Related Persons`,badgeColor:a?`var(--cw-color-warn, #ed6c02)`:void 0,content:x(`relatedPersons`,(0,o.jsx)(H,{items:u.relatedPersons,employeeId:e,relationTypes:u.dropdowns?.relationTypes??[],onCreate:u.createRelatedPerson,onUpdate:u.updateRelatedPerson,onDelete:u.deleteRelatedPerson,onConfirm:u.confirmRelatedPerson}))},{key:`accountingRules`,title:`Accounting Rules`,content:x(`accountingRules`,(0,o.jsx)(U,{items:u.accountingRules,employeeId:e,availableRuleSets:u.availableRuleSets,onAssign:u.assignAccountingRule,onRemove:u.removeAccountingRule}))},{key:`cosmicRadiation`,title:`Cosmic Radiation`,content:x(`cosmicRadiation`,(0,o.jsx)(W,{data:u.cosmicRadiation,employeeId:e,onUpdate:u.updateCosmicRadiation}))},...l?[{key:`historyTrack`,title:`History Track`,content:x(`historyTrack`,l(e))}]:[],{key:`languages`,title:`Languages`,content:x(`languages`,(0,o.jsx)(G,{items:u.languages,employeeId:e,languages:u.dropdowns?.languages??[],levels:u.dropdowns?.languageLevels??[],onCreate:u.createLanguage,onUpdate:u.updateLanguage,onDelete:u.deleteLanguage}))},{key:`vaccines`,title:`Vaccines`,content:x(`vaccines`,(0,o.jsx)(K,{items:u.vaccines,employeeId:e,vaccines:u.dropdowns?.vaccineOptions??[],onCreate:u.createVaccine,onUpdate:u.updateVaccine,onDelete:u.deleteVaccine}))},...r?[{key:`dietary`,title:`Dietary`,content:x(`dietary`,(0,o.jsx)(J,{baseUrl:r,employeeId:e}))}]:[]];if(t){let e=new Set(t);d=d.filter(t=>e.has(t.key))}return i>0&&d.splice(1,0,{key:`changeRequests`,title:`Change Requests`,badgeColor:`var(--cw-color-warn, #ed6c02)`,content:x(`changeRequests`,(0,o.jsx)(q,{requests:f.changeRequests,employeeId:e,loading:f.loading,onReviewFields:f.reviewFields,onApproveAll:f.approveAllFields,onReviewPhoto:f.reviewPhoto,currentImage:u.employeeImage}))}),d},[_,u,f,x,t,n,r,s,c,l]),T=_?`${_.firstName?.[0]??``}${_.lastName?.[0]??``}`.toUpperCase():``,D=_?(0,o.jsxs)(`article`,{className:w.detailPanel,children:[(0,o.jsxs)(`header`,{children:[(0,o.jsx)(`figure`,{children:u.employeeImage?(0,o.jsx)(`img`,{src:u.employeeImage,alt:`${_.firstName} ${_.lastName}`,style:{cursor:`pointer`},onClick:()=>O(u.employeeImage)}):T}),(0,o.jsxs)(`div`,{className:w.detailHeaderInfo,children:[(0,o.jsxs)(`h3`,{"data-testid":`employee-detail-name`,children:[_.lastName,`, `,_.firstName]}),(0,o.jsxs)(`p`,{"data-testid":`employee-detail-summary`,children:[_.letterCode,` · `,_.empNr,` · `,_.functionName,_.homebaseIcao&&(0,o.jsxs)(o.Fragment,{children:[` · `,_.homebaseIcao]}),!_.active&&(0,o.jsxs)(o.Fragment,{children:[` · `,(0,o.jsx)(i.CwChip,{label:`Inactive`,colorScheme:`danger`})]})]})]}),(0,o.jsxs)(`div`,{className:`cw-flex-row cw-gap-small`,children:[(0,o.jsx)(i.CwButton,{variant:`outline`,color:`primary`,text:`Edit`,onClick:d.openEditModal,"data-testid":`employee-edit-button`}),(0,o.jsx)(i.CwButton,{variant:`solid`,color:_.active?`danger`:`primary`,"data-testid":`employee-toggle-active-button`,text:_.active?`Deactivate`:`Activate`,onClick:async()=>{try{_.active?await u.deactivateEmployee(_.id):await u.activateEmployee(_.id)}catch{(0,i.CwDisplayMessage)(`Failed to update employee status`,i.CwMessageType.ERROR,5e3)}}})]})]}),(0,o.jsx)(`div`,{className:w.tabBody,children:u.detailLoading?(0,o.jsx)(i.CwLoading,{}):(0,o.jsx)(i.CwTabs,{tabs:S,defaultActiveKey:d.activeTab,onTabClick:y},_.id)})]}):void 0,M=(0,o.jsx)(b,{icon:`user-solid`,color:`transparent`,content:`Select an employee to view details`,subtitle:`Choose from the list on the left`});return u.loading?(0,o.jsx)(i.CwLoading,{}):(0,o.jsxs)(`div`,{className:w.container,children:[(0,o.jsxs)(`header`,{className:w.topBar,children:[(0,o.jsx)(`h2`,{children:`Employees`}),(0,o.jsx)(`div`,{children:(0,o.jsx)(i.CwButton,{text:`Add Employee`,onClick:d.openAddModal,icon:`plus`,"data-testid":`employee-add-button`})})]}),(0,o.jsx)(`div`,{className:w.masterContent,children:(0,o.jsx)(i.CwMasterDetail,{items:h,selectedKey:_?String(_.id):void 0,onSelect:g,detailContent:D,emptyDetail:M,searchPlaceholder:`Search name, code, employee no...`,onSearch:d.setSearchQuery,masterHeader:(0,o.jsxs)(`div`,{className:w.masterHeader,children:[(0,o.jsx)(`div`,{children:(0,o.jsx)(i.CwToggle,{checked:d.showInactive,labelText:`Show Inactive`,onChange:()=>d.setShowInactive(e=>!e)})}),p.allTags.size>0&&(0,o.jsx)(`div`,{children:(0,o.jsx)(i.CwMultiFilter,{id:`employee-filter`,allTags:p.allTags,selectedTags:p.selectedTags,onChangeSelectedTags:p.handleChangeSelectedTags})})]}),masterFooter:(0,o.jsxs)(o.Fragment,{children:[m.length,` employees · `,v,` active`]})})}),d.addModalOpen&&u.dropdowns&&(0,o.jsx)(E,{dropdowns:u.dropdowns,onClose:d.closeAddModal,onCheck3LC:e.check3LC.bind(e),onCreate:async e=>{try{let t=await u.createEmployee(e);d.closeAddModal(),u.selectEmployee(t.id)}catch{(0,i.CwDisplayMessage)(`Failed to create employee`,i.CwMessageType.ERROR,5e3)}}}),d.editModalOpen&&_&&u.selectedEmployee&&u.dropdowns&&(0,o.jsx)(k,{employee:u.selectedEmployee,dropdowns:u.dropdowns,currentImage:u.employeeImage,onClose:d.closeEditModal,onSave:async e=>{try{await u.updateEmployee(e),d.closeEditModal()}catch(e){(0,i.CwDisplayMessage)(e instanceof Error?e.message:`Failed to save employee`,i.CwMessageType.ERROR,5e3)}},onUploadImage:u.uploadEmployeeImage,onDeleteImage:u.deleteEmployeeImage})]})}var ne=6;function re(e,t,n,r,i=ne){let a=n.trim().toLowerCase();return a.length===0?[]:e.filter(e=>e.itemType===t&&!r.includes(e.id)&&e.name.toLowerCase().includes(a)).slice(0,i)}function ie(e,t,n){let r=n.trim().toLowerCase();return e.find(e=>e.itemType===t&&e.name.toLowerCase()===r)?.id??null}var Y={name:``,isCritical:!1,remarks:``};function ae({open:e,itemType:t,catalog:n,assignedItemIds:r,editing:s,saving:c,onSave:l,onClose:u}){let[d,f]=(0,a.useState)(Y),p=e=>f(t=>({...t,...e}));(0,a.useEffect)(()=>{e&&f(s?{name:s.name,isCritical:s.isCritical,remarks:s.remarks}:Y)},[e,s]);let m=t===`allergy`,h=m?`Allergy`:`Dietary need`,g=re(n,t,d.name,r.filter(e=>e!==s?.itemId));return(0,o.jsx)(i.CwDialog,{open:e,headline:s?`Edit ${h}`:`Add ${h}`,width:`30rem`,onClose:u,onSave:async()=>{let e=d.name.trim();await l({itemId:ie(n,t,e),name:e,itemType:t,isCritical:m?d.isCritical:!1,remarks:d.remarks})&&u()},disableSave:c||d.name.trim().length===0,"data-testid":`dietary-form-dialog`,children:(0,o.jsxs)(`div`,{className:`cw-flex-column`,"data-label-width":`7rem`,children:[(0,o.jsx)(i.CwInputText,{labelProps:{text:`Name`},value:d.name,onChange:e=>p({name:e.currentTarget.value}),feedback:{type:`neutral`,message:`Pick an existing ${h.toLowerCase()} from the suggestions or type a new one.`},"data-testid":`dietary-form-name`}),g.length>0&&(0,o.jsx)(`div`,{className:`cw-flex-row cw-align-left-center`,"data-testid":`dietary-form-suggestions`,children:g.map(e=>(0,o.jsx)(i.CwButton,{variant:`outline`,color:`neutral`,text:e.name,onClick:()=>p({name:e.name}),"data-testid":`dietary-form-suggestion-${e.id}`},e.id))}),m&&(0,o.jsx)(i.CwToggle,{labelProps:{text:`Critical`},checked:d.isCritical,onChange:e=>p({isCritical:e.currentTarget.checked}),"data-testid":`dietary-form-critical`}),(0,o.jsx)(i.CwTextArea,{labelProps:{text:`Remarks`},value:d.remarks,onChange:e=>p({remarks:e.currentTarget.value})})]})})}function X({itemType:e,title:t,dietary:n}){let[s,c]=(0,a.useState)(!1),[l,u]=(0,a.useState)(null),[d,f]=(0,a.useState)(null),p=e===`allergy`,m=p?`dietary-allergies`:`dietary-needs`,h=p?`allergy`:`dietary need`,g=n.entries.filter(t=>t.itemType===e).sort((e,t)=>Number(t.isCritical)-Number(e.isCritical)||e.name.localeCompare(t.name)),_=()=>{u(null),c(!0)},v=e=>{u(e),c(!0)};return(0,o.jsxs)(`section`,{"data-testid":m,children:[(0,o.jsxs)(`header`,{className:`cw-flex-row cw-align-left-center cw-margin-bottom-regular`,children:[(0,o.jsx)(`h5`,{className:`cw-flex-grow cw-margin-none`,children:t}),(0,o.jsx)(i.CwButton,{text:`Add ${h}`,icon:`plus`,onClick:_,"data-testid":`${m}-add-button`})]}),(0,o.jsx)(i.CwTable,{testId:`grid-${m}`,columns:[{key:`actions`,title:``,className:`cw-table-col-action cw-table-col-buttons`,render:e=>(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.CwButton,{variant:`icon`,icon:`edit`,onClick:()=>v(e),"data-testid":`${m}-row-${e.id}-edit`}),(0,o.jsx)(i.CwButton,{variant:`icon`,icon:`delete`,color:`danger`,onClick:()=>f(e),"data-testid":`${m}-row-${e.id}-delete`})]})},{key:`name`,title:`Name`,dataIndex:`name`,className:`cw-table-col-medium`,render:e=>(0,o.jsxs)(`span`,{className:`cw-flex-row cw-align-left-center cw-gap-small`,"data-testid":`${m}-row-${e.id}`,children:[e.name,e.isCritical&&(0,o.jsx)(i.CwChip,{label:`Critical`,colorScheme:`danger`})]})},{key:`remarks`,title:`Remarks`,dataIndex:`remarks`,className:`cw-table-col-grow`}],data:g,rowKey:`id`}),(0,o.jsx)(ae,{open:s,itemType:e,catalog:n.catalog,assignedItemIds:n.entries.map(e=>e.itemId),editing:l,saving:n.saving,onSave:e=>l?n.update(l.id,e):n.create(e),onClose:()=>c(!1)}),d&&(0,o.jsx)(r.t,{open:!0,headline:`Delete ${h}`,message:`Delete "${d.name}"?`,onDelete:async()=>{await n.remove(d.id),f(null)},onClose:()=>f(null)})]})}function Z(e){return e instanceof Error?e.message:`Operation failed`}function oe(e){let[t,n]=(0,a.useState)([]),[r,o]=(0,a.useState)([]),[s,c]=(0,a.useState)(!1),[l,u]=(0,a.useState)(0);(0,a.useEffect)(()=>{let t=!1;return(async()=>{try{c(!0);let[r,i]=await Promise.all([e.getEntries(),e.getCatalog()]);t||(n(r),o(i))}catch(e){t||(n([]),o([]),(0,i.CwDisplayMessage)(Z(e),i.CwMessageType.ERROR,3e3))}finally{t||c(!1)}})(),()=>{t=!0}},[e]);let d=(0,a.useCallback)(e=>{o(t=>t.some(t=>t.id===e.itemId)?t:[...t,{id:e.itemId,name:e.name,itemType:e.itemType}])},[]),f=(0,a.useCallback)(async t=>{try{u(e=>e+1);let r=await e.createEntry(t);return n(e=>[...e,r]),d(r),(0,i.CwDisplayMessage)(`Saved successfully`,i.CwMessageType.SUCCESS),!0}catch(e){return(0,i.CwDisplayMessage)(Z(e),i.CwMessageType.ERROR,3e3),!1}finally{u(e=>Math.max(0,e-1))}},[e,d]),p=(0,a.useCallback)(async(t,r)=>{try{u(e=>e+1);let a=await e.updateEntry(t,r);return n(e=>e.map(e=>e.id===t?a:e)),d(a),(0,i.CwDisplayMessage)(`Saved successfully`,i.CwMessageType.SUCCESS),!0}catch(e){return(0,i.CwDisplayMessage)(Z(e),i.CwMessageType.ERROR,3e3),!1}finally{u(e=>Math.max(0,e-1))}},[e,d]),m=(0,a.useCallback)(async t=>{try{u(e=>e+1),await e.deleteEntry(t),n(e=>e.filter(e=>e.id!==t)),(0,i.CwDisplayMessage)(`Deleted`,i.CwMessageType.SUCCESS)}catch(e){(0,i.CwDisplayMessage)(Z(e),i.CwMessageType.ERROR,3e3)}finally{u(e=>Math.max(0,e-1))}},[e]);return{entries:t,catalog:r,loading:s,saving:l>0,create:f,update:p,remove:m}}var se=t({DietaryPage:()=>$,DietaryPageWithParams:()=>Q});function Q({baseUrl:e,employeeId:t}){let n=oe((0,a.useMemo)(()=>new h(e,t??`me`),[e,t]));return(0,o.jsx)(`section`,{className:`cw-flex-column`,"data-testid":`dietary-page`,children:n.loading?(0,o.jsx)(i.CwLoading,{size:`small`}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(X,{itemType:`dietaryNeed`,title:`Dietary needs`,dietary:n}),(0,o.jsx)(X,{itemType:`allergy`,title:`Allergies`,dietary:n})]})})}function $({baseUrl:e,employeeId:t}){return(0,o.jsx)(`div`,{className:`cw-page-container-react cw-flex-column`,"data-testid":`dietary-page-container`,children:(0,o.jsx)(Q,{baseUrl:e,employeeId:t})})}var ce=`0.0.1`;exports.DialogShellProvider=_,exports.DietaryPage=$,exports.DietaryPageWithParams=Q,exports.DietaryRepositoryImpl=h,exports.EmployeeOverview=te,exports.EmployeeRepositoryImpl=s,exports.SHARED_EMPLOYEE_VERSION=ce;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
._emptyState_1drnx_2{flex-direction:column;place-items:center;min-height:10rem;padding:3rem}._emptyState_1drnx_2 .cwi-icons{font-size:1.5em}._emptyState_1drnx_2 .cw-note-content{text-align:center}._transparent_1drnx_17{min-height:auto;padding:1.5rem;background-color:#0000!important}._subtitle_1drnx_23{opacity:.65;font-size:1rem}._emptyState_1drnx_2 footer{gap:var(--cw-spacing-small);margin-top:var(--cw-spacing);justify-content:center;display:flex}._container_1gsem_3{-webkit-user-select:text;user-select:text;flex-direction:column;height:calc(100vh - 4rem);max-height:100vh;display:flex}._topBar_1gsem_12{background:var(--cw-color-surface-container);border-bottom:1px solid var(--cw-color-outline-variant);flex-shrink:0;justify-content:space-between;align-items:center;height:3.5rem;padding:.75rem 1.25rem;display:flex}._topBar_1gsem_12 h2{color:var(--cw-color-on-surface);background:0 0;margin:0;padding:0;font-size:1.25rem;font-weight:600}._masterContent_1gsem_32{flex:1;min-height:0;display:grid;overflow:hidden}._masterContent_1gsem_32 aside ul li .cw-chip{padding:.25rem .5rem}._masterHeader_1gsem_43{flex-direction:column;gap:.5rem;display:flex}._detailPanel_1gsem_50{flex-direction:column;height:100%;display:flex;overflow:hidden}._detailPanel_1gsem_50>header{background:var(--cw-color-surface-container-high);border-bottom:1px solid var(--cw-color-outline-variant);align-items:center;gap:1rem;padding:1rem 2rem;display:flex}._detailPanel_1gsem_50>header figure{background:var(--cw-color-surface-container);width:56px;height:56px;color:var(--cw-color-on-surface-variant);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin:0;font-size:20px;font-weight:600;display:flex;overflow:hidden}._detailPanel_1gsem_50>header figure img{object-fit:cover;width:100%;height:100%}._detailHeaderInfo_1gsem_88{flex:1}._detailHeaderInfo_1gsem_88 h3{color:var(--cw-color-on-surface);background:0 0;margin:0;padding:0;font-size:1.25rem;font-weight:700}._detailHeaderInfo_1gsem_88 p{color:var(--cw-color-on-surface-variant);align-items:center;gap:.5rem;display:flex}._detailHeaderInfo_1gsem_88 p:not(:last-child){margin-bottom:.25rem}._tabBody_1gsem_112{flex:1;padding:1rem;overflow-y:auto;container:detail-tab/size}._tabBody_1gsem_112>div{--tabs-height:calc(100cqh - 5rem)}._tabBody_1gsem_112>div:has([aria-busy]){height:100%}._tabBody_1gsem_112>div:has([aria-busy])>div{height:100%}._listAvatar_1gsem_131{border-radius:50%;width:36px;height:36px;font-size:.75rem;font-weight:600}._lazyImage_tw8mr_1{background:var(--cw-color-surface-container);color:var(--cw-color-on-surface-variant);flex-shrink:0;justify-content:center;align-items:center;margin:0;display:flex;overflow:hidden}._lazyImage_tw8mr_1 img{object-fit:cover;width:100%;height:100%}._placeholder_tw8mr_18{opacity:.6}._editAvatarImg_14zk5_3{object-fit:cover;cursor:pointer;border-radius:50%;width:80px;height:80px}._editAvatarPlaceholder_14zk5_11{border-radius:50%;width:80px;height:80px;font-size:2rem;font-weight:600}._requestCard_io5wq_1{border:1px solid var(--cw-color-outline-variant);border-radius:var(--cw-rounded-medium);background:var(--cw-color-surface-container-lowest);margin-bottom:.75rem;padding:1rem}._requestHeader_io5wq_9{justify-content:space-between;align-items:flex-start;margin-bottom:.75rem;display:flex}._photoCompare_io5wq_16{gap:2rem;margin-bottom:1rem;display:flex}._photoBox_io5wq_22{text-align:center}._photoBox_io5wq_22 img{border-radius:var(--cw-rounded-medium);border:1px solid var(--cw-color-outline-variant);max-width:200px;max-height:200px}._placeholder_io5wq_33{background:var(--cw-color-surface-container);border-radius:var(--cw-rounded-medium);width:200px;height:200px;color:var(--cw-color-on-surface-variant);justify-content:center;align-items:center;display:flex}._rejectInput_io5wq_44{border-top:1px solid var(--cw-color-outline-variant);align-items:flex-end;gap:.5rem;margin-top:.5rem;padding-top:.5rem;display:flex}._historySection_io5wq_53{margin-top:.5rem}._historySummary_io5wq_57{cursor:pointer;border-radius:var(--cw-rounded-medium);background:var(--cw-color-surface-container-low);color:var(--cw-color-on-surface-variant);-webkit-user-select:none;user-select:none;margin-bottom:.5rem;padding:.5rem .75rem;font-weight:500}
|
|
2
|
+
/*$vite$:1*/
|