Module: Hyperloop::Component::Mixin

Included in:
ReactiveRecord::WhileLoading
Defined in:
lib/reactive_record/active_record/reactive_record/while_loading.rb

Instance Method Summary collapse

Instance Method Details

#component_did_mount(*args) ⇒ Object



267
268
269
270
271
# File 'lib/reactive_record/active_record/reactive_record/while_loading.rb', line 267

def component_did_mount(*args)
  original_component_did_mount(*args)
  reactive_record_link_to_enclosing_while_loading_container
  reactive_record_link_set_while_loading_container_class
end

#component_did_update(*args) ⇒ Object



275
276
277
278
# File 'lib/reactive_record/active_record/reactive_record/while_loading.rb', line 275

def component_did_update(*args)
  original_component_did_update(*args)
  reactive_record_link_set_while_loading_container_class
end

#original_component_did_mountObject



265
# File 'lib/reactive_record/active_record/reactive_record/while_loading.rb', line 265

alias_method :original_component_did_mount, :component_did_mount

#original_component_did_updateObject



273
# File 'lib/reactive_record/active_record/reactive_record/while_loading.rb', line 273

alias_method :original_component_did_update, :component_did_update


297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
# File 'lib/reactive_record/active_record/reactive_record/while_loading.rb', line 297

def reactive_record_link_set_while_loading_container_class
  node = dom_node
  loading = (waiting_on_resources ? `true` : `false`)
  %x{
      if (typeof node === "undefined" || node === null) return;
      var while_loading_container_id = node.getAttribute('data-reactive_record_while_loading_container_id');
      if (#{!self.is_a?(ReactiveRecord::WhileLoading)} && while_loading_container_id !== null && while_loading_container_id !== "") {
        return;
      }
      var enc_while_loading_container_id = node.getAttribute('data-reactive_record_enclosing_while_loading_container_id');
      if (enc_while_loading_container_id !== null && enc_while_loading_container_id !== "") {
        var while_loading_container = document.body.querySelector('[data-reactive_record_while_loading_container_id="'+enc_while_loading_container_id+'"]');
        if (loading) {
          node.className = node.className.replace(/reactive_record_is_loaded/g, '').replace(/  /g, ' ');
          if (node.className.indexOf('reactive_record_is_loading') === -1) {
            node.className = node.className + ' reactive_record_is_loading';
          }
          if (while_loading_container !== null) {
            while_loading_container.className = while_loading_container.className.replace(/reactive_record_is_loaded/g, '').replace(/  /g, ' ');
            if (while_loading_container.className.indexOf('reactive_record_is_loading') === -1) {
              while_loading_container.className = while_loading_container.className + ' reactive_record_is_loading';
            }
          }
        } else if (node.className.indexOf('reactive_record_is_loaded') === -1) {
          if (while_loading_container_id === null || while_loading_container_id === "") {
            node.className = node.className.replace(/reactive_record_is_loading/g, '').replace(/  /g, ' ');
            if (node.className.indexOf('reactive_record_is_loaded') === -1) {
              node.className = node.className + ' reactive_record_is_loaded';
            }
          }
          if (while_loading_container.className.indexOf('reactive_record_is_loaded') === -1) {
            var loading_children = while_loading_container.querySelectorAll('[data-reactive_record_enclosing_while_loading_container_id="'+enc_while_loading_container_id+'"].reactive_record_is_loading');
            if (loading_children.length === 0) {
              while_loading_container.className = while_loading_container.className.replace(/reactive_record_is_loading/g, '').replace(/  /g, ' ');
              if (while_loading_container.className.indexOf('reactive_record_is_loaded') === -1) {
                while_loading_container.className = while_loading_container.className + ' reactive_record_is_loaded';
              }
            }
          }
        }
      }
    }
end


280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
# File 'lib/reactive_record/active_record/reactive_record/while_loading.rb', line 280

def reactive_record_link_to_enclosing_while_loading_container
  # Call after any component mounts - attaches the containers loading id to this component
  # Fyi, the while_loading container is responsible for setting its own link to itself
  node = dom_node
  %x{
      if (typeof node === "undefined" || node === null) return;
      var node_wl_attr = node.getAttribute('data-reactive_record_enclosing_while_loading_container_id');
      if (node_wl_attr === null || node_wl_attr === "") {
        var while_loading_container = node.closest('[data-reactive_record_while_loading_container_id]');
        if (while_loading_container !== null) {
          var container_id = while_loading_container.getAttribute('data-reactive_record_while_loading_container_id');
          node.setAttribute('data-reactive_record_enclosing_while_loading_container_id', container_id);
        }
      }
    }
end