@themarioga/grid-editor 6.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/AUTO_SAVE.md +2 -2
  2. package/BUILDING.md +45 -29
  3. package/CHANGELOG.md +59 -0
  4. package/README.md +163 -87
  5. package/UPGRADING.md +119 -0
  6. package/dist/grideditor.bundle.min.js +14 -0
  7. package/dist/grideditor.d.ts +335 -0
  8. package/dist/grideditor.esm.js +3977 -0
  9. package/dist/grideditor.jquery.js +253 -0
  10. package/dist/grideditor.jquery.min.js +1 -0
  11. package/dist/grideditor.jquery.min.js.map +7 -0
  12. package/dist/grideditor.js +3983 -0
  13. package/dist/grideditor.min.js +6 -0
  14. package/dist/grideditor.min.js.map +7 -0
  15. package/dist/locales/grideditor.es.esm.js +158 -0
  16. package/dist/locales/grideditor.es.js +164 -168
  17. package/dist/locales/grideditor.es.min.js +6 -2
  18. package/dist/locales/grideditor.es.min.js.map +7 -1
  19. package/dist/plugins/grideditor.accordion.esm.js +294 -0
  20. package/dist/plugins/grideditor.accordion.js +286 -180
  21. package/dist/plugins/grideditor.accordion.min.js +1 -2
  22. package/dist/plugins/grideditor.accordion.min.js.map +7 -1
  23. package/dist/plugins/grideditor.alignment.esm.js +55 -0
  24. package/dist/plugins/grideditor.alignment.js +58 -77
  25. package/dist/plugins/grideditor.alignment.min.js +1 -2
  26. package/dist/plugins/grideditor.alignment.min.js.map +7 -1
  27. package/dist/plugins/grideditor.card.esm.js +73 -0
  28. package/dist/plugins/grideditor.card.js +74 -64
  29. package/dist/plugins/grideditor.card.min.js +1 -2
  30. package/dist/plugins/grideditor.card.min.js.map +7 -1
  31. package/dist/plugins/grideditor.ckeditor.esm.js +500 -0
  32. package/dist/plugins/grideditor.ckeditor.js +484 -449
  33. package/dist/plugins/grideditor.ckeditor.min.js +1 -2
  34. package/dist/plugins/grideditor.ckeditor.min.js.map +7 -1
  35. package/dist/plugins/grideditor.clipboard.esm.js +326 -0
  36. package/dist/plugins/grideditor.clipboard.js +298 -235
  37. package/dist/plugins/grideditor.clipboard.min.js +1 -2
  38. package/dist/plugins/grideditor.clipboard.min.js.map +7 -1
  39. package/dist/plugins/grideditor.codemirror-inline.esm.js +205 -0
  40. package/dist/plugins/grideditor.codemirror-inline.js +188 -168
  41. package/dist/plugins/grideditor.codemirror-inline.min.js +1 -2
  42. package/dist/plugins/grideditor.codemirror-inline.min.js.map +7 -1
  43. package/dist/plugins/grideditor.codemirror.esm.js +63 -0
  44. package/dist/plugins/grideditor.codemirror.js +60 -71
  45. package/dist/plugins/grideditor.codemirror.min.js +1 -2
  46. package/dist/plugins/grideditor.codemirror.min.js.map +7 -1
  47. package/dist/plugins/grideditor.elements.esm.js +271 -0
  48. package/dist/plugins/grideditor.elements.js +256 -149
  49. package/dist/plugins/grideditor.elements.min.js +1 -2
  50. package/dist/plugins/grideditor.elements.min.js.map +7 -1
  51. package/dist/plugins/grideditor.float.esm.js +34 -0
  52. package/dist/plugins/grideditor.float.js +37 -52
  53. package/dist/plugins/grideditor.float.min.js +1 -2
  54. package/dist/plugins/grideditor.float.min.js.map +7 -1
  55. package/dist/plugins/grideditor.gutters.esm.js +143 -0
  56. package/dist/plugins/grideditor.gutters.js +134 -131
  57. package/dist/plugins/grideditor.gutters.min.js +1 -2
  58. package/dist/plugins/grideditor.gutters.min.js.map +7 -1
  59. package/dist/plugins/grideditor.order.esm.js +189 -0
  60. package/dist/plugins/grideditor.order.js +170 -182
  61. package/dist/plugins/grideditor.order.min.js +1 -2
  62. package/dist/plugins/grideditor.order.min.js.map +7 -1
  63. package/dist/plugins/grideditor.popup.esm.js +187 -0
  64. package/dist/plugins/grideditor.popup.js +183 -134
  65. package/dist/plugins/grideditor.popup.min.js +1 -2
  66. package/dist/plugins/grideditor.popup.min.js.map +7 -1
  67. package/dist/plugins/grideditor.sections.esm.js +271 -0
  68. package/dist/plugins/grideditor.sections.js +250 -173
  69. package/dist/plugins/grideditor.sections.min.js +1 -2
  70. package/dist/plugins/grideditor.sections.min.js.map +7 -1
  71. package/dist/plugins/grideditor.spacing.esm.js +318 -0
  72. package/dist/plugins/grideditor.spacing.js +296 -272
  73. package/dist/plugins/grideditor.spacing.min.js +1 -2
  74. package/dist/plugins/grideditor.spacing.min.js.map +7 -1
  75. package/dist/plugins/grideditor.summernote.esm.js +509 -0
  76. package/dist/plugins/grideditor.summernote.js +493 -427
  77. package/dist/plugins/grideditor.summernote.min.js +1 -2
  78. package/dist/plugins/grideditor.summernote.min.js.map +7 -1
  79. package/dist/plugins/grideditor.tabs.esm.js +237 -0
  80. package/dist/plugins/grideditor.tabs.js +233 -139
  81. package/dist/plugins/grideditor.tabs.min.js +1 -2
  82. package/dist/plugins/grideditor.tabs.min.js.map +7 -1
  83. package/dist/plugins/grideditor.textalign.esm.js +40 -0
  84. package/dist/plugins/grideditor.textalign.js +43 -56
  85. package/dist/plugins/grideditor.textalign.min.js +1 -2
  86. package/dist/plugins/grideditor.textalign.min.js.map +7 -1
  87. package/dist/plugins/grideditor.tinymce.esm.js +519 -0
  88. package/dist/plugins/grideditor.tinymce.js +502 -490
  89. package/dist/plugins/grideditor.tinymce.min.js +1 -2
  90. package/dist/plugins/grideditor.tinymce.min.js.map +7 -1
  91. package/dist/plugins/grideditor.visibility.esm.js +158 -0
  92. package/dist/plugins/grideditor.visibility.js +140 -149
  93. package/dist/plugins/grideditor.visibility.min.js +1 -2
  94. package/dist/plugins/grideditor.visibility.min.js.map +7 -1
  95. package/docs/events.md +47 -21
  96. package/docs/locale-keys.md +6 -0
  97. package/docs/plugins.md +47 -25
  98. package/example/adapter.html +112 -0
  99. package/example/attributes.html +89 -62
  100. package/example/autocols.html +9 -9
  101. package/example/autosave.html +18 -16
  102. package/example/basic.html +8 -6
  103. package/example/breakpoints.html +5 -6
  104. package/example/ckeditor.html +4 -5
  105. package/example/clipboard.html +15 -11
  106. package/example/codemirror.html +13 -8
  107. package/example/containers.html +11 -9
  108. package/example/custom_editor.html +53 -34
  109. package/example/elements.html +14 -12
  110. package/example/index.html +16 -2
  111. package/example/locale.html +6 -7
  112. package/example/plugins.html +44 -29
  113. package/example/summernote.html +6 -5
  114. package/example/utilities.html +17 -13
  115. package/example/wrap_content.html +13 -10
  116. package/package.json +44 -12
  117. package/src/js/dom.js +401 -0
  118. package/src/js/grideditor.classic.js +16 -0
  119. package/src/js/grideditor.jquery.js +325 -0
  120. package/src/js/{jquery.grideditor.js → grideditor.js} +1284 -1124
  121. package/src/js/locales/grideditor.es.js +163 -156
  122. package/src/js/plugins/grideditor.accordion.js +97 -77
  123. package/src/js/plugins/grideditor.alignment.js +5 -7
  124. package/src/js/plugins/grideditor.card.js +23 -23
  125. package/src/js/plugins/grideditor.ckeditor.js +107 -106
  126. package/src/js/plugins/grideditor.clipboard.js +49 -37
  127. package/src/js/plugins/grideditor.codemirror-inline.js +50 -37
  128. package/src/js/plugins/grideditor.codemirror.js +9 -10
  129. package/src/js/plugins/grideditor.elements.js +57 -33
  130. package/src/js/plugins/grideditor.float.js +4 -6
  131. package/src/js/plugins/grideditor.gutters.js +20 -15
  132. package/src/js/plugins/grideditor.order.js +28 -25
  133. package/src/js/plugins/grideditor.popup.js +63 -51
  134. package/src/js/plugins/grideditor.sections.js +39 -32
  135. package/src/js/plugins/grideditor.spacing.js +42 -45
  136. package/src/js/plugins/grideditor.summernote.js +112 -76
  137. package/src/js/plugins/grideditor.tabs.js +65 -57
  138. package/src/js/plugins/grideditor.textalign.js +4 -6
  139. package/src/js/plugins/grideditor.tinymce.js +148 -140
  140. package/src/js/plugins/grideditor.visibility.js +24 -25
  141. package/src/js/register.js +18 -0
  142. package/src/js/text/grideditor.text.js +77 -56
  143. package/types/grideditor.d.ts +335 -0
  144. package/dist/jquery.grideditor.bundle.min.js +0 -10
  145. package/dist/jquery.grideditor.js +0 -4927
  146. package/dist/jquery.grideditor.min.js +0 -2
  147. package/dist/jquery.grideditor.min.js.map +0 -1
@@ -1,169 +1,176 @@
1
1
  /**
2
2
  * Spanish strings for grid-editor.
3
3
  *
4
- * Load after the plugin and select with `locale: 'es'`:
4
+ * Load after the editor and select with `locale: 'es'`:
5
5
  *
6
- * <script src="dist/jquery.grideditor.min.js"></script>
6
+ * <script src="dist/grideditor.min.js"></script>
7
7
  * <script src="dist/locales/grideditor.es.js"></script>
8
- * <script>$('#myGrid').gridEditor({ locale: 'es' });</script>
8
+ * <script>new GridEditor('#myGrid', { locale: 'es' });</script>
9
+ *
10
+ * or, as a module, `import '@themarioga/grid-editor/locales/es'`.
9
11
  *
10
12
  * This is one of the two locales grid-editor ships, so it is held to complete
11
- * coverage of `$.fn.gridEditor.locales.en`: test/locales.js fails when a key
13
+ * coverage of `GridEditor.locales.en`: test/locales.js fails when a key
12
14
  * is missing. Add the Spanish string in the same change that adds the English
13
15
  * one, and keep the wording short enough to fit the tooltip or the dropdown
14
16
  * item it appears in.
15
17
  */
16
- (function($) {
18
+ import { GridEditor } from '../grideditor.js';
17
19
 
18
- $.fn.gridEditor.locales.es = {
19
- 'tool.move': 'Mover',
20
- 'tool.settings': 'Configuración',
21
- 'tool.add_row': 'Añadir fila',
22
- 'tool.delete_text': 'Quitar texto',
23
- 'tool.delete_plain': 'Quitar contenido',
24
- 'tool.edit_html': 'Editar html',
25
- 'codemirror.apply': 'Aplicar',
26
- 'codemirror.cancel': 'Cancelar',
27
- 'tool.convert_type': 'Editar como texto de {editor}',
28
- 'text.add': 'Texto',
29
- 'text.add_type': 'Texto ({editor})',
30
- 'text.no_editor': 'No hay cargado ningún editor de texto "{type}": este texto se puede mover y borrar, pero no editar',
31
- 'text.tinymce': 'tinyMCE',
32
- 'text.ckeditor': 'CKEditor',
33
- 'text.summernote': 'Summernote',
34
- 'tool.add_column': 'Añadir columna\n(mantén pulsado para elegir el ancho)',
35
- 'tool.column_size': '{size} de 12',
36
- 'tool.column_equal': 'Igual: reparte lo que queda de la fila',
37
- 'tool.column_auto': 'Auto: tan ancha como su contenido',
38
- 'tool.delete_row': 'Borrar fila',
39
- 'tool.delete_column': 'Borrar columna',
40
- 'tool.delete_element': 'Borrar elemento',
41
- 'tool.delete_container': 'Borrar contenedor',
42
- 'tool.delete_pane': 'Borrar panel',
43
- 'tool.rename': 'Haz doble clic para renombrar',
44
- 'tool.toggle_popup': 'Plegar esta ventana mientras editas',
45
- 'tool.element_info': 'Elemento: {name}',
46
- 'tool.column_narrower': 'Estrechar columna\n(Mayús para el mínimo)',
47
- 'tool.column_wider': 'Ensanchar columna\n(Mayús para el máximo)',
48
- 'tool.indent_decrease': 'Reducir sangría\n(Mayús para quitarla)',
49
- 'tool.indent_increase': 'Aumentar sangría\n(Mayús para el máximo)',
50
- 'tool.edit_source': 'Editar el código fuente',
51
- 'tool.preview': 'Vista previa',
52
- 'panel.title': 'Ajustes: {kind}',
53
- 'panel.close': 'Cerrar',
54
- 'panel.done': 'Hecho',
55
- 'panel.id': 'Id',
56
- 'panel.classes': 'Clases',
57
- 'panel.editor': 'Editor',
58
- 'panel.kind_row': 'Fila',
59
- 'panel.kind_column': 'Columna',
60
- 'panel.kind_text': 'Texto',
61
- 'panel.kind_element': 'Elemento',
62
- 'panel.kind_section': 'Sección',
63
- 'panel.kind_tab': 'Pestaña',
64
- 'panel.kind_accordion_item': 'Elemento de acordeón',
65
- 'tool.id_placeholder': 'id',
66
- 'tool.id_title': 'Asignar un identificador único',
67
- 'tool.classes_placeholder': 'clases',
68
- 'tool.classes_title': 'Clases css, separadas por espacios',
69
- 'tool.toggle_class': 'Aplicar o quitar el estilo "{label}"',
70
- 'row.add': 'Añadir fila {layout}',
71
- 'row.add_row_cols': 'Añadir una fila de {columns} columnas, {counts} por fila',
72
- 'container.add_tabs': 'Pestañas',
73
- 'container.add_tab': 'Añadir pestaña',
74
- 'container.tab_label': 'Pestaña {number}',
75
- 'container.add_accordion': 'Acordeón',
76
- 'container.add_accordion_item': 'Añadir apartado',
77
- 'container.accordion_label': 'Apartado {number}',
78
- 'container.add_popup': 'Ventana emergente',
79
- 'container.popup_title': 'Título',
80
- 'container.popup_trigger': 'Abrir',
81
- 'container.add_card': 'Tarjeta',
82
- 'container.card_title': 'Título de la tarjeta',
83
- 'container.card_footer': 'Pie de la tarjeta',
84
- 'confirm.title': 'Confirmar',
85
- 'confirm.ok': 'Borrar',
86
- 'confirm.cancel': 'Cancelar',
87
- 'confirm.delete_row': '¿Seguro que quieres borrar esta fila?',
88
- 'confirm.delete_column': '¿Seguro que quieres borrar esta columna?',
89
- 'confirm.delete_text': '¿Seguro que quieres borrar este texto?',
90
- 'confirm.delete_plain': '¿Seguro que quieres borrar este contenido?',
91
- 'confirm.delete_element': '¿Seguro que quieres borrar este elemento?',
92
- 'confirm.delete_container': '¿Seguro que quieres borrar este contenedor y todo su contenido?',
93
- 'confirm.delete_tab': '¿Seguro que quieres borrar esta pestaña y todo su contenido?',
94
- 'confirm.delete_accordion_item': '¿Seguro que quieres borrar este apartado y todo su contenido?',
95
- 'view.all': 'Todos los tamaños',
96
- 'view.xs': 'Móvil',
97
- 'view.sm': 'Tablet',
98
- 'view.md': 'Escritorio pequeño',
99
- 'view.lg': 'Escritorio',
100
- 'view.xl': 'Escritorio grande',
101
- 'view.xxl': 'Pantalla panorámica',
102
- 'utility.section': 'Responsive: {view}',
103
- 'utility.col_width': 'Ancho',
104
- 'utility.col_equal': 'Igual',
105
- 'utility.col_auto': 'Auto',
106
- 'section.add': 'Sección',
107
- 'section.width': 'Ancho',
108
- 'section.fixed': 'Fijo',
109
- 'section.fluid': 'Ancho completo',
110
- 'section.from': 'Fijo desde {breakpoint}',
111
- 'tool.add_row_to_section': 'Añadir fila',
112
- 'tool.delete_section': 'Quitar sección',
113
- 'confirm.delete_section': '¿Seguro que quieres borrar esta sección y todo su contenido?',
114
- 'tool.copy': 'Copiar',
115
- 'tool.paste': 'Pegar',
116
- 'clipboard.paste_row': 'Pegar fila',
117
- 'clipboard.paste_section': 'Pegar sección',
118
- 'utility.col_from_row': 'De la fila: {count}',
119
- 'utility.row_cols': 'Columnas por fila',
120
- 'badge.row_cols': '{count} por fila',
121
- 'badge.row_cols_auto': 'Tan anchas como su contenido',
122
- 'utility.default': 'Por defecto',
123
- 'utility.inherit': 'Hereda: {value} (de {breakpoint})',
124
- 'utility.varies': 'Cambia en {breakpoints}; elegir aquí lo sustituye',
125
- 'utility.visibility': 'Visibilidad',
126
- 'utility.visibility_hidden': 'Oculto',
127
- 'utility.visibility_shown': 'Visible',
128
- 'tool.hide_in_view': 'Ocultar en esta vista',
129
- 'tool.show_in_view': 'Mostrar en esta vista',
130
- 'badge.hidden_in': 'Oculto en {breakpoints}',
131
- 'utility.order': 'Orden',
132
- 'utility.order_first': 'Primero',
133
- 'utility.order_last': 'Último',
134
- 'tool.order_earlier': 'Antes en esta vista',
135
- 'tool.order_later': 'Después en esta vista',
136
- 'badge.order': 'Orden: {value}',
137
- 'utility.justify_content': 'Justificar columnas',
138
- 'utility.align_items': 'Alinear columnas',
139
- 'utility.align_self': 'Alinearse',
140
- 'utility.gutters': 'Espaciado entre columnas',
141
- 'utility.gutters_x': 'Espaciado horizontal',
142
- 'utility.gutters_y': 'Espaciado vertical',
143
- 'utility.padding': 'Relleno',
144
- 'utility.margin': 'Margen',
145
- 'utility.side_all': 'Todos los lados',
146
- 'utility.side_x': 'Izquierda y derecha',
147
- 'utility.side_y': 'Arriba y abajo',
148
- 'utility.side_t': 'Arriba',
149
- 'utility.side_b': 'Abajo',
150
- 'utility.side_s': 'Inicio',
151
- 'utility.side_e': 'Fin',
152
- 'utility.text_align': 'Alineación del texto',
153
- 'utility.text_start': 'Inicio',
154
- 'utility.text_center': 'Centro',
155
- 'utility.text_end': 'Fin',
156
- 'utility.float': 'Flotar',
157
- 'utility.float_start': 'Inicio',
158
- 'utility.float_end': 'Fin',
159
- 'utility.float_none': 'Ninguno',
160
- 'utility.spacing_gutter': 'El relleno lateral de una columna es su espaciado: cambiarlo cambia el espacio entre columnas',
161
- 'error.sortable_missing': '¡SortableJS no está disponible! Asegúrate de haber cargado el archivo js de Sortable; sin él no se puede arrastrar.',
162
- 'warning.setting_removed': 'El ajuste {setting} se eliminó en la 4.0. Usa {replacement} en su lugar.',
163
- 'error.tinymce_missing': '¡tinyMCE no está disponible! Asegúrate de haber cargado el archivo js de tinyMCE.',
164
- 'error.ckeditor_missing': '¡CKEditor no está disponible! Asegúrate de haber cargado los archivos js de ckeditor y del adaptador de jQuery.',
165
- 'error.codemirror_missing': '¡CodeMirror no está disponible! Asegúrate de haber cargado el archivo js de CodeMirror; sin él el código se edita en un textarea normal.',
166
- 'error.summernote_missing': '¡Summernote no está disponible! Asegúrate de haber cargado el archivo js de Summernote.',
167
- };
20
+ GridEditor.locales.es = {
21
+ 'tool.move': 'Mover',
22
+ 'tool.settings': 'Configuración',
23
+ 'tool.add_row': 'Añadir fila',
24
+ 'tool.delete_text': 'Quitar texto',
25
+ 'tool.delete_plain': 'Quitar contenido',
26
+ 'tool.edit_html': 'Editar html',
27
+ 'codemirror.apply': 'Aplicar',
28
+ 'codemirror.cancel': 'Cancelar',
29
+ 'tool.convert_type': 'Editar como texto de {editor}',
30
+ 'text.add': 'Texto',
31
+ 'text.add_type': 'Texto ({editor})',
32
+ 'text.no_editor': 'No hay cargado ningún editor de texto "{type}": este texto se puede mover y borrar, pero no editar',
33
+ 'text.tinymce': 'tinyMCE',
34
+ 'text.ckeditor': 'CKEditor',
35
+ 'text.summernote': 'Summernote',
36
+ 'tool.add_column': 'Añadir columna\n(mantén pulsado para elegir el ancho)',
37
+ 'tool.column_size': '{size} de 12',
38
+ 'tool.column_equal': 'Igual: reparte lo que queda de la fila',
39
+ 'tool.column_auto': 'Auto: tan ancha como su contenido',
40
+ 'tool.delete_row': 'Borrar fila',
41
+ 'tool.delete_column': 'Borrar columna',
42
+ 'tool.delete_element': 'Borrar elemento',
43
+ 'tool.delete_container': 'Borrar contenedor',
44
+ 'tool.delete_pane': 'Borrar panel',
45
+ 'tool.rename': 'Haz doble clic para renombrar',
46
+ 'tool.toggle_popup': 'Plegar esta ventana mientras editas',
47
+ 'tool.element_info': 'Elemento: {name}',
48
+ 'tool.column_narrower': 'Estrechar columna\n(Mayús para el mínimo)',
49
+ 'tool.column_wider': 'Ensanchar columna\n(Mayús para el máximo)',
50
+ 'tool.indent_decrease': 'Reducir sangría\n(Mayús para quitarla)',
51
+ 'tool.indent_increase': 'Aumentar sangría\n(Mayús para el máximo)',
52
+ 'tool.edit_source': 'Editar el código fuente',
53
+ 'tool.preview': 'Vista previa',
54
+ 'panel.title': 'Ajustes: {kind}',
55
+ 'panel.close': 'Cerrar',
56
+ 'panel.done': 'Hecho',
57
+ 'panel.id': 'Id',
58
+ 'panel.classes': 'Clases',
59
+ 'panel.editor': 'Editor',
60
+ 'panel.kind_row': 'Fila',
61
+ 'panel.kind_column': 'Columna',
62
+ 'panel.kind_text': 'Texto',
63
+ 'panel.kind_element': 'Elemento',
64
+ 'panel.kind_section': 'Sección',
65
+ 'panel.kind_tab': 'Pestaña',
66
+ 'panel.kind_accordion_item': 'Elemento de acordeón',
67
+ 'tool.id_placeholder': 'id',
68
+ 'tool.id_title': 'Asignar un identificador único',
69
+ 'tool.classes_placeholder': 'clases',
70
+ 'tool.classes_title': 'Clases css, separadas por espacios',
71
+ 'tool.toggle_class': 'Aplicar o quitar el estilo "{label}"',
72
+ 'row.add': 'Añadir fila {layout}',
73
+ 'row.add_row_cols': 'Añadir una fila de {columns} columnas, {counts} por fila',
74
+ 'container.add_tabs': 'Pestañas',
75
+ 'container.add_tab': 'Añadir pestaña',
76
+ 'container.tab_label': 'Pestaña {number}',
77
+ 'container.add_accordion': 'Acordeón',
78
+ 'container.add_accordion_item': 'Añadir apartado',
79
+ 'container.accordion_label': 'Apartado {number}',
80
+ 'container.add_popup': 'Ventana emergente',
81
+ 'container.popup_title': 'Título',
82
+ 'container.popup_trigger': 'Abrir',
83
+ 'container.add_card': 'Tarjeta',
84
+ 'container.card_title': 'Título de la tarjeta',
85
+ 'container.card_footer': 'Pie de la tarjeta',
86
+ 'confirm.title': 'Confirmar',
87
+ 'confirm.ok': 'Borrar',
88
+ 'confirm.cancel': 'Cancelar',
89
+ 'confirm.delete_row': '¿Seguro que quieres borrar esta fila?',
90
+ 'confirm.delete_column': '¿Seguro que quieres borrar esta columna?',
91
+ 'confirm.delete_text': '¿Seguro que quieres borrar este texto?',
92
+ 'confirm.delete_plain': '¿Seguro que quieres borrar este contenido?',
93
+ 'confirm.delete_element': '¿Seguro que quieres borrar este elemento?',
94
+ 'confirm.delete_container': '¿Seguro que quieres borrar este contenedor y todo su contenido?',
95
+ 'confirm.delete_tab': '¿Seguro que quieres borrar esta pestaña y todo su contenido?',
96
+ 'confirm.delete_accordion_item': '¿Seguro que quieres borrar este apartado y todo su contenido?',
97
+ 'view.all': 'Todos los tamaños',
98
+ 'view.xs': 'Móvil',
99
+ 'view.sm': 'Tablet',
100
+ 'view.md': 'Escritorio pequeño',
101
+ 'view.lg': 'Escritorio',
102
+ 'view.xl': 'Escritorio grande',
103
+ 'view.xxl': 'Pantalla panorámica',
104
+ 'utility.section': 'Responsive: {view}',
105
+ 'utility.col_width': 'Ancho',
106
+ 'utility.col_equal': 'Igual',
107
+ 'utility.col_auto': 'Auto',
108
+ 'section.add': 'Sección',
109
+ 'section.width': 'Ancho',
110
+ 'section.fixed': 'Fijo',
111
+ 'section.fluid': 'Ancho completo',
112
+ 'section.from': 'Fijo desde {breakpoint}',
113
+ 'tool.add_row_to_section': 'Añadir fila',
114
+ 'tool.delete_section': 'Quitar sección',
115
+ 'confirm.delete_section': '¿Seguro que quieres borrar esta sección y todo su contenido?',
116
+ 'tool.copy': 'Copiar',
117
+ 'tool.paste': 'Pegar',
118
+ 'clipboard.paste_row': 'Pegar fila',
119
+ 'clipboard.paste_section': 'Pegar sección',
120
+ 'utility.col_from_row': 'De la fila: {count}',
121
+ 'utility.row_cols': 'Columnas por fila',
122
+ 'badge.row_cols': '{count} por fila',
123
+ 'badge.row_cols_auto': 'Tan anchas como su contenido',
124
+ 'utility.default': 'Por defecto',
125
+ 'utility.inherit': 'Hereda: {value} (de {breakpoint})',
126
+ 'utility.varies': 'Cambia en {breakpoints}; elegir aquí lo sustituye',
127
+ 'utility.visibility': 'Visibilidad',
128
+ 'utility.visibility_hidden': 'Oculto',
129
+ 'utility.visibility_shown': 'Visible',
130
+ 'tool.hide_in_view': 'Ocultar en esta vista',
131
+ 'tool.show_in_view': 'Mostrar en esta vista',
132
+ 'badge.hidden_in': 'Oculto en {breakpoints}',
133
+ 'utility.order': 'Orden',
134
+ 'utility.order_first': 'Primero',
135
+ 'utility.order_last': 'Último',
136
+ 'tool.order_earlier': 'Antes en esta vista',
137
+ 'tool.order_later': 'Después en esta vista',
138
+ 'badge.order': 'Orden: {value}',
139
+ 'utility.justify_content': 'Justificar columnas',
140
+ 'utility.align_items': 'Alinear columnas',
141
+ 'utility.align_self': 'Alinearse',
142
+ 'utility.gutters': 'Espaciado entre columnas',
143
+ 'utility.gutters_x': 'Espaciado horizontal',
144
+ 'utility.gutters_y': 'Espaciado vertical',
145
+ 'utility.padding': 'Relleno',
146
+ 'utility.margin': 'Margen',
147
+ 'utility.side_all': 'Todos los lados',
148
+ 'utility.side_x': 'Izquierda y derecha',
149
+ 'utility.side_y': 'Arriba y abajo',
150
+ 'utility.side_t': 'Arriba',
151
+ 'utility.side_b': 'Abajo',
152
+ 'utility.side_s': 'Inicio',
153
+ 'utility.side_e': 'Fin',
154
+ 'utility.text_align': 'Alineación del texto',
155
+ 'utility.text_start': 'Inicio',
156
+ 'utility.text_center': 'Centro',
157
+ 'utility.text_end': 'Fin',
158
+ 'utility.float': 'Flotar',
159
+ 'utility.float_start': 'Inicio',
160
+ 'utility.float_end': 'Fin',
161
+ 'utility.float_none': 'Ninguno',
162
+ 'utility.spacing_gutter': 'El relleno lateral de una columna es su espaciado: cambiarlo cambia el espacio entre columnas',
163
+ 'error.sortable_missing': '¡SortableJS no está disponible! Asegúrate de haber cargado el archivo js de Sortable; sin él no se puede arrastrar.',
164
+ 'warning.setting_removed': 'El ajuste {setting} se eliminó en la 4.0. Usa {replacement} en su lugar.',
165
+ 'warning.already_editing': 'Este elemento ya tiene un editor: se devuelve ese, con las opciones con las que se creó.',
166
+ 'warning.destroyed': 'Se ha llamado a {method}() en un editor destruido, y no hace nada.',
167
+ 'warning.duplicate_build': 'grideditor.js se ha cargado dos veces: se mantiene el primer GridEditor.',
168
+ 'warning.plugin_6x': 'El plugin "{name}" está escrito para grid-editor 6 y no se carga. Desde la 7.0 los plugins se registran en GridEditor: consulta UPGRADING.md.',
169
+ 'warning.adapter_no_jquery': 'grideditor.jquery.js necesita jQuery 4 y la página no tiene jQuery: la API de jQuery no está disponible.',
170
+ 'warning.oninit_removed': 'La opción oninit de tinyMCE se eliminó en la 7.0 y se ignora: usa init_instance_callback.',
171
+ 'error.tinymce_missing': '¡tinyMCE no está disponible! Asegúrate de haber cargado el archivo js de tinyMCE.',
172
+ 'error.ckeditor_missing': '¡CKEditor no está disponible! Asegúrate de haber cargado el archivo js de CKEditor.',
173
+ 'error.codemirror_missing': '¡CodeMirror no está disponible! Asegúrate de haber cargado el archivo js de CodeMirror; sin él el código se edita en un textarea normal.',
174
+ 'error.summernote_missing': '¡Summernote no está disponible! Asegúrate de haber cargado jQuery y el archivo js de Summernote.',
175
+ };
168
176
 
169
- })(jQuery);
@@ -5,68 +5,85 @@
5
5
  * an accordion. What it can ask the editor for is the handle its factory is
6
6
  * called with, described in docs/plugins.md.
7
7
  *
8
- * <script src="dist/jquery.grideditor.min.js"></script>
8
+ * <script src="dist/grideditor.min.js"></script>
9
9
  * <script src="dist/plugins/grideditor.accordion.min.js"></script>
10
10
  */
11
- (function($) {
11
+ import { GridEditor } from '../grideditor.js';
12
+ import * as dom from '../dom.js';
12
13
 
13
- $.extend($.fn.gridEditor.locales.en, {
14
+ Object.assign(GridEditor.locales.en, {
14
15
  'container.add_accordion': 'Accordion',
15
16
  'container.add_accordion_item': 'Add item',
16
17
  'container.accordion_label': 'Item {number}',
17
18
  'confirm.delete_accordion_item': 'Delete this item and everything in it?',
18
19
  });
19
20
 
20
- $.fn.gridEditor.containers.accordion = function(ge) {
21
+ GridEditor.containers.accordion = function(ge) {
22
+
23
+ // The buttons whose clicks the editor answers itself, bound once each
24
+ var answered = new WeakSet();
25
+
26
+ function collapseOf(item) {
27
+ return dom.child(item, '.accordion-collapse');
28
+ }
21
29
 
22
30
  function staysOpen(container, ignore) {
23
- var items = container.find('> .accordion > .accordion-item > .accordion-collapse');
31
+ var items = dom.all(container, ':scope > .accordion > .accordion-item > .accordion-collapse');
24
32
 
25
- if (ignore) { items = items.not(ignore.find('> .accordion-collapse')); }
33
+ if (ignore) {
34
+ var ignored = collapseOf(ignore);
35
+ items = items.filter(function(collapse) { return collapse !== ignored; });
36
+ }
26
37
 
27
- return items.length > 0 && !items.filter('[data-bs-parent]').length;
38
+ return items.length > 0 && !items.filter(function(collapse) {
39
+ return collapse.hasAttribute('data-bs-parent');
40
+ }).length;
28
41
  }
29
42
 
30
43
  function addAccordionItemTo(container, options) {
31
44
  options = options || {};
32
45
 
33
- var accordion = container.find('> .accordion');
46
+ var accordion = dom.child(container, '.accordion');
34
47
  var id = ge.containerId('acc-item');
35
- var number = accordion.children('.accordion-item').length + 1;
48
+ var number = dom.children(accordion, '.accordion-item').length + 1;
36
49
  var open = options.open === undefined ? number === 1 : !!options.open;
37
50
  var stayOpen = options.stay_open === undefined ? staysOpen(container) : !!options.stay_open;
38
51
 
39
- var item = $('<div class="accordion-item ge-accordion-item" />').appendTo(accordion);
40
-
41
- $('<h2 class="accordion-header" />')
42
- .append($('<button class="accordion-button" type="button" data-bs-toggle="collapse" />')
43
- .attr('data-bs-target', '#' + id)
44
- .attr('aria-expanded', open ? 'true' : 'false')
45
- .toggleClass('collapsed', !open)
46
- .append($('<span class="ge-pane-label" />')
47
- .text(options.label || ge.t('container.accordion_label', { number: number }))))
48
- .appendTo(item)
49
- ;
50
-
51
- var collapse = $('<div class="accordion-collapse collapse" />')
52
- .attr('id', id)
53
- .attr('data-ge-open', open ? 'true' : 'false')
54
- .toggleClass('show', open)
55
- .appendTo(item)
56
- ;
57
-
58
- if (!stayOpen) { collapse.attr('data-bs-parent', '#' + accordion.attr('id')); }
59
-
60
- return $('<div class="accordion-body" />').append(ge.defaultRegion()).appendTo(collapse);
52
+ var item = accordion.appendChild(dom.element('div', { 'class': 'accordion-item ge-accordion-item' }));
53
+
54
+ var header = item.appendChild(dom.element('h2', { 'class': 'accordion-header' }));
55
+ var button = header.appendChild(dom.element('button', {
56
+ 'class': 'accordion-button',
57
+ type: 'button',
58
+ 'data-bs-toggle': 'collapse',
59
+ 'data-bs-target': '#' + id,
60
+ 'aria-expanded': open ? 'true' : 'false',
61
+ }));
62
+ dom.toggleClass(button, 'collapsed', !open);
63
+ button.appendChild(dom.element('span', { 'class': 'ge-pane-label' },
64
+ options.label || ge.t('container.accordion_label', { number: number })));
65
+
66
+ var collapse = item.appendChild(dom.element('div', {
67
+ 'class': 'accordion-collapse collapse',
68
+ id: id,
69
+ 'data-ge-open': open ? 'true' : 'false',
70
+ }));
71
+ dom.toggleClass(collapse, 'show', open);
72
+
73
+ if (!stayOpen) { collapse.setAttribute('data-bs-parent', '#' + accordion.getAttribute('id')); }
74
+
75
+ var body = collapse.appendChild(dom.element('div', { 'class': 'accordion-body' }));
76
+ body.appendChild(ge.defaultRegion());
77
+ return body;
61
78
  }
62
79
 
63
80
  function toggleAccordionItem(container, item) {
64
- var collapse = item.find('> .accordion-collapse');
65
- var opening = collapse.attr('data-ge-open') !== 'true';
81
+ var collapse = collapseOf(item);
82
+ var opening = collapse.getAttribute('data-ge-open') !== 'true';
66
83
 
67
84
  if (opening && !staysOpen(container)) {
68
- container.find('> .accordion > .accordion-item').not(item).each(function() {
69
- setAccordionItemOpen($(this), false);
85
+ dom.all(container, ':scope > .accordion > .accordion-item').forEach(function(other) {
86
+ if (other !== item) { setAccordionItemOpen(other, false); }
70
87
  });
71
88
  }
72
89
 
@@ -74,26 +91,29 @@ $.fn.gridEditor.containers.accordion = function(ge) {
74
91
  }
75
92
 
76
93
  function setAccordionItemOpen(item, open) {
77
- item.find('> .accordion-collapse')
78
- .attr('data-ge-open', open ? 'true' : 'false')
79
- .toggleClass('show', open)
80
- ;
81
- item.find('> .accordion-header .accordion-button')
82
- .toggleClass('collapsed', !open)
83
- .attr('aria-expanded', open ? 'true' : 'false')
84
- ;
94
+ var collapse = collapseOf(item);
95
+ if (collapse) {
96
+ collapse.setAttribute('data-ge-open', open ? 'true' : 'false');
97
+ dom.toggleClass(collapse, 'show', open);
98
+ }
99
+
100
+ dom.all(item, ':scope > .accordion-header .accordion-button').forEach(function(button) {
101
+ dom.toggleClass(button, 'collapsed', !open);
102
+ button.setAttribute('aria-expanded', open ? 'true' : 'false');
103
+ });
85
104
  }
86
105
 
87
106
  function reparentAccordionItem(container, item) {
88
107
  var accordion = item.closest('.accordion');
89
- var collapse = item.find('> .accordion-collapse');
108
+ var collapse = collapseOf(item);
109
+ if (!collapse) { return; }
90
110
 
91
111
  // The item that just arrived still carries the parent it had
92
112
  // where it came from, so it is not asked what this accordion does
93
113
  if (staysOpen(container, item)) {
94
- collapse.removeAttr('data-bs-parent');
114
+ collapse.removeAttribute('data-bs-parent');
95
115
  } else {
96
- collapse.attr('data-bs-parent', '#' + accordion.attr('id'));
116
+ collapse.setAttribute('data-bs-parent', '#' + accordion.getAttribute('id'));
97
117
  }
98
118
  }
99
119
 
@@ -102,7 +122,7 @@ $.fn.gridEditor.containers.accordion = function(ge) {
102
122
 
103
123
  // Items sort within their accordion and into any other one
104
124
  onSortable: function(sortable) {
105
- sortable(ge.canvas.find('.ge-container-accordion > .accordion'), {
125
+ sortable(dom.all(ge.canvas, '.ge-container-accordion > .accordion'), {
106
126
  draggable: '.ge-accordion-item',
107
127
  group: 'accordion',
108
128
  });
@@ -111,14 +131,11 @@ $.fn.gridEditor.containers.accordion = function(ge) {
111
131
  paneKind: 'accordion-item',
112
132
 
113
133
  create: function(options) {
114
- var container = $('<div />').attr('data-ge-container', 'accordion');
134
+ var container = dom.element('div', { 'data-ge-container': 'accordion' });
115
135
  var labels = options.labels || [];
116
136
  var count = options.items || labels.length || 2;
117
137
 
118
- $('<div class="accordion" />')
119
- .attr('id', ge.containerId('accordion'))
120
- .appendTo(container)
121
- ;
138
+ container.appendChild(dom.element('div', { 'class': 'accordion', id: ge.containerId('accordion') }));
122
139
 
123
140
  for (var i = 0; i < count; i++) {
124
141
  addAccordionItemTo(container, {
@@ -134,39 +151,42 @@ $.fn.gridEditor.containers.accordion = function(ge) {
134
151
  addPane: addAccordionItemTo,
135
152
 
136
153
  mark: function(container) {
137
- container.find('> .accordion > .accordion-item').each(function() {
138
- var item = $(this).addClass('ge-accordion-item');
139
- var collapse = item.find('> .accordion-collapse');
154
+ dom.all(container, ':scope > .accordion > .accordion-item').forEach(function(item) {
155
+ dom.addClass(item, 'ge-accordion-item');
156
+ var collapse = collapseOf(item);
140
157
 
141
158
  // What the author wanted, before Bootstrap's own
142
159
  // toggles get a chance to change it while editing.
143
160
  // Every item is shown while editing (the stylesheet
144
161
  // does that), so this is the only record of it.
145
- if (collapse.attr('data-ge-open') === undefined) {
146
- collapse.attr('data-ge-open', collapse.hasClass('show') ? 'true' : 'false');
162
+ if (collapse && !collapse.hasAttribute('data-ge-open')) {
163
+ collapse.setAttribute('data-ge-open', dom.hasClass(collapse, 'show') ? 'true' : 'false');
147
164
  }
148
165
 
149
- var button = item.find('> .accordion-header .accordion-button');
166
+ var button = dom.one(item, ':scope > .accordion-header .accordion-button');
150
167
 
151
- // Bootstrap's collapse stays out of it, and the editor
152
- // answers the click itself
153
- ge.suspendToggles(button);
154
- ge.makeLabelEditable(ge.labelIn(button));
168
+ if (button) {
169
+ // Bootstrap's collapse stays out of it, and the editor
170
+ // answers the click itself
171
+ ge.suspendToggles(button);
172
+ ge.makeLabelEditable(ge.labelIn(button));
155
173
 
156
- if (!button.data('ge-toggles')) {
157
- button.data('ge-toggles', true).on('click', function(e) {
158
- if (ge.labelIn(button).attr('contenteditable') === 'true') { return; }
174
+ if (!answered.has(button)) {
175
+ answered.add(button);
176
+ button.addEventListener('click', function(e) {
177
+ if (ge.labelIn(button).getAttribute('contenteditable') === 'true') { return; }
159
178
 
160
- e.preventDefault();
161
- toggleAccordionItem(container, item);
162
- });
179
+ e.preventDefault();
180
+ toggleAccordionItem(container, item);
181
+ });
182
+ }
163
183
  }
164
184
 
165
- if (item.find('> .ge-tools-drawer').length) { return; }
185
+ if (dom.child(item, '.ge-tools-drawer')) { return; }
166
186
 
167
187
  ge.createPaneControls(item, 'accordion-item', ge.settings.accordion_tools,
168
188
  ge.t('confirm.delete_accordion_item'), function(removed) {
169
- item.slideUp(200, removed);
189
+ dom.slideUp(item, 200, removed);
170
190
  });
171
191
  });
172
192
  },
@@ -174,13 +194,15 @@ $.fn.gridEditor.containers.accordion = function(ge) {
174
194
  unmark: function(container) {
175
195
  ge.resumeToggles(container);
176
196
 
177
- // What the ge.canvas was showing is what the page ships
178
- container.find('> .accordion > .accordion-item').each(function() {
179
- setAccordionItemOpen($(this),
180
- $(this).find('> .accordion-collapse').attr('data-ge-open') === 'true');
197
+ // What the canvas was showing is what the page ships
198
+ dom.all(container, ':scope > .accordion > .accordion-item').forEach(function(item) {
199
+ var collapse = collapseOf(item);
200
+ setAccordionItemOpen(item, !!collapse && collapse.getAttribute('data-ge-open') === 'true');
181
201
  });
182
202
 
183
- container.find('.ge-accordion-item').removeClass('ge-accordion-item');
203
+ dom.all(container, '.ge-accordion-item').forEach(function(item) {
204
+ dom.removeClass(item, 'ge-accordion-item');
205
+ });
184
206
  ge.unwrapLabels(container);
185
207
  },
186
208
 
@@ -189,5 +211,3 @@ $.fn.gridEditor.containers.accordion = function(ge) {
189
211
  },
190
212
  };
191
213
  };
192
-
193
- })(jQuery);