diff --git a/package.json b/package.json index 08e5620..3e2fd9c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.15.4", "@lingdocs/lingdocs-main": "^0.2.0", - "@lingdocs/pashto-inflector": "^1.6.3", + "@lingdocs/pashto-inflector": "^1.6.7", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", diff --git a/src/components/VerbPicker.tsx b/src/components/VerbPicker.tsx index 872a616..b19dfef 100644 --- a/src/components/VerbPicker.tsx +++ b/src/components/VerbPicker.tsx @@ -54,7 +54,7 @@ const perfectTenseOptions: { label: string | JSX.Element, value: PerfectTense }[ label: "Past Perfect", value: "past perfect", }, { - label: "Would Be Perfect", + label: `"Would Be" Perfect`, value: "wouldBe perfect", }, { label: "Past Subjunctive Perfect", @@ -86,7 +86,7 @@ function VerbPicker({ onChange, verb, verbs }: { verbs: VerbEntry[], verb: VerbS } onChange(makeVerbSelection(v, verb)); } - function onTenseSelect({ value }: { label: string, value: VerbTense | PerfectTense }) { + function onTenseSelect({ value }: { label: string | JSX.Element, value: VerbTense | PerfectTense }) { if (verb) { if (isPerfectTense(value)) { onChange({ @@ -103,6 +103,22 @@ function VerbPicker({ onChange, verb, verbs }: { verbs: VerbEntry[], verb: VerbS } } } + function moveTense(dir: "forward" | "back") { + if (!verb) return; + return () => { + const tenses = verb.tenseCategory === "perfect" ? perfectTenseOptions : tenseOptions; + const currIndex = tenses.findIndex(tn => tn.value === verb.tense) + if (currIndex === -1) { + console.error("error moving tense", dir); + return; + } + const newIndex = dir === "forward" + ? ((currIndex + 1) % tenses.length) + : (currIndex === 0 ? (tenses.length - 1) : (currIndex - 1)) + const newTense = tenses[newIndex]; + onTenseSelect(newTense); + }; + } function onPosNegSelect(value: string) { if (verb) { onChange({ @@ -128,6 +144,11 @@ function VerbPicker({ onChange, verb, verbs }: { verbs: VerbEntry[], verb: VerbS } } } + function onVoiceSelect(value: "active" | "passive") { + if (verb && verb.changeVoice) { + onChange(verb.changeVoice(value)); + } + } function notInstransitive(t: "transitive" | "intransitive" | "grammatically transitive"): "transitive" | "grammatically transitive" { return t === "intransitive" ? "transitive" : t; } @@ -155,6 +176,20 @@ function VerbPicker({ onChange, verb, verbs }: { verbs: VerbEntry[], verb: VerbS placeholder={verb ? options.find(o => o.value === (verb.verb.entry).ts.toString())?.label : "Select Verb..."} {...zIndexProps} /> + {verb && verb.changeTransitivity &&
+ +
} {verb &&
} + {verb && verb.changeTransitivity &&
+ +
}
Tense: