@yuneta/gobj-ui 5.7.0 → 5.7.1

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.
@@ -6013,14 +6013,20 @@ function isEventSet(table, event) {
6013
6013
  function set_changed_stated(gobj, changed) {
6014
6014
  let $container = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "$container");
6015
6015
  let $form = $container.querySelector("form");
6016
+ const enable = ($btn, on, color) => {
6017
+ if (!$btn) return;
6018
+ if (on) $btn.removeAttribute("disabled");
6019
+ else $btn.setAttribute("disabled", true);
6020
+ const $i = $btn.querySelector("span i");
6021
+ if ($i) $i.style.color = color;
6022
+ };
6023
+ const OFF_COLOR = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
6016
6024
  let $button_save = $container.querySelector(".button-save");
6017
6025
  let $button_undo = $container.querySelector(".button-undo");
6018
6026
  if (changed) {
6019
6027
  (0, _yuneta_gobj_js.gobj_write_bool_attr)(gobj, "changes", true);
6020
- $button_save.removeAttribute("disabled");
6021
- $button_undo.removeAttribute("disabled");
6022
- $button_save.querySelector("span i").style.color = "MediumSeaGreen";
6023
- $button_undo.querySelector("span i").style.color = "Magenta";
6028
+ enable($button_save, true, "MediumSeaGreen");
6029
+ enable($button_undo, true, "Magenta");
6024
6030
  $form.querySelectorAll(".yui-tabulator-table").forEach(($table) => {
6025
6031
  if (isEventSet($table.tabulator, "dataChanged")) $table.tabulator.off("dataChanged");
6026
6032
  $table.querySelectorAll(".yui-tabulator-table-nested").forEach(($table_nested) => {
@@ -6029,10 +6035,8 @@ function set_changed_stated(gobj, changed) {
6029
6035
  });
6030
6036
  } else {
6031
6037
  (0, _yuneta_gobj_js.gobj_write_bool_attr)(gobj, "changes", false);
6032
- $button_save.setAttribute("disabled", true);
6033
- $button_undo.setAttribute("disabled", true);
6034
- $button_save.querySelector("span i").style.color = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
6035
- $button_undo.querySelector("span i").style.color = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
6038
+ enable($button_save, false, OFF_COLOR);
6039
+ enable($button_undo, false, OFF_COLOR);
6036
6040
  setTimeout(function() {
6037
6041
  $form.querySelectorAll(".yui-tabulator-table").forEach(($table) => {
6038
6042
  if (isEventSet($table.tabulator, "dataChanged")) $table.tabulator.off("dataChanged");
@@ -6008,14 +6008,20 @@ function isEventSet(table, event) {
6008
6008
  function set_changed_stated(gobj, changed) {
6009
6009
  let $container = gobj_read_attr(gobj, "$container");
6010
6010
  let $form = $container.querySelector("form");
6011
+ const enable = ($btn, on, color) => {
6012
+ if (!$btn) return;
6013
+ if (on) $btn.removeAttribute("disabled");
6014
+ else $btn.setAttribute("disabled", true);
6015
+ const $i = $btn.querySelector("span i");
6016
+ if ($i) $i.style.color = color;
6017
+ };
6018
+ const OFF_COLOR = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
6011
6019
  let $button_save = $container.querySelector(".button-save");
6012
6020
  let $button_undo = $container.querySelector(".button-undo");
6013
6021
  if (changed) {
6014
6022
  gobj_write_bool_attr(gobj, "changes", true);
6015
- $button_save.removeAttribute("disabled");
6016
- $button_undo.removeAttribute("disabled");
6017
- $button_save.querySelector("span i").style.color = "MediumSeaGreen";
6018
- $button_undo.querySelector("span i").style.color = "Magenta";
6023
+ enable($button_save, true, "MediumSeaGreen");
6024
+ enable($button_undo, true, "Magenta");
6019
6025
  $form.querySelectorAll(".yui-tabulator-table").forEach(($table) => {
6020
6026
  if (isEventSet($table.tabulator, "dataChanged")) $table.tabulator.off("dataChanged");
6021
6027
  $table.querySelectorAll(".yui-tabulator-table-nested").forEach(($table_nested) => {
@@ -6024,10 +6030,8 @@ function set_changed_stated(gobj, changed) {
6024
6030
  });
6025
6031
  } else {
6026
6032
  gobj_write_bool_attr(gobj, "changes", false);
6027
- $button_save.setAttribute("disabled", true);
6028
- $button_undo.setAttribute("disabled", true);
6029
- $button_save.querySelector("span i").style.color = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
6030
- $button_undo.querySelector("span i").style.color = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
6033
+ enable($button_save, false, OFF_COLOR);
6034
+ enable($button_undo, false, OFF_COLOR);
6031
6035
  setTimeout(function() {
6032
6036
  $form.querySelectorAll(".yui-tabulator-table").forEach(($table) => {
6033
6037
  if (isEventSet($table.tabulator, "dataChanged")) $table.tabulator.off("dataChanged");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuneta/gobj-ui",
3
- "version": "5.7.0",
3
+ "version": "5.7.1",
4
4
  "type": "module",
5
5
  "main": "dist/gobj-ui.cjs.js",
6
6
  "module": "dist/gobj-ui.es.js",
package/src/c_yui_form.js CHANGED
@@ -219,6 +219,29 @@ function set_changed_stated(gobj, changed)
219
219
  let $container = gobj_read_attr(gobj, "$container");
220
220
  let $form = $container.querySelector('form');
221
221
 
222
+ /*
223
+ * Los dos pueden NO estar: desde que la botonera es configurable
224
+ * (`toolbar`), un dialogo de una sola accion pide ["save"] y aqui no
225
+ * hay undo que habilitar. Antes se daban por presentes y quitar uno
226
+ * reventaba con "can't access property setAttribute, a is null" al
227
+ * primer cambio en el formulario.
228
+ */
229
+ const enable = ($btn, on, color) => {
230
+ if(!$btn) {
231
+ return;
232
+ }
233
+ if(on) {
234
+ $btn.removeAttribute("disabled");
235
+ } else {
236
+ $btn.setAttribute("disabled", true);
237
+ }
238
+ const $i = $btn.querySelector('span i');
239
+ if($i) {
240
+ $i.style.color = color;
241
+ }
242
+ };
243
+ const OFF_COLOR = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
244
+
222
245
  let $button_save = $container.querySelector('.button-save');
223
246
  let $button_undo = $container.querySelector('.button-undo');
224
247
 
@@ -228,11 +251,8 @@ function set_changed_stated(gobj, changed)
228
251
  */
229
252
  gobj_write_bool_attr(gobj, "changes", true);
230
253
 
231
- $button_save.removeAttribute("disabled");
232
- $button_undo.removeAttribute("disabled");
233
-
234
- $button_save.querySelector('span i').style.color = "MediumSeaGreen";
235
- $button_undo.querySelector('span i').style.color = "Magenta";
254
+ enable($button_save, true, "MediumSeaGreen");
255
+ enable($button_undo, true, "Magenta");
236
256
 
237
257
  $form.querySelectorAll('.yui-tabulator-table').forEach($table => {
238
258
  if(isEventSet($table.tabulator, "dataChanged")) {
@@ -252,11 +272,8 @@ function set_changed_stated(gobj, changed)
252
272
  */
253
273
  gobj_write_bool_attr(gobj, "changes", false);
254
274
 
255
- $button_save.setAttribute("disabled", true);
256
- $button_undo.setAttribute("disabled", true);
257
-
258
- $button_save.querySelector('span i').style.color = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
259
- $button_undo.querySelector('span i').style.color = "hsl(var(--bulma-button-h), var(--bulma-button-s), var(--bulma-button-color-l))";
275
+ enable($button_save, false, OFF_COLOR);
276
+ enable($button_undo, false, OFF_COLOR);
260
277
 
261
278
  // TODO improve
262
279
  setTimeout(function() {