@@ -158,4 +158,49 export function locateNode(node: Node): | |||||
158 | return next ? |
|
158 | return next ? | |
159 | [next, "before"] : |
|
159 | [next, "before"] : | |
160 | [node.parentNode, "last"]; |
|
160 | [node.parentNode, "last"]; | |
|
161 | } | |||
|
162 | ||||
|
163 | export const placeAt = (node: Node, refNodeOrId: string | Node, position: DojoNodePosition) => { | |||
|
164 | const collect = (collection: HTMLCollection) => { | |||
|
165 | const items = []; | |||
|
166 | for (let i = 0, n = collection.length; i < n; i++) { | |||
|
167 | items.push(collection[i]); | |||
|
168 | } | |||
|
169 | return items; | |||
|
170 | }; | |||
|
171 | ||||
|
172 | const startup = (node: Node) => { | |||
|
173 | if (node.parentNode) { | |||
|
174 | const parentWidget = registry.getEnclosingWidget(node.parentNode); | |||
|
175 | if (parentWidget && parentWidget._started) | |||
|
176 | return startupWidgets(node); | |||
|
177 | } | |||
|
178 | if (isInPage(node)) | |||
|
179 | startupWidgets(node); | |||
|
180 | }; | |||
|
181 | ||||
|
182 | const ref = typeof refNodeOrId == "string" ? document.getElementById(refNodeOrId) : refNodeOrId; | |||
|
183 | if (!ref) | |||
|
184 | return; | |||
|
185 | ||||
|
186 | const parent = ref.parentNode; | |||
|
187 | ||||
|
188 | if (typeof position == "number") { | |||
|
189 | ||||
|
190 | } else { | |||
|
191 | switch(position) { | |||
|
192 | case "before": | |||
|
193 | if (parent) | |||
|
194 | parent.insertBefore(node,ref); | |||
|
195 | case "after": | |||
|
196 | if (parent) | |||
|
197 | parent.insertBefore(node, ref.nextSibling); | |||
|
198 | } | |||
|
199 | } | |||
|
200 | ||||
|
201 | const startupPending = isDocumentFragmentNode(node) ? collect(node.children) : [node]; | |||
|
202 | ||||
|
203 | dom.place(node, refNodeOrId, position); | |||
|
204 | ||||
|
205 | startupPending.forEach(startup); | |||
161 | } No newline at end of file |
|
206 | } |
General Comments 0
You need to be logged in to leave comments.
Login now