浏览代码

Fix data-option-list behavior

Vijayakrishnan 4 年之前
父节点
当前提交
74add09e09
共有 2 个文件被更改,包括 32 次插入6 次删除
  1. 6 5
      public/css/style.css
  2. 26 1
      public/js/option-list.js

+ 6 - 5
public/css/style.css

@@ -1141,20 +1141,21 @@ table.table-edit-sheet .ql-editor[contenteditable] {
 .data-option-list {
     position: absolute;
     background: #fff;
-    border: 1px solid #ddd;
+    border: 2px solid #ddd;
     margin-top: -1px;
     width: 100%;
     z-index: 1;
     display: none;
-}
-input[data-option-list]:focus+.data-option-list {
-    display: block;
+    max-width: 250px;
+    box-shadow: 0 0 3px #ddd;
+    border-top: 0;
 }
 .data-option-list>div {
     cursor: pointer;
-    padding: 0.3rem 0.5rem;
+    padding: 0.2rem 0.5rem;
     border-bottom: 1px solid #ddd;
     color: #666;
+    font-size: 90%;
 }
 .data-option-list>div:last-child {
     border-bottom: 0;

+ 26 - 1
public/js/option-list.js

@@ -1,13 +1,38 @@
 (function() {
+    function showOptionsList(_input) {
+        let ol = $(_input).next('.data-option-list');
+        if(ol.length && !ol.is(':visible')) {
+            ol.show();
+        }
+    }
+    function hideOptionsList(_input) {
+        let ol = $(_input).next('.data-option-list');
+        if(ol.length && ol.is(':visible')) {
+            ol.hide();
+        }
+    }
     function init() {
         $(document)
             .off('mousedown.option-list', '.data-option-list>div')
             .on('mousedown.option-list', '.data-option-list>div', function() {
-                console.log(12);
                 $(this).parent().prev('input[data-option-list]').val('').focus();
                 document.execCommand('insertText', false, $(this).text());
+                $(this).closest('.data-option-list').hide();
                 return false;
             });
+        $(document)
+            .off('click.trigger-option-list', 'input[data-option-list]')
+            .on('click.trigger-option-list', 'input[data-option-list]', function() {
+                showOptionsList(this);
+            })
+            .off('focus.trigger-option-list', 'input[data-option-list]')
+            .on('focus.trigger-option-list', 'input[data-option-list]', function() {
+                showOptionsList(this);
+            })
+            .off('blur.trigger-option-list', 'input[data-option-list]')
+            .on('blur.trigger-option-list', 'input[data-option-list]', function() {
+                hideOptionsList(this);
+            });
     }
     addMCInitializer('option-list', init);
 })();