diff --git a/app/javascript/application.js b/app/javascript/application.js index 20ab4186f..a29842d45 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -10,6 +10,7 @@ import ToggleCookies from './elements/toggle_cookies' import DisableHidden from './elements/disable_hidden' import TurboModal from './elements/turbo_modal' import NativeAction from './elements/native_action' +import NativeSearch from './elements/native_search' import FileDropzone from './elements/file_dropzone' import MenuActive from './elements/menu_active' import ClipboardCopy from './elements/clipboard_copy' @@ -108,6 +109,7 @@ safeRegisterElement('toggle-visible', ToggleVisible) safeRegisterElement('disable-hidden', DisableHidden) safeRegisterElement('turbo-modal', TurboModal) safeRegisterElement('native-action', NativeAction) +safeRegisterElement('native-search', NativeSearch) safeRegisterElement('file-dropzone', FileDropzone) safeRegisterElement('menu-active', MenuActive) safeRegisterElement('clipboard-copy', ClipboardCopy) diff --git a/app/javascript/elements/native_search.js b/app/javascript/elements/native_search.js new file mode 100644 index 000000000..ecff58ebd --- /dev/null +++ b/app/javascript/elements/native_search.js @@ -0,0 +1,27 @@ +import { target, targetable } from '@github/catalyst/lib/targetable' + +export default targetable(class extends HTMLElement { + static [target.static] = ['form'] + + connectedCallback () { + const bridge = window.webkit?.messageHandlers?.native + + if (!bridge || !this.form) return + + const url = new URL(this.form.action) + + new FormData(this.form).forEach((value, key) => { + if (key !== 'q' && value) url.searchParams.set(key, value) + }) + + this.declared = true + + bridge.postMessage({ type: 'search', op: 'add', url: url.pathname + url.search }) + } + + disconnectedCallback () { + if (this.declared) { + window.webkit?.messageHandlers?.native?.postMessage({ type: 'search', op: 'remove' }) + } + } +}) diff --git a/app/views/shared/_search_input.html.erb b/app/views/shared/_search_input.html.erb index 839cad9ee..501d6eea6 100644 --- a/app/views/shared/_search_input.html.erb +++ b/app/views/shared/_search_input.html.erb @@ -1,28 +1,30 @@ -
+ diff --git a/app/views/submissions_archived/index.html.erb b/app/views/submissions_archived/index.html.erb index 4b478f56a..15ed65dde 100644 --- a/app/views/submissions_archived/index.html.erb +++ b/app/views/submissions_archived/index.html.erb @@ -8,19 +8,19 @@ <% end %> <% end %> -