 2f3ee89d02
			
		
	
	2f3ee89d02
	
	
	
		
			
			Changes to JS API:
- popups have backdrop and is centered
- plugin.popup() takes a string custom element name
- plugin.popup() returns an API for closing and reopening the popup
- plugin.deprecated.popup() takes Element (similar to GWT Plugin JS API)
Recommended usage:
``` js
  Gerrit.install(function(plugin) {
    const popup = plugin.popup('my-plugin-popup-simple');;
    // ... work
    popup.close();
    // ... more work
    popup.open();
  });
```
``` html
<dom-module id="my-plugin-popup-simple">
  <template>
    <div>popup popup popup popup popup </div>
  </template>
  <script>
    Polymer({is: 'my-plugin-popup-simple'});
  </script>
</dom-module>
```
Change-Id: Icb3f83d35f3c60915f12b77bc8a7d548d50d5695
		
	
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <!--
 | |
| Copyright (C) 2017 The Android Open Source Project
 | |
| 
 | |
| Licensed under the Apache License, Version 2.0 (the "License");
 | |
| you may not use this file except in compliance with the License.
 | |
| You may obtain a copy of the License at
 | |
| 
 | |
| http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
| Unless required by applicable law or agreed to in writing, software
 | |
| distributed under the License is distributed on an "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| See the License for the specific language governing permissions and
 | |
| limitations under the License.
 | |
| -->
 | |
| 
 | |
| <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
 | |
| <title>gr-popup-interface</title>
 | |
| 
 | |
| <script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
 | |
| <script src="../../../bower_components/web-component-tester/browser.js"></script>
 | |
| <link rel="import" href="../../../test/common-test-setup.html"/>
 | |
| <link rel="import" href="gr-popup-interface.html"/>
 | |
| 
 | |
| <script>void(0);</script>
 | |
| 
 | |
| <test-fixture id="container">
 | |
|   <template>
 | |
|     <div></div>
 | |
|   </template>
 | |
| </test-fixture>
 | |
| 
 | |
| <dom-module id="gr-user-test-popup">
 | |
|   <template>
 | |
|     <div id="barfoo">some test module</div>
 | |
|   </template>
 | |
|   <script>Polymer({is: 'gr-user-test-popup'});</script>
 | |
| </dom-module>
 | |
| 
 | |
| <script>
 | |
|   suite('gr-popup-interface tests', () => {
 | |
|     let container;
 | |
|     let instance;
 | |
|     let plugin;
 | |
|     let sandbox;
 | |
| 
 | |
|     setup(() => {
 | |
|       sandbox = sinon.sandbox.create();
 | |
|       Gerrit.install(p => { plugin = p; }, '0.1',
 | |
|           'http://test.com/plugins/testplugin/static/test.js');
 | |
|       container = fixture('container');
 | |
|       sandbox.stub(plugin, 'hook').returns({
 | |
|         getLastAttached() {
 | |
|           return Promise.resolve(container);
 | |
|         },
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     teardown(() => {
 | |
|       sandbox.restore();
 | |
|     });
 | |
| 
 | |
|     suite('manual', () => {
 | |
|       setup(() => {
 | |
|         instance = new GrPopupInterface(plugin);
 | |
|       });
 | |
| 
 | |
|       test('open', () => {
 | |
|         return instance.open().then(api => {
 | |
|           assert.strictEqual(api, instance);
 | |
|           const manual = document.createElement('div');
 | |
|           manual.id = 'foobar';
 | |
|           manual.innerHTML = 'manual content';
 | |
|           api._getElement().appendChild(manual);
 | |
|           flushAsynchronousOperations();
 | |
|           assert.equal(
 | |
|               container.querySelector('#foobar').textContent, 'manual content');
 | |
|         });
 | |
|       });
 | |
| 
 | |
|       test('close', () => {
 | |
|         return instance.open().then(api => {
 | |
|           assert.isTrue(api._getElement().node.opened);
 | |
|           api.close();
 | |
|           assert.isFalse(api._getElement().node.opened);
 | |
|         });
 | |
|       });
 | |
|     });
 | |
| 
 | |
|     suite('components', () => {
 | |
|       setup(() => {
 | |
|         instance = new GrPopupInterface(plugin, 'gr-user-test-popup');
 | |
|       });
 | |
| 
 | |
|       test('open', () => {
 | |
|         return instance.open().then(api => {
 | |
|           assert.isNotNull(
 | |
|               Polymer.dom(container).querySelector('gr-user-test-popup'));
 | |
|         });
 | |
|       });
 | |
| 
 | |
|       test('close', () => {
 | |
|         return instance.open().then(api => {
 | |
|           assert.isTrue(api._getElement().node.opened);
 | |
|           api.close();
 | |
|           assert.isFalse(api._getElement().node.opened);
 | |
|         });
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| </script>
 |