|
25 | 25 | var $table = $(opts.selectors.table); |
26 | 26 | if (!$table.length) return; |
27 | 27 |
|
| 28 | + function scopedTriggerSelector() { |
| 29 | + return String(opts.selectors.primaryCell || '') |
| 30 | + .split(',') |
| 31 | + .map(function (selector) { |
| 32 | + return selector.trim(); |
| 33 | + }) |
| 34 | + .filter(Boolean) |
| 35 | + .map(function (selector) { |
| 36 | + return selector + ' .cc-popover-trigger'; |
| 37 | + }) |
| 38 | + .join(', '); |
| 39 | + } |
| 40 | + |
28 | 41 | function closeOpenPopoversExcept($keepTd, focusBack) { |
29 | 42 | $('.cc-popover[data-open="true"]').each(function () { |
30 | 43 | var $pop = $(this); |
|
44 | 57 | } |
45 | 58 | }); |
46 | 59 | } |
| 60 | + |
| 61 | + var triggerSelector = scopedTriggerSelector(); |
| 62 | + |
| 63 | + if (!triggerSelector) return; |
| 64 | + |
47 | 65 | // prebuild esistenti |
48 | 66 | $table.find(opts.selectors.primaryCell).each(function () { |
49 | 67 | NS.core.buildPopover($(this), opts); |
50 | 68 | }); |
51 | 69 |
|
52 | | - // toggle su click |
53 | | - $table.on('click', opts.selectors.primaryCell + ' .cc-popover-trigger', function (e) { |
54 | | - e.preventDefault(); |
55 | | - e.stopPropagation(); |
56 | | - NS.core.togglePopover($(this).closest('td'), undefined, opts); |
57 | | - }); |
58 | | - |
59 | | - // click solo quando NON siamo in hover puro |
| 70 | + // click mode: solo quando NON siamo in hover puro |
60 | 71 | if (opts.onHover !== true) { |
61 | | - $table.on('click', opts.selectors.primaryCell + ' .cc-popover-trigger', function (e) { |
| 72 | + $table.on('click', triggerSelector, function (e) { |
62 | 73 | e.preventDefault(); |
63 | 74 | e.stopPropagation(); |
64 | 75 |
|
|
69 | 80 | }); |
70 | 81 | } |
71 | 82 |
|
72 | | - // hover puro: sfioro apre, uscita riga chiude. |
73 | | - // Se sfiori un altro target, quello aperto prima si chiude subito. |
| 83 | + // hover puro: sfioro apre, click resta link naturale |
74 | 84 | if (opts.onHover === true) { |
75 | 85 | $table |
76 | | - .on('mouseenter', opts.selectors.primaryCell + ' .cc-popover-trigger', function () { |
| 86 | + .on('mouseenter', triggerSelector, function () { |
77 | 87 | var $td = $(this).closest('td'); |
78 | 88 |
|
79 | 89 | closeOpenPopoversExcept($td, false); |
80 | 90 | NS.core.togglePopover($td, true, opts, { noFocus: true }); |
81 | 91 | }) |
82 | | - .on('mouseleave', 'tr', function () { |
83 | | - var $td = $(this).find(opts.selectors.primaryCell).first(); |
84 | | - |
85 | | - if ($td.length) { |
86 | | - NS.core.togglePopover($td, false, opts, { noFocus: true }); |
87 | | - } |
| 92 | + .on('mouseleave', opts.selectors.primaryCell, function () { |
| 93 | + NS.core.togglePopover($(this), false, opts, { noFocus: true }); |
88 | 94 | }); |
89 | 95 | } |
90 | 96 |
|
|
93 | 99 | if ($(e.target).closest('.cc-popover, .cc-popover-trigger').length) { |
94 | 100 | return; |
95 | 101 | } |
| 102 | + |
96 | 103 | closeOpenPopoversExcept(null, false); |
97 | 104 | }); |
98 | 105 |
|
|
0 commit comments