commit 1a5cf194cd0d6eec85bbb8bf1c199df82aa79d4f Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Dec 2 10:30:51 2025 +0700 Squashed commit of the following: commit ec24dd8383e3a9c7cb7190b7ed9864ae7225805f Merge: 17cd42e7319cbcAuthor: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Tue Dec 2 10:18:33 2025 +0700 Merge branch 'dev' into feat/data-vaksin-192 commit 17cd42ef03d1cda15a8f85831e747723fbb2c0a5 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Dec 1 16:41:06 2025 +0700 Feat: UI Data Vaksin commit 1ced91229792420daca732256d535d100570d5bc Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Dec 1 14:10:27 2025 +0700 Squashed commit of the following: commit 8e6a6b3fd1a8ed6c19099b52f5d7fc38f6a1a39a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Fri Nov 28 14:32:47 2025 +0700 Feat: UI PRB commit 4f2da6cd1e077598fb7f3cdede8d771e9b39b2d7 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 27 19:41:18 2025 +0700 Squashed commit of the following: commit4a465f3992Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 24 13:40:22 2025 +0700 progress commit7811f051a5Merge:f060ed38aac6c4Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Mon Nov 24 10:25:15 2025 +0700 Merge branch 'dev' into feat/kfr-kemoterapi-174 commitf060ed33d2Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 24 10:21:20 2025 +0700 Feat: UI KFR commit399c3cbaeeAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 20 11:19:03 2025 +0700 Squashed commit of the following: commit 72ce2260c50597f782f07d29db3985607ecc2f34 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 15:19:36 2025 +0700 Feat: add doc preview in Therpay protocol List commit 7032cd2409a660d40899ffd421137e4158cfde4a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 12 15:34:30 2025 +0700 Fix: prepare API integration protokol terapi verification commit dbf6f78d00afc818baf2b34d128ee2153814cc88 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 12 14:09:28 2025 +0700 Feat: add basic CRUD therapy protocol commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 11 15:57:54 2025 +0700 Fix: Prepare protokol terapi API Integration commit 4674090566727cebd947e50e2c06c44e8c7afa7e Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:33:22 2025 +0700 Fix: hotfix style add protokol terapi commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:17:14 2025 +0700 Fix: Typo drpodown-action-p in protokol-terapi commit e21d30eacf1a08118e289d4bb64889e708d5023a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:14:33 2025 +0700 Fix: add diagnose & procedure dialog picker in add protokol terapi commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 10:21:24 2025 +0700 Fix: Add Schema therapy protocol rehab medik commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 09:30:55 2025 +0700 Fix: refactor Actions Btn ba-dr-su commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 3 17:08:20 2025 +0700 Feat: UI protokol terapi in Rehab medik commit 63010f69ff30532bb8ac91443112f31d4942b221 Author: Khafid Prayoga <khafidp@pm.me> Date: Tue Oct 21 09:54:13 2025 +0700 wip: list protokol terapi commit 44eedc298680a5255fee0ee8feee3e24beda93dd Author: Khafid Prayoga <khafidp@pm.me> Date: Mon Oct 20 12:54:01 2025 +0700 feat(therapy-protocol): init form entry feat(therapy-protocol): init page routes wip: init entry form wip: form entry protokol terapi todo: table procedure, and diagnose picker wip: schema form new entry todo: picker/modal yang relateds ke form entry commit b2a6cdee0b7beb775830c4dceb69ff12c01d3ca4 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 26 14:44:57 2025 +0700 Squashed commit of the following: commit39b778ab78Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 25 14:39:41 2025 +0700 Feat: UI Laporan Operasi commitf6ae61849dAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 25 14:09:25 2025 +0700 Squashed commit of the following: commit 8e3ea9e8d1d7e3b06bc6e53e0b97f62222276171 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 20 16:14:03 2025 +0700 Feat: UI control letter history commit f11f97f936447bdb225918abb43313f8db540d67 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 20 15:18:25 2025 +0700 Squashed commit of the following: commitdab6adc4a9Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 18 11:19:48 2025 +0700 Fix: add role authorization in Resume commitc28fc8f7aaMerge:7ed1cc8bcfb4c1Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Tue Nov 18 09:02:16 2025 +0700 Merge branch 'dev' into feat/resume-81 commit7ed1cc83bfAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 15:04:01 2025 +0700 Feat: add doc preview in Resume List commitbcfb4c1456Merge:1cbde57975c87dAuthor: Munawwirul Jamal <57973347+munaja@users.noreply.github.com> Date: Mon Nov 17 11:15:14 2025 +0700 Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135 Feat: Integration Rehab Medik - Surat Kontrol commit15ab43c1b1Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 10:38:21 2025 +0700 Feat: add verification capthca and form adjustment commit53bd8e7f6eAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Fri Nov 7 08:55:23 2025 +0700 Fix: refactor rehab medik - Resume UI commitfc308809b8Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Oct 29 14:57:19 2025 +0700 Feat: add UI Rehab Medik > Proses > Resume commit9b383a5437Merge:a4dc7d7831749aAuthor: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Wed Oct 29 13:32:47 2025 +0700 Merge pull request #139 from dikstub-rssa/dev Update branch feat/resume-81 commit 2b7bea70d66e8472220a2a2406889fc489cc1ebd Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 18 11:20:51 2025 +0700 Fix: Typo in Control Letter commit 808e91527cf95de2a47387bb792a3af2e16d907b Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 18 10:59:50 2025 +0700 Fix: add role authorization in Control Letter commit1dd8e8e7b3Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 25 09:23:57 2025 +0700 Squashed commit of the following: commit 72ce2260c50597f782f07d29db3985607ecc2f34 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 15:19:36 2025 +0700 Feat: add doc preview in Therpay protocol List commit 7032cd2409a660d40899ffd421137e4158cfde4a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 12 15:34:30 2025 +0700 Fix: prepare API integration protokol terapi verification commit dbf6f78d00afc818baf2b34d128ee2153814cc88 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 12 14:09:28 2025 +0700 Feat: add basic CRUD therapy protocol commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 11 15:57:54 2025 +0700 Fix: Prepare protokol terapi API Integration commit 4674090566727cebd947e50e2c06c44e8c7afa7e Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:33:22 2025 +0700 Fix: hotfix style add protokol terapi commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:17:14 2025 +0700 Fix: Typo drpodown-action-p in protokol-terapi commit e21d30eacf1a08118e289d4bb64889e708d5023a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:14:33 2025 +0700 Fix: add diagnose & procedure dialog picker in add protokol terapi commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 10:21:24 2025 +0700 Fix: Add Schema therapy protocol rehab medik commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 09:30:55 2025 +0700 Fix: refactor Actions Btn ba-dr-su commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 3 17:08:20 2025 +0700 Feat: UI protokol terapi in Rehab medik commit 63010f69ff30532bb8ac91443112f31d4942b221 Author: Khafid Prayoga <khafidp@pm.me> Date: Tue Oct 21 09:54:13 2025 +0700 wip: list protokol terapi commit 44eedc298680a5255fee0ee8feee3e24beda93dd Author: Khafid Prayoga <khafidp@pm.me> Date: Mon Oct 20 12:54:01 2025 +0700 feat(therapy-protocol): init form entry feat(therapy-protocol): init page routes wip: init entry form wip: form entry protokol terapi todo: table procedure, and diagnose picker wip: schema form new entry todo: picker/modal yang relateds ke form entry commit3e5c03148bAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 25 09:17:11 2025 +0700 progress commit a89c480474c025fb683383693e6a6808baa1d0d6 Merge: 8e6a6b37319cbcAuthor: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Tue Dec 2 10:27:07 2025 +0700 Merge branch 'dev' into feat/prb-189 commit 8e6a6b3fd1a8ed6c19099b52f5d7fc38f6a1a39a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Fri Nov 28 14:32:47 2025 +0700 Feat: UI PRB commit 4f2da6cd1e077598fb7f3cdede8d771e9b39b2d7 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 27 19:41:18 2025 +0700 Squashed commit of the following: commit4a465f3992Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 24 13:40:22 2025 +0700 progress commit7811f051a5Merge:f060ed38aac6c4Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Mon Nov 24 10:25:15 2025 +0700 Merge branch 'dev' into feat/kfr-kemoterapi-174 commitf060ed33d2Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 24 10:21:20 2025 +0700 Feat: UI KFR commit399c3cbaeeAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 20 11:19:03 2025 +0700 Squashed commit of the following: commit 72ce2260c50597f782f07d29db3985607ecc2f34 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 15:19:36 2025 +0700 Feat: add doc preview in Therpay protocol List commit 7032cd2409a660d40899ffd421137e4158cfde4a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 12 15:34:30 2025 +0700 Fix: prepare API integration protokol terapi verification commit dbf6f78d00afc818baf2b34d128ee2153814cc88 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 12 14:09:28 2025 +0700 Feat: add basic CRUD therapy protocol commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 11 15:57:54 2025 +0700 Fix: Prepare protokol terapi API Integration commit 4674090566727cebd947e50e2c06c44e8c7afa7e Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:33:22 2025 +0700 Fix: hotfix style add protokol terapi commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:17:14 2025 +0700 Fix: Typo drpodown-action-p in protokol-terapi commit e21d30eacf1a08118e289d4bb64889e708d5023a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:14:33 2025 +0700 Fix: add diagnose & procedure dialog picker in add protokol terapi commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 10:21:24 2025 +0700 Fix: Add Schema therapy protocol rehab medik commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 09:30:55 2025 +0700 Fix: refactor Actions Btn ba-dr-su commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 3 17:08:20 2025 +0700 Feat: UI protokol terapi in Rehab medik commit 63010f69ff30532bb8ac91443112f31d4942b221 Author: Khafid Prayoga <khafidp@pm.me> Date: Tue Oct 21 09:54:13 2025 +0700 wip: list protokol terapi commit 44eedc298680a5255fee0ee8feee3e24beda93dd Author: Khafid Prayoga <khafidp@pm.me> Date: Mon Oct 20 12:54:01 2025 +0700 feat(therapy-protocol): init form entry feat(therapy-protocol): init page routes wip: init entry form wip: form entry protokol terapi todo: table procedure, and diagnose picker wip: schema form new entry todo: picker/modal yang relateds ke form entry commit b2a6cdee0b7beb775830c4dceb69ff12c01d3ca4 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 26 14:44:57 2025 +0700 Squashed commit of the following: commit39b778ab78Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 25 14:39:41 2025 +0700 Feat: UI Laporan Operasi commitf6ae61849dAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 25 14:09:25 2025 +0700 Squashed commit of the following: commit 8e3ea9e8d1d7e3b06bc6e53e0b97f62222276171 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 20 16:14:03 2025 +0700 Feat: UI control letter history commit f11f97f936447bdb225918abb43313f8db540d67 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Thu Nov 20 15:18:25 2025 +0700 Squashed commit of the following: commitdab6adc4a9Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 18 11:19:48 2025 +0700 Fix: add role authorization in Resume commitc28fc8f7aaMerge:7ed1cc8bcfb4c1Author: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Tue Nov 18 09:02:16 2025 +0700 Merge branch 'dev' into feat/resume-81 commit7ed1cc83bfAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 15:04:01 2025 +0700 Feat: add doc preview in Resume List commitbcfb4c1456Merge:1cbde57975c87dAuthor: Munawwirul Jamal <57973347+munaja@users.noreply.github.com> Date: Mon Nov 17 11:15:14 2025 +0700 Merge pull request #147 from dikstub-rssa/feat/surat-kontrol-135 Feat: Integration Rehab Medik - Surat Kontrol commit15ab43c1b1Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 10:38:21 2025 +0700 Feat: add verification capthca and form adjustment commit53bd8e7f6eAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Fri Nov 7 08:55:23 2025 +0700 Fix: refactor rehab medik - Resume UI commitfc308809b8Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Oct 29 14:57:19 2025 +0700 Feat: add UI Rehab Medik > Proses > Resume commit9b383a5437Merge:a4dc7d7831749aAuthor: Muhammad Hasyim Chaidir Ali <68959522+Hasyim-Kai@users.noreply.github.com> Date: Wed Oct 29 13:32:47 2025 +0700 Merge pull request #139 from dikstub-rssa/dev Update branch feat/resume-81 commit 2b7bea70d66e8472220a2a2406889fc489cc1ebd Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 18 11:20:51 2025 +0700 Fix: Typo in Control Letter commit 808e91527cf95de2a47387bb792a3af2e16d907b Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 18 10:59:50 2025 +0700 Fix: add role authorization in Control Letter commit1dd8e8e7b3Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 25 09:23:57 2025 +0700 Squashed commit of the following: commit 72ce2260c50597f782f07d29db3985607ecc2f34 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 17 15:19:36 2025 +0700 Feat: add doc preview in Therpay protocol List commit 7032cd2409a660d40899ffd421137e4158cfde4a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 12 15:34:30 2025 +0700 Fix: prepare API integration protokol terapi verification commit dbf6f78d00afc818baf2b34d128ee2153814cc88 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Wed Nov 12 14:09:28 2025 +0700 Feat: add basic CRUD therapy protocol commit 46a44e90fe4d4097b5460d2d4e5689b2a5389467 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 11 15:57:54 2025 +0700 Fix: Prepare protokol terapi API Integration commit 4674090566727cebd947e50e2c06c44e8c7afa7e Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:33:22 2025 +0700 Fix: hotfix style add protokol terapi commit 919c91abd8ef8b4cd193012eed7f5e8cf635cda2 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:17:14 2025 +0700 Fix: Typo drpodown-action-p in protokol-terapi commit e21d30eacf1a08118e289d4bb64889e708d5023a Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 10 15:14:33 2025 +0700 Fix: add diagnose & procedure dialog picker in add protokol terapi commit 9a3d73b72b0dceea778d83e7630c5ead110a6a4c Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 10:21:24 2025 +0700 Fix: Add Schema therapy protocol rehab medik commit 4d8d2d633bbbd78038b1cc607558c1ceb31c5986 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 4 09:30:55 2025 +0700 Fix: refactor Actions Btn ba-dr-su commit 5f290a6e4bd1559c0e5864a508c5ab650cfae6e8 Author: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Mon Nov 3 17:08:20 2025 +0700 Feat: UI protokol terapi in Rehab medik commit 63010f69ff30532bb8ac91443112f31d4942b221 Author: Khafid Prayoga <khafidp@pm.me> Date: Tue Oct 21 09:54:13 2025 +0700 wip: list protokol terapi commit 44eedc298680a5255fee0ee8feee3e24beda93dd Author: Khafid Prayoga <khafidp@pm.me> Date: Mon Oct 20 12:54:01 2025 +0700 feat(therapy-protocol): init form entry feat(therapy-protocol): init page routes wip: init entry form wip: form entry protokol terapi todo: table procedure, and diagnose picker wip: schema form new entry todo: picker/modal yang relateds ke form entry commit3e5c03148bAuthor: hasyim_kai <muhammad.hasyim.c.a@gmail.com> Date: Tue Nov 25 09:17:11 2025 +0700 progress
169 lines
4.7 KiB
TypeScript
169 lines
4.7 KiB
TypeScript
import type { ClassValue } from 'clsx'
|
|
import { clsx } from 'clsx'
|
|
import { format } from 'date-fns'
|
|
import { twMerge } from 'tailwind-merge'
|
|
import { toast } from '~/components/pub/ui/toast'
|
|
|
|
export interface SelectOptionType<_T = string> {
|
|
value: string
|
|
label: string
|
|
code?: string
|
|
}
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs))
|
|
}
|
|
|
|
export function mapToComboboxOptList(items: Record<string, string>): SelectOptionType<string>[] {
|
|
if (!items) {
|
|
return []
|
|
}
|
|
const result: SelectOptionType<string>[] = []
|
|
Object.keys(items).forEach((item) => {
|
|
result.push({
|
|
label: items[item] as string,
|
|
value: item,
|
|
code: item,
|
|
})
|
|
})
|
|
return result
|
|
}
|
|
|
|
/**
|
|
* Mengkonversi string menjadi title case (huruf pertama setiap kata kapital)
|
|
* @param str - String yang akan dikonversi
|
|
* @returns String dalam format title case
|
|
*/
|
|
export function toTitleCase(str: string): string {
|
|
return str.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase())
|
|
}
|
|
|
|
|
|
/**
|
|
* Menghitung umur berdasarkan tanggal lahir
|
|
* @param birthDate - Tanggal lahir dalam format Date atau string
|
|
* @returns String umur dalam format "X tahun Y bulan" atau "X bulan" untuk bayi
|
|
*/
|
|
export function calculateAge(birthDate: Date | string | null | undefined): string {
|
|
if (!birthDate) {
|
|
return '-'
|
|
}
|
|
|
|
let birth: Date
|
|
|
|
// Konversi ke Date object
|
|
if (typeof birthDate === 'string') {
|
|
birth = new Date(birthDate)
|
|
} else {
|
|
birth = birthDate
|
|
}
|
|
|
|
// Validasi tanggal
|
|
if (isNaN(birth.getTime())) {
|
|
return '-'
|
|
}
|
|
|
|
const today = new Date()
|
|
const birthYear = birth.getFullYear()
|
|
const birthMonth = birth.getMonth()
|
|
const birthDay = birth.getDate()
|
|
|
|
const currentYear = today.getFullYear()
|
|
const currentMonth = today.getMonth()
|
|
const currentDay = today.getDate()
|
|
|
|
// Hitung tahun
|
|
let years = currentYear - birthYear
|
|
let months = currentMonth - birthMonth
|
|
|
|
// Adjust jika bulan atau hari belum lewat
|
|
if (months < 0 || (months === 0 && currentDay < birthDay)) {
|
|
years--
|
|
months += 12
|
|
}
|
|
|
|
if (currentDay < birthDay) {
|
|
months--
|
|
}
|
|
|
|
// Pastikan months tidak negatif
|
|
if (months < 0) {
|
|
months += 12
|
|
}
|
|
|
|
// Format output
|
|
if (years === 0) {
|
|
if (months === 0) {
|
|
// Hitung hari untuk bayi baru lahir
|
|
const diffTime = today.getTime() - birth.getTime()
|
|
const days = Math.floor(diffTime / (1000 * 60 * 60 * 24))
|
|
return days <= 30 ? `${days} hari` : '1 bulan'
|
|
}
|
|
return `${months} bulan`
|
|
} else if (months === 0) {
|
|
return `${years} tahun`
|
|
} else {
|
|
return `${years} tahun ${months} bulan`
|
|
}
|
|
}
|
|
|
|
export function formatDateToDatetimeLocal(inputDate: Date) {
|
|
const formattedString = format(inputDate, "yyyy-MM-dd'T'HH:mm")
|
|
return formattedString
|
|
}
|
|
|
|
|
|
/**
|
|
* Converts a plain JavaScript object (including File objects) into a FormData instance.
|
|
* @param {object} data - The object to convert (e.g., form values).
|
|
* @returns {FormData} The new FormData object suitable for API submission.
|
|
*/
|
|
export function toFormData(data: Record<string, any>): FormData {
|
|
const formData = new FormData();
|
|
|
|
for (const key in data) {
|
|
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
const value = data[key];
|
|
|
|
// Handle File objects, Blobs, or standard JSON values
|
|
if (value !== null && value !== undefined) {
|
|
// Check if the value is a File/Blob instance
|
|
if (value instanceof File || value instanceof Blob) {
|
|
// Append the file directly
|
|
formData.append(key, value);
|
|
} else if (typeof value === 'object') {
|
|
// Handle nested objects/arrays by stringifying them (optional, depends on API)
|
|
// Note: Most APIs expect nested data to be handled separately or passed as JSON string
|
|
// For simplicity, we stringify non-File objects.
|
|
formData.append(key, JSON.stringify(value));
|
|
} else {
|
|
// Append standard string, number, or boolean values
|
|
formData.append(key, value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return formData;
|
|
}
|
|
|
|
export function printFormData(formData: FormData) {
|
|
console.log("--- FormData Contents ---");
|
|
// Use the entries() iterator to loop through key/value pairs
|
|
for (const [key, value] of formData.entries()) {
|
|
if (value instanceof File) {
|
|
console.log(`Key: ${key}, Value: [File: ${value.name}, Type: ${value.type}, Size: ${value.size} bytes]`);
|
|
} else {
|
|
console.log(`Key: ${key}, Value: "${value}"`);
|
|
}
|
|
}
|
|
console.log("-------------------------");
|
|
}
|
|
|
|
export function unauthorizedToast() {
|
|
toast({
|
|
title: 'Unauthorized',
|
|
description: 'You are not authorized to perform this action.',
|
|
variant: 'destructive',
|
|
})
|
|
} |