mirror of
https://github.com/linsa-io/linsa.git
synced 2026-04-25 01:38:35 +02:00
fix: Link, Pages, Topic, Hook and Others (#178)
* chore: remove useKeyDownListener * chore: remove react-use, update jazz version and add query string * chore: update jazz version * chore: use simple mac or win utils code * feat(util): add isTextInput * feat(hooks): all needed hooks * fix: link bunch stuff * fix: page bunch stuff * chore: bunch update for custom component * chore: use throttle from internal hook * chore: topic bunch stuff * chore: update layout * fix: truncate content header of topic detail
This commit is contained in:
@@ -34,22 +34,16 @@ export function shuffleArray<T>(array: T[]): T[] {
|
||||
return shuffled
|
||||
}
|
||||
|
||||
export const isEditableElement = (element: HTMLElement): boolean => {
|
||||
if (element.isContentEditable) {
|
||||
return true
|
||||
}
|
||||
const inputs = ["input", "select", "button", "textarea"] // detect if node is a text input element
|
||||
|
||||
const tagName = element.tagName.toLowerCase()
|
||||
const editableTags = ["input", "textarea", "select", "option"]
|
||||
|
||||
if (editableTags.includes(tagName)) {
|
||||
return true
|
||||
}
|
||||
|
||||
const role = element.getAttribute("role")
|
||||
const editableRoles = ["textbox", "combobox", "listbox"]
|
||||
|
||||
return role ? editableRoles.includes(role) : false
|
||||
export function isTextInput(element: Element): boolean {
|
||||
return !!(
|
||||
element &&
|
||||
element.tagName &&
|
||||
(inputs.indexOf(element.tagName.toLowerCase()) !== -1 ||
|
||||
element.attributes.getNamedItem("role")?.value === "textbox" ||
|
||||
element.attributes.getNamedItem("contenteditable")?.value === "true")
|
||||
)
|
||||
}
|
||||
|
||||
export * from "./urls"
|
||||
|
||||
Reference in New Issue
Block a user