Browse Source

Merge branch 'master-ie11-custom-event' into master-ie11

Keyur Shah 5 năm trước cách đây
mục cha
commit
c80fb923cb

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/alpine-ie11.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/alpine-ie11.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/alpine.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/alpine.js.map


+ 12 - 1
examples/index_ie11.html

@@ -19,7 +19,7 @@
     </style>
 
     <script
-        src="https://polyfill.io/v3/polyfill.min.js?features=MutationObserver%2CArray.from%2CArray.prototype.forEach%2CMap%2CSet%2CArray.prototype.includes%2CString.prototype.includes%2CPromise%2CNodeList.prototype.forEach%2CObject.values%2CReflect%2CReflect.set%2CString.prototype.startsWith%2CArray.prototype.find%2CArray.prototype.findIndex%2CElement.prototype.closest%2CElement.prototype.remove">
+        src="https://polyfill.io/v3/polyfill.min.js?features=MutationObserver%2CArray.from%2CArray.prototype.forEach%2CMap%2CSet%2CArray.prototype.includes%2CString.prototype.includes%2CPromise%2CNodeList.prototype.forEach%2CObject.values%2CReflect%2CReflect.set%2CString.prototype.startsWith%2CArray.prototype.find%2CArray.prototype.findIndex%2CElement.prototype.closest%2CElement.prototype.remove%2CCustomEvent">
     </script>
 
 
@@ -342,6 +342,17 @@
                     </script>
                 </td>
             </tr>
+            
+            <tr>
+                <td>Dispatch</td>
+                <td>
+                    <div x-data="{ foo: 'bar' }" x-on:custom-event="foo = $event.detail.newValue">
+                        <span x-text="foo"></span>
+
+                        <button x-on:click="$dispatch('custom-event', {newValue: 'baz'})">Turn 'bar' to 'baz'</button>
+                    </div>
+                </td>
+            </tr>
 
             <tr>
                 <td>Cloak</td>

+ 118 - 0
examples/index_ie11_event.html

@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+
+<head>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge;" />
+
+    <style>
+        .hidden {
+            display: none;
+        }
+
+        [x-cloak] {
+            display: none;
+        }
+
+        .opacity-0 {
+            opacity: 0;
+        }
+
+        .opacity-100 {
+            opacity: 1;
+        }
+
+        .transition-slow {
+            transition-duration: 300ms;
+        }
+
+        .transition-medium {
+            transition-duration: 200ms;
+        }
+
+        .transition-faster {
+            transition-duration: 100ms;
+        }
+
+        .scale-90 {
+            transform: scale(0.9);
+        }
+
+        .scale-100 {
+            transform: scale(1);
+        }
+
+        .ease-in {
+            transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
+        }
+
+        .ease-out {
+            transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
+        }
+
+    </style>
+
+    <script
+        src="https://polyfill.io/v3/polyfill.min.js?features=MutationObserver%2CArray.from%2CArray.prototype.forEach%2CMap%2CSet%2CArray.prototype.includes%2CString.prototype.includes%2CPromise%2CNodeList.prototype.forEach%2CObject.values%2CReflect%2CReflect.set%2CString.prototype.startsWith%2CArray.prototype.find%2CArray.prototype.findIndex%2CElement.prototype.closest%2CElement.prototype.remove">
+    </script>
+
+    <script>
+    // source: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
+;(function() {
+  if (typeof window.CustomEvent === "function") return false
+
+  function CustomEvent(event, params) {
+    params = params || { bubbles: false, cancelable: false, detail: undefined }
+    var evt = document.createEvent("CustomEvent")
+    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail)
+    return evt
+  }
+
+  CustomEvent.prototype = window.Event.prototype
+
+  window.CustomEvent = CustomEvent
+})()
+    
+    
+    </script>
+
+    <script src="https://cdn.jsdelivr.net/npm/proxy-polyfill@0.3.0/proxy.min.js"></script>
+
+    <script src="/dist/alpine-ie11.js"></script>
+    <!--
+    <script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v0.4.0/dist/project-x.js" defer></script>
+    -->
+</head>
+
+<body>
+
+
+
+    <h2>Dispatch 1</h2>
+
+
+    <div x-data="{ foo: 'bar' }" x-on:custom-event="foo = $event.detail.newValue">
+        <span x-text="foo"></span>
+
+        <button x-on:click="$dispatch('custom-event', {newValue: 'bazil'})">Turn 'bar' to 'baz'</button>
+    </div>
+
+    <h2>Dispatch 2</h2>
+
+    <div x-data="{}" x-on:custom-event="alert('hello')">
+        <button x-on:click="$dispatch('custom-event')">Send Alert</button>
+    </div>
+    
+
+    <h2>Binding</h2>
+
+    <div x-data="{ foo: 'bar'}">
+        Text:
+        <span x-text="JSON.stringify(foo)"></span>
+        <input type="text" x-model="foo">
+    </div>
+
+
+
+</body>
+
+</html>

+ 1 - 1
src/directives/model.js

@@ -27,7 +27,7 @@ function generateModelAssignmentFunction(el, modifiers, expression) {
     }
 
     return (event, currentValue) => {
-        if (event instanceof CustomEvent) {
+        if (event instanceof CustomEvent && event.detail) {
             return event.detail
         } else if (el.type === 'checkbox') {
             // If the data we are binding to is an array, toggle it's value inside the array.

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác