import { $t } from '@/locales'; /** * Transform record to option * * @example * ```ts * const record = { * key1: 'label1', * key2: 'label2' * }; * const options = transformRecordToOption(record); * // [ * // { value: 'key1', label: 'label1' }, * // { value: 'key2', label: 'label2' } * // ] * ```; * * @param record */ export function transformRecordToOption>(record: T) { return Object.entries(record).map(([value, label]) => ({ label, value })) as CommonType.Option[]; } /** * Translate options * * @param options */ export function translateOptions(options: CommonType.Option[]) { return options.map(option => ({ ...option, label: $t(option.label as App.I18n.I18nKey) })); } /** * Toggle html class * * @param className */ export function toggleHtmlClass(className: string) { function add() { document.documentElement.classList.add(className); } function remove() { document.documentElement.classList.remove(className); } return { add, remove }; } export function getKeys(obj: Record, parentKeys: string[] = []): string[] { let keys: string[] = []; for (const key in obj) { if (key) { const newKeys = [...parentKeys, key]; if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) { keys = keys.concat(getKeys(obj[key], newKeys)); } else { keys = newKeys; } } } return keys; }