|
79 | 79 | (.preventDefault e)
|
80 | 80 | (rf/dispatch [::element.e/set-parent id parent-id])))
|
81 | 81 |
|
82 |
| -(defn padding |
83 |
| - [depth has-children] |
84 |
| - (let [collapse-button-width 22] |
85 |
| - (- (* depth collapse-button-width) |
86 |
| - (if has-children collapse-button-width 0)))) |
87 |
| - |
88 | 82 | (def last-focused-id (ra/atom nil))
|
89 | 83 |
|
90 | 84 | (defn set-last-focused-id!
|
|
116 | 110 |
|
117 | 111 | nil))
|
118 | 112 |
|
119 |
| -(defn toggle-collapsed-button |
| 113 | +(defn collapse-button |
120 | 114 | [id collapsed]
|
121 | 115 | [ui/icon-button
|
122 | 116 | (if collapsed "chevron-right" "chevron-down")
|
|
128 | 122 |
|
129 | 123 | (defn list-item-button
|
130 | 124 | [el {:keys [depth collapsed hovered]}]
|
131 |
| - (let [{:keys [id selected children locked visible]} el] |
| 125 | + (let [{:keys [id selected children locked visible]} el |
| 126 | + collapse-button-width 22 |
| 127 | + padding (* collapse-button-width (cond-> depth (seq children) dec))] |
132 | 128 | [:div.button.list-item-button
|
133 | 129 | {:class [(when selected "selected")
|
134 | 130 | (when hovered "hovered")]
|
|
155 | 151 | (rf/dispatch-sync [::e/select-range @last-focused-id id])
|
156 | 152 | (do (rf/dispatch [::element.e/select id (.-ctrlKey e)])
|
157 | 153 | (reset! last-focused-id id))))
|
158 |
| - :style {:padding-left (padding depth (seq children))}} |
| 154 | + :style {:padding-left padding}} |
159 | 155 | [:div.flex.items-center.content-between.w-full
|
160 | 156 | (when (seq children)
|
161 |
| - [toggle-collapsed-button id collapsed]) |
| 157 | + [collapse-button id collapsed]) |
162 | 158 | [:div.flex-1.overflow-hidden.flex.items-center
|
163 | 159 | {:class "gap-1.5"}
|
164 | 160 | (when-let [icon (:icon (element/properties el))]
|
|
0 commit comments