Show google picker inside/over modal

前端 未结 4 1377
慢半拍i
慢半拍i 2021-02-06 05:00

Is there a way to show the google drive picker to be shown inside a custom modal or a div? I have a modal where there will be multiple providers user can choose e.g. google, dro

相关标签:
4条回答
  • 2021-02-06 05:11

    I simply added the following CSS:

    .picker-dialog-bg {
        z-index: 20000 !important;
    }
    
    .picker-dialog {
        z-index: 20001 !important;
    }
    
    0 讨论(0)
  • 2021-02-06 05:20

    Actually you can manipulate the picker object after setting it to visible. If picker is the GooglePicker object, the A is the div for the dialog modal. You can set its z-index using JavaScript.

    var picker = new google.picker.PickerBuilder().
      addView(self.viewId).
      setOAuthToken(self.oauthToken).
      setDeveloperKey(self.developerKey).
      setCallback(self.pickerCallback).
      build();
    
      picker.setVisible(true);
    
      picker.A.style.zIndex = 2000;
    
    0 讨论(0)
  • 2021-02-06 05:36

    Ok found a solution, as mentioned in the picker reference guide there is a function PickerBuilder.toUri() which will return the URI generated by the builder. So we can use that URI and used it in our own iframe:

    function createPicker() {
        var picker = new google.picker.PickerBuilder()
            .addView(google.picker.ViewId.DOCUMENTS)
            .addView(google.picker.ViewId.PRESENTATIONS)
            .addView(google.picker.ViewId.SPREADSHEETS)
            .addView(google.picker.ViewId.PDFS)
    
            .enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
            .setAppId(appID)
            .setOAuthToken(ACCESS_TOKEN)
            .setDeveloperKey(developerKey)
            .setCallback(pickerCallback)
            .toUri();
    
    
            var iframe = $('<iframe frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>');
            iframe.attr({
                width: 500,
                height: 500,
                src: picker
            });
            $("<div></div>").append(iframe).appendTo("#my_container");
        }
    
    0 讨论(0)
  • 2021-02-06 05:38

    I solved this problem by setting the google picker container on front using following code :

        var picker = new google.picker.PickerBuilder()
            .enableFeature(google.picker.Feature.NAV_HIDDEN)
            .enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
            .setAppId(appId)
            .setOAuthToken(oauthToken)
            .addView(view)
            .addView(new google.picker.DocsUploadView())
            .setDeveloperKey(developerKey)
            .build();
        if (callback)
            picker.setCallback(callback);
    
        picker.setVisible(true);
    
        //I put this code to make the container in front.
    
        var elements= document.getElementsByClassName('picker-dialog');
        for(var i=0;i<elements.length;i++)
        {
            elements[i].style.zIndex = "2000";
        }
    
    0 讨论(0)
提交回复
热议问题