12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- (ns frontend.components.window-controls
- (:require [electron.ipc :as ipc]
- [frontend.components.svg :as svg]
- [frontend.context.i18n :refer [t]]
- [frontend.state :as state]
- [frontend.ui :as ui]
- [rum.core :as rum]))
- (defn minimize
- []
- (ipc/ipc "window-minimize"))
- (defn toggle-maximized
- []
- (ipc/ipc "window-toggle-maximized"))
- (defn close
- []
- (ipc/ipc "window-close"))
- (defn toggle-fullscreen
- []
- (ipc/ipc "window-toggle-fullscreen"))
- (rum/defc container < rum/reactive
- []
- (let [maximized? (state/sub :electron/window-maximized?)
- fullscreen? (state/sub :electron/window-fullscreen?)]
- [:div.window-controls.flex
- (if fullscreen?
- [:button.button.icon.fullscreen-toggle
- {:title (t :window/exit-fullscreen)
- :on-click toggle-fullscreen}
- (ui/icon "arrows-minimize")]
- [:<>
- [:button.button.icon.minimize
- {:title (t :window/minimize)
- :on-click minimize}
- (svg/window-minimize)]
- [:button.button.icon.maximize-toggle
- {:title (if maximized? (t :window/restore) (t :window/maximize))
- :class (if maximized? "restore" "maximize")
- :on-click toggle-maximized}
- (if maximized?
- (svg/window-restore)
- (svg/window-maximize))]
- [:button.button.icon.close
- {:title (t :window/close)
- :on-click close}
- (svg/window-close)]])]))
|