Skip to content

Commit 4e976c7

Browse files
authored
Merge pull request #5 from conestack/array_hook
Array hook
2 parents b968a96 + d3932b6 commit 4e976c7

File tree

9 files changed

+12359
-10970
lines changed

9 files changed

+12359
-10970
lines changed

CHANGES.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,9 @@ Changes
44
1.0 (unreleased)
55
----------------
66

7+
- Extend JS by ``tiptap_on_array_add`` and ``register_array_subscribers``
8+
functions to enable usage in ``yafowil.widget.array``.
9+
[lenadax]
10+
711
- Make it work.
812
[lenadax]

js/src/bundles/widget.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import $ from 'jquery';
22

33
import {TiptapWidget} from '../widget.js';
4+
import {register_array_subscribers} from '../widget.js';
45
export * from '../widget.js';
56

67
$(function() {
@@ -11,4 +12,5 @@ $(function() {
1112
} else {
1213
TiptapWidget.initialize();
1314
}
15+
register_array_subscribers();
1416
});

js/src/widget.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ export class TiptapWidget {
66
static initialize(context) {
77
$('div.tiptap-editor', context).each(function() {
88
let elem = $(this);
9+
if (window.yafowil_array !== undefined &&
10+
window.yafowil_array.inside_template(elem)) {
11+
return;
12+
}
913
new TiptapWidget(elem, {
1014
actions: elem.data('tiptap-actions'),
1115
colors: elem.data('tiptap-colors'),
@@ -135,4 +139,20 @@ export class TiptapWidget {
135139
}
136140
}
137141
}
142+
}
143+
144+
145+
//////////////////////////////////////////////////////////////////////////////
146+
// yafowil.widget.array integration
147+
//////////////////////////////////////////////////////////////////////////////
148+
149+
function tiptap_on_array_add(inst, context) {
150+
TiptapWidget.initialize(context);
151+
}
152+
153+
export function register_array_subscribers() {
154+
if (window.yafowil_array === undefined) {
155+
return;
156+
}
157+
window.yafowil_array.on_array_event('on_add', tiptap_on_array_add);
138158
}

js/tests/test_widget.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {TiptapWidget} from '../src/widget.js';
2+
import {register_array_subscribers} from '../src/widget.js';
23
import $ from 'jquery';
34

45
function create_elem() {
@@ -56,6 +57,56 @@ QUnit.module('TiptapWidget', hooks => {
5657
assert.true(widget.textarea.is('textarea', elem));
5758
});
5859

60+
QUnit.test('register_array_subscribers', assert => {
61+
$('#container').empty();
62+
63+
let _array_subscribers = {
64+
on_add: []
65+
};
66+
67+
// window.yafowil_array is undefined - return
68+
register_array_subscribers();
69+
assert.deepEqual(_array_subscribers['on_add'], []);
70+
71+
// patch yafowil_array
72+
window.yafowil_array = {
73+
on_array_event: function(evt_name, evt_function) {
74+
_array_subscribers[evt_name] = evt_function;
75+
},
76+
inside_template(elem) {
77+
return elem.parents('.arraytemplate').length > 0;
78+
}
79+
};
80+
register_array_subscribers();
81+
82+
// create table DOM
83+
let table = $('<table />')
84+
.append($('<tr />'))
85+
.append($('<td />'))
86+
.appendTo('body');
87+
88+
elem = create_elem();
89+
$('td', table).addClass('arraytemplate');
90+
elem.appendTo($('td', table));
91+
// set data attr
92+
elem.data('tiptap-actions', ['bold']);
93+
94+
// invoke array on_add - returns
95+
_array_subscribers['on_add'].apply(null, $('tr', table));
96+
let widget = elem.data('yafowil-tiptap');
97+
assert.notOk(widget);
98+
$('td', table).removeClass('arraytemplate');
99+
100+
// invoke array on_add
101+
elem.attr('id', '');
102+
_array_subscribers['on_add'].apply(null, $('tr', table));
103+
widget = elem.data('yafowil-tiptap');
104+
assert.ok(widget);
105+
table.remove();
106+
window.yafowil_array = undefined;
107+
_array_subscribers = undefined;
108+
});
109+
59110
QUnit.test('destroy', assert => {
60111
// set data attr
61112
elem.data('tiptap-actions', ['bold']);

package.json

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,45 +6,45 @@
66
"devDependencies": {
77
"@rollup/plugin-node-resolve": "^13.3.0",
88
"@rollup/plugin-typescript": "^8.3.0",
9-
"karma": "^6.3.20",
9+
"karma": "^6.4.1",
1010
"karma-chrome-launcher": "^3.1.1",
1111
"karma-coverage": "^2.2.0",
1212
"karma-firefox-launcher": "^2.1.2",
1313
"karma-module-resolver-preprocessor": "^1.1.3",
1414
"karma-qunit": "^4.1.2",
1515
"karma-typescript": "^5.5.3",
1616
"karma-viewport": "^1.0.9",
17-
"qunit": "^2.19.1",
18-
"rollup": "^2.75.3",
17+
"qunit": "^2.19.3",
18+
"rollup": "^2.79.1",
1919
"rollup-plugin-cleanup": "^3.2.1",
2020
"rollup-plugin-export-default": "^1.4.0",
2121
"rollup-plugin-terser": "^7.0.2",
2222
"rollup-plugin-ts": "^2.0.5",
2323
"rollup-plugin-typescript2": "^0.31.1",
24-
"sass": "^1.52.1",
24+
"sass": "^1.57.1",
2525
"tslib": "^2.3.1"
2626
},
2727
"dependencies": {
28-
"@tiptap/core": "^2.0.0-beta.176",
29-
"@tiptap/extension-blockquote": "^2.0.0-beta.26",
30-
"@tiptap/extension-bold": "^2.0.0-beta.26",
31-
"@tiptap/extension-bullet-list": "^2.0.0-beta.26",
32-
"@tiptap/extension-code": "^2.0.0-beta.26",
33-
"@tiptap/extension-code-block": "^2.0.0-beta.37",
28+
"@tiptap/core": "^2.0.0-beta.209",
29+
"@tiptap/extension-blockquote": "^2.0.0-beta.209",
30+
"@tiptap/extension-bold": "^2.0.0-beta.209",
31+
"@tiptap/extension-bullet-list": "^2.0.0-beta.209",
32+
"@tiptap/extension-code": "^2.0.0-beta.209",
33+
"@tiptap/extension-code-block": "^2.0.0-beta.209",
3434
"@tiptap/extension-code-block-lowlight": "^2.0.0-beta.68",
35-
"@tiptap/extension-color": "^2.0.0-beta.9",
36-
"@tiptap/extension-document": "^2.0.0-beta.15",
37-
"@tiptap/extension-dropcursor": "^2.0.0-beta.25",
38-
"@tiptap/extension-heading": "^2.0.0-beta.26",
39-
"@tiptap/extension-image": "^2.0.0-beta.27",
40-
"@tiptap/extension-italic": "^2.0.0-beta.26",
41-
"@tiptap/extension-link": "^2.0.0-beta.38",
42-
"@tiptap/extension-list-item": "^2.0.0-beta.20",
43-
"@tiptap/extension-ordered-list": "^2.0.0-beta.27",
44-
"@tiptap/extension-paragraph": "^2.0.0-beta.23",
45-
"@tiptap/extension-text": "^2.0.0-beta.15",
46-
"@tiptap/extension-text-style": "^2.0.0-beta.23",
47-
"@tiptap/extension-underline": "^2.0.0-beta.23",
35+
"@tiptap/extension-color": "^2.0.0-beta.209",
36+
"@tiptap/extension-document": "^2.0.0-beta.209",
37+
"@tiptap/extension-dropcursor": "^2.0.0-beta.209",
38+
"@tiptap/extension-heading": "^2.0.0-beta.209",
39+
"@tiptap/extension-image": "^2.0.0-beta.209",
40+
"@tiptap/extension-italic": "^2.0.0-beta.209",
41+
"@tiptap/extension-link": "^2.0.0-beta.209",
42+
"@tiptap/extension-list-item": "^2.0.0-beta.209",
43+
"@tiptap/extension-ordered-list": "^2.0.0-beta.209",
44+
"@tiptap/extension-paragraph": "^2.0.0-beta.209",
45+
"@tiptap/extension-text": "^2.0.0-beta.209",
46+
"@tiptap/extension-text-style": "^2.0.0-beta.209",
47+
"@tiptap/extension-underline": "^2.0.0-beta.209",
4848
"@tiptap/starter-kit": "^2.0.0-beta.176"
4949
}
5050
}

0 commit comments

Comments
 (0)