mirror of
https://github.com/logseq/logseq.git
synced 2026-04-29 00:24:51 +00:00
Enhance/more ns plugin api (#4828)
* improve(plugin): WIP add settings schema * improve(plugin): add identity for settings modal * improve(plugin): WIP add settings input * fix(ui): scrollbar overlay of modal panel content * improve(plugin): WIP add more render types of setting item * improve(plugin): WIP polish settings items * improve(plugin): WIP settings list of plugins * improve(plugin): more settings types & polish releated ui * fix(plugin): sometimes disable plugin not work * improve(plugin): polish ui of plugin settings * fix(dev): warning of lint * improve(plugin): add api of settings changed * chore: build libs core * fix(ui): width of settings panel wrap * improve(plugin): separate layouts data from settings aio file * imporve(plugin): container size of single plugin settings * fix: add missing state * improve(plugin): add Git ns * improve(plugin): git related api * improve(api): type of git result * chore: build libs core * fix(dev): kondo lint * fix(plugin): use cdn sdk when js entry * chore: build libs core * fix(plugin): env condition * improve(plugin): add UI ns * fix(api): arguments of datascript query * enhance(api): manageable message instance of UI tools * enhance(api): WIP add experiments api * enhance(api): WIP add resources state of plugin * improve(plugin): add status of loading script resources * improve(plugin): more opts for script loader * improve(plugin): WIP add fenced code renderer hook * improve(plugin): fenced code renderer hook * fix(plugin): resource root path of plugin fs location * imporve(plugin): support local files for loading scripts * improve(plugin): types of expirements api * fix: typo of class * enhance(api): add namespace related apis * enhance(api): add linked refrences related apis * enhance(plugin): add sample links to related api comments * improve(plugin): add db changed hook & optimize strategy of caller for hooks * improve(plugin): compatible commands registration for old sdk * improve(plugin): collect user sdk version for plugin local * improve(plugin): add internal callable apis for user sdk * chore(plugin): missing files & bump libs version * improve(plugin): compatiable for old sdk about hook messaging optimization * improve(plugin): db hook optimization for old sdk * enhance(ux): auto focus searchbar when open plugins list * improve(plugin): api of a hook from specific block changed event * improve(plugin): api of db block change hook * improve(plugin): add show bracket user config of api * improve(plugin): api of db block change hook * fix(api): toggle collapsed of block * improve(api): try to init grpah with git before exec git commands * improve(plugin): attributes of sandbox container * improve(dev): support register command with keybinding * improve(plugin): add api of register shortcut command * fix(plugin): reubild slash commands when new command registration * fix(dev): lint * improve(dev): lint script of libs codebase * chore(dev): remove useless codes * improve(plugin):sanitize path string of plugin repo value * fix(plugin): rebuild commands list when unregister a plugin * fix(ui): overflow width of query result table * chore: rebuild libs core * improve(plugin): add assets related apis * chore: rebuild libs core * improve(plugin): support replace state of into block in page api * improve(plugin): prepend/append child block in page * improve(plugin): polished exceptions message of plugin update/install * fix(plugin): update settings within gui * improve(ux): debounce change event of input for plugin settings gui * chore: rebuild libs core * enhance(plugin): catch exception of hook plugin
This commit is contained in:
@@ -3,7 +3,8 @@
|
||||
[frontend.util :as util]
|
||||
[frontend.ui :as ui]
|
||||
[frontend.handler.plugin :as plugin-handler]
|
||||
[cljs-bean.core :as bean]))
|
||||
[cljs-bean.core :as bean]
|
||||
[goog.functions :refer [debounce]]))
|
||||
|
||||
(rum/defc edit-settings-file
|
||||
[pid {:keys [class]}]
|
||||
@@ -24,10 +25,10 @@
|
||||
(let [input-as (util/safe-lower-case (or inputAs (name type)))
|
||||
input-as (if (= input-as "string") :text (keyword input-as))]
|
||||
[:input
|
||||
{:class (util/classnames [{:form-input (not (contains? #{:color :range} input-as))}])
|
||||
:type (name input-as)
|
||||
:value (or val default)
|
||||
:on-change #(update-setting! key (util/evalue %))}])]])
|
||||
{:class (util/classnames [{:form-input (not (contains? #{:color :range} input-as))}])
|
||||
:type (name input-as)
|
||||
:defaultValue (or val default)
|
||||
:on-change (debounce #(update-setting! key (util/evalue %)) 1000)}])]])
|
||||
|
||||
(rum/defc render-item-toggle
|
||||
[val {:keys [key title description default]} update-setting!]
|
||||
@@ -77,12 +78,11 @@
|
||||
[schema ^js pl]
|
||||
(let [^js _settings (.-settings pl)
|
||||
pid (.-id pl)
|
||||
[settings, set-settings] (rum/use-state nil)
|
||||
[settings, set-settings] (rum/use-state (bean/->clj (.toJSON _settings)))
|
||||
update-setting! (fn [k v] (.set _settings (name k) (bean/->js v)))]
|
||||
|
||||
(rum/use-effect!
|
||||
(fn []
|
||||
(set-settings (bean/->clj (.toJSON _settings)))
|
||||
(let [on-change (fn [^js s]
|
||||
(when-let [s (bean/->clj s)]
|
||||
(set-settings s)))]
|
||||
|
||||
Reference in New Issue
Block a user