# File lib/extjs/component.rb, line 27
  def add(*config)

    options = config.extract_options!
    if !options.keys.empty?
      if url = options.delete(:partial)
        # rendering a partial, cache the config until partial calls #add method.  @see else.
        @partial_config = options
        if (@controller.respond_to?(:partial))
          # Merb
          return @controller.partial(url, :with => self, :as => :container)
        else
          # Rails
          return @controller.render(:partial => url, :locals => {:container => self})
        end
      else
        options.merge!(@partial_config) unless @partial_config.nil?
        options[:controller] = @controller unless @controller.nil?
        cmp = ExtJS::Component.new(options)
        @partial_config = nil
        @config["items"] << cmp
        return cmp
      end
    elsif !config.empty? && config.first.kind_of?(ExtJS::Component)
      cmp = config.first
      cmp.apply(@partial_config) unless @partial_config.nil?
      @partial_config = nil
      @config["items"] << cmp.config
      return cmp
    end
  end