@gisce/react-ooui 0.9.3 → 0.9.6

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,gDAA+C;AAwE7C,uFAxEO,eAAM,OAwEP;AAvER,4CAA2C;AAwEzC,qFAxEO,WAAI,OAwEP;AAvEN,sDAAqD;AAwEnD,0FAxEO,qBAAS,OAwEP;AAvEX,kDAAiD;AAwE/C,wFAxEO,iBAAO,OAwEP;AAvET,6DAA4D;AAwE1D,yFAxEO,mBAAQ,OAwEP;AAvEV,6DAA4D;AAqG1D,yFArGO,mBAAQ,OAqGP;AApGV,8DAAwC;AAuEtC,eAvEK,cAAI,CAuEL;AAtEN,8CAA6C;AA2E3C,sFA3EO,aAAK,OA2EP;AA1EP,0DAAyD;AAyHvD,4FAzHO,yBAAW,OAyHP;AAxHb,sDAAqD;AA0EnD,0FA1EO,qBAAS,OA0EP;AAzEX,kDAAiD;AA0E/C,wFA1EO,iBAAO,OA0EP;AAzET,qEAA+C;AAmE7C,gBAnEK,eAAK,CAmEL;AAlEP,2EAAqD;AAqEnD,mBArEK,kBAAQ,CAqEL;AApEV,8DAAwC;AAmEtC,eAnEK,cAAI,CAmEL;AAlEN,+DAAyC;AAuEvC,gBAvEK,eAAK,CAuEL;AAtEP,6DAAuC;AAuErC,eAvEK,cAAI,CAuEL;AAtEN,sDAAqD;AA0EnD,0FA1EO,qBAAS,OA0EP;AAzEX,2FAAqE;AA8DnE,uBA9DK,sBAAY,CA8DL;AA7Dd,0EAAoD;AAyElD,qBAzEK,oBAAU,CAyEL;AAxEZ,wDAAuD;AAqFrD,0FArFO,qBAAS,OAqFP;AApFX,4DAA2D;AAqFzD,4FArFO,yBAAW,OAqFP;AApFb,6DAAuC;AAwFrC,eAxFK,cAAI,CAwFL;AAvFN,qEAA+C;AAwF7C,mBAxFK,kBAAQ,CAwFL;AAnFV,sDAAqD;AAoFnD,0FApFO,qBAAS,OAoFP;AAnFX,gDAA+C;AAoF7C,uFApFO,eAAM,OAoFP;AAnFR,oEAA8C;AAoF5C,qBApFK,oBAAU,CAoFL;AAnFZ,4EAAkD;AAuFhD,oBAvFK,uBAAS,CAuFL;AAtFX,0CAAyC;AA4FvC,oFA5FO,SAAG,OA4FP;AA3FL,8CAA6C;AA4F3C,sFA5FO,aAAK,OA4FP;AA3FP,8CAA6C;AA4F3C,sFA5FO,aAAK,OA4FP;AA3FP,qEAAmD;AA6FjD,4BA7FK,uBAAiB,CA6FL;AA5FnB,kFAA4D;AAgG1D,oBAhGK,mBAAS,CAgGL;AA/FX,+DAGuC;AA8FrC,kGAhGA,iCAAiB,OAgGA;AACjB,8FAhGA,6BAAa,OAgGA;AA9Ff,uEAAsE;AA4FpE,+FA5FO,+BAAc,OA4FP;AApEhB,4EAAsD;AAgCpD,6BAhCK,4BAAkB,CAgCL;AA/BpB,8DAAwC;AAuDtC,mBAvDK,kBAAQ,CAuDL;AAtDV,oEAA8C;AAuD5C,sBAvDK,qBAAW,CAuDL;AAtDb,gFAA0D;AAuDxD,4BAvDK,2BAAiB,CAuDL;AAtDnB,oFAA+D;AA0D7D,8BA1DK,4BAAmB,CA0DL;AAzDrB,yEAAmD;AA6DjD,0BA7DK,yBAAe,CA6DL"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,gDAA+C;AAyE7C,uFAzEO,eAAM,OAyEP;AAxER,4CAA2C;AAyEzC,qFAzEO,WAAI,OAyEP;AAxEN,sDAAqD;AAyEnD,0FAzEO,qBAAS,OAyEP;AAxEX,kDAAiD;AAyE/C,wFAzEO,iBAAO,OAyEP;AAxET,6DAA4D;AAyE1D,yFAzEO,mBAAQ,OAyEP;AAxEV,6DAA4D;AAsG1D,yFAtGO,mBAAQ,OAsGP;AArGV,8DAAwC;AAwEtC,eAxEK,cAAI,CAwEL;AAvEN,8CAA6C;AA4E3C,sFA5EO,aAAK,OA4EP;AA3EP,0DAAyD;AA0HvD,4FA1HO,yBAAW,OA0HP;AAzHb,sDAAqD;AA2EnD,0FA3EO,qBAAS,OA2EP;AA1EX,kDAAiD;AA2E/C,wFA3EO,iBAAO,OA2EP;AA1ET,qEAA+C;AAoE7C,gBApEK,eAAK,CAoEL;AAnEP,2EAAqD;AAsEnD,mBAtEK,kBAAQ,CAsEL;AArEV,8DAAwC;AAoEtC,eApEK,cAAI,CAoEL;AAnEN,+DAAyC;AAwEvC,gBAxEK,eAAK,CAwEL;AAvEP,6DAAuC;AAwErC,eAxEK,cAAI,CAwEL;AAvEN,sDAAqD;AA2EnD,0FA3EO,qBAAS,OA2EP;AA1EX,2FAAqE;AA+DnE,uBA/DK,sBAAY,CA+DL;AA9Dd,0EAAoD;AA0ElD,qBA1EK,oBAAU,CA0EL;AAzEZ,wDAAuD;AAsFrD,0FAtFO,qBAAS,OAsFP;AArFX,4DAA2D;AAsFzD,4FAtFO,yBAAW,OAsFP;AArFb,6DAAuC;AAyFrC,eAzFK,cAAI,CAyFL;AAxFN,qEAA+C;AAyF7C,mBAzFK,kBAAQ,CAyFL;AApFV,sDAAqD;AAqFnD,0FArFO,qBAAS,OAqFP;AApFX,gDAA+C;AAqF7C,uFArFO,eAAM,OAqFP;AApFR,oEAA8C;AAqF5C,qBArFK,oBAAU,CAqFL;AApFZ,4EAAkD;AAwFhD,oBAxFK,uBAAS,CAwFL;AAvFX,0CAAyC;AA6FvC,oFA7FO,SAAG,OA6FP;AA5FL,8CAA6C;AA6F3C,sFA7FO,aAAK,OA6FP;AA5FP,8CAA6C;AA6F3C,sFA7FO,aAAK,OA6FP;AA5FP,qEAAmD;AA8FjD,4BA9FK,uBAAiB,CA8FL;AA7FnB,kFAA4D;AAiG1D,oBAjGK,mBAAS,CAiGL;AAhGX,8CAA6C;AAoG3C,qFApGO,WAAI,OAoGP;AAnGN,+DAGuC;AA8FrC,kGAhGA,iCAAiB,OAgGA;AACjB,8FAhGA,6BAAa,OAgGA;AA9Ff,uEAAsE;AA4FpE,+FA5FO,+BAAc,OA4FP;AApEhB,4EAAsD;AAgCpD,6BAhCK,4BAAkB,CAgCL;AA/BpB,8DAAwC;AAuDtC,mBAvDK,kBAAQ,CAuDL;AAtDV,oEAA8C;AAuD5C,sBAvDK,qBAAW,CAuDL;AAtDb,gFAA0D;AAuDxD,4BAvDK,2BAAiB,CAuDL;AAtDnB,oFAA+D;AA0D7D,8BA1DK,4BAAmB,CA0DL;AAzDrB,yEAAmD;AA6DjD,0BA7DK,yBAAe,CA6DL"}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFactory.d.ts","sourceRoot":"","sources":["../../src/widgets/WidgetFactory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA+F1B,QAAA,MAAM,iBAAiB,UAAW,GAAG,+DAWpC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"WidgetFactory.d.ts","sourceRoot":"","sources":["../../src/widgets/WidgetFactory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAkG1B,QAAA,MAAM,iBAAiB,UAAW,GAAG,+DAWpC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -10,6 +10,7 @@ var Image_1 = require("./base/Image");
10
10
  var FiberGrid_1 = require("./custom/FiberGrid");
11
11
  var Timeline_1 = require("./custom/Timeline");
12
12
  var Indicator_1 = require("./custom/Indicator");
13
+ var Tags_1 = require("./custom/Tags");
13
14
  var getWidgetType = function (type) {
14
15
  switch (type) {
15
16
  case "form":
@@ -68,6 +69,8 @@ var getWidgetType = function (type) {
68
69
  return Timeline_1.Timeline;
69
70
  case "indicator":
70
71
  return Indicator_1.Indicator;
72
+ case "tags":
73
+ return Tags_1.Tags;
71
74
  default:
72
75
  return undefined;
73
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetFactory.js","sourceRoot":"","sources":["../../src/widgets/WidgetFactory.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAE1B,iCAwBiB;AACjB,sCAAqC;AACrC,gDAA+C;AAC/C,8CAA6C;AAC7C,gDAA8C;AAE9C,IAAM,aAAa,GAAG,UAAC,IAAY;IACjC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,cAAM,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,eAAO,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,eAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,mBAAW,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,gBAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,cAAM,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,KAAK;YACR,OAAO,WAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,YAAY;YACf,OAAO,iBAAS,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,qBAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,mBAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,qBAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC,CAAC;AAEF,IAAM,iBAAiB,GAAG,UAAC,KAAU;IAC3B,IAAA,IAAI,GAAK,KAAK,KAAV,CAAW;IACf,IAAA,IAAI,GAAuB,IAAI,KAA3B,CAA4B;IAExC,IAAM,WAAW,GAAQ,aAAa,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,eAAK,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC,CAAC;AAEO,8CAAiB"}
1
+ {"version":3,"file":"WidgetFactory.js","sourceRoot":"","sources":["../../src/widgets/WidgetFactory.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAE1B,iCAwBiB;AACjB,sCAAqC;AACrC,gDAA+C;AAC/C,8CAA6C;AAC7C,gDAA8C;AAC9C,sCAAqC;AAErC,IAAM,aAAa,GAAG,UAAC,IAAY;IACjC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,cAAM,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,eAAO,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,eAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,mBAAW,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,YAAI,CAAC;QACd,KAAK,UAAU;YACb,OAAO,gBAAQ,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,gBAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,iBAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,cAAM,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,KAAK;YACR,OAAO,WAAG,CAAC;QACb,KAAK,OAAO;YACV,OAAO,aAAK,CAAC;QACf,KAAK,YAAY;YACf,OAAO,iBAAS,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,qBAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,mBAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,qBAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,WAAI,CAAC;QACd;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC,CAAC;AAEF,IAAM,iBAAiB,GAAG,UAAC,KAAU;IAC3B,IAAA,IAAI,GAAK,KAAK,KAAV,CAAW;IACf,IAAA,IAAI,GAAuB,IAAI,KAA3B,CAA4B;IAExC,IAAM,WAAW,GAAQ,aAAa,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,eAAK,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC,CAAC;AAEO,8CAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/widgets/containers/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAiB,MAAM,aAAa,CAAC;AAYxE,aAAK,KAAK,GAAG;IACX,SAAS,EAAE,aAAa,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,QAAA,MAAM,SAAS,UAAW,KAAK,KAAG,MAAM,YA+EvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/widgets/containers/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAiB,MAAM,aAAa,CAAC;AAYxE,aAAK,KAAK,GAAG;IACX,SAAS,EAAE,aAAa,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,QAAA,MAAM,SAAS,UAAW,KAAK,KAAG,MAAM,YAgFvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -39,8 +39,9 @@ var Container = function (props) {
39
39
  row: rowWithoutInvisibleFields,
40
40
  numberOfColumns: columns,
41
41
  });
42
- var rowWithEmptiesToFit;
43
- if (i === 0) {
42
+ var rowWithEmptiesToFit = rowWithExpandedItems;
43
+ if (i === 0 ||
44
+ !(row.length === 1 && row.some(function (widget) { return widget.type === "group"; }))) {
44
45
  rowWithEmptiesToFit = containerHelper_1.fillRowWithEmptiesToFit({
45
46
  row: rowWithExpandedItems,
46
47
  numberOfColumns: columns,
@@ -48,7 +49,7 @@ var Container = function (props) {
48
49
  });
49
50
  firstRow = firstRow.concat(rowWithEmptiesToFit);
50
51
  }
51
- return (i === 0 ? rowWithEmptiesToFit : rowWithExpandedItems).map(function (item, j) {
52
+ return rowWithEmptiesToFit.map(function (item, j) {
52
53
  // We check if we have any label+field inside the container.
53
54
  // In this scenario, we must format the grid accordingly
54
55
  // Otherwise, the grid will divide uniformly
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../src/widgets/containers/Container.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,oCAAwE;AACxE,yDAA4D;AAE5D,6DAOmC;AAOnC,IAAM,SAAS,GAAG,UAAC,KAAY;IACrB,IAAA,SAAS,GAA0B,KAAK,UAA/B,EAAE,mBAAmB,GAAK,KAAK,oBAAV,CAAW;IACzC,IAAA,IAAI,GAAK,SAAS,KAAd,CAAe;IACrB,IAAA,OAAO,GAAK,SAAS,QAAd,CAAe;IAE5B,gDAAgD;IAChD,qDAAqD;IACrD,8BAA8B;IAC9B,IAAM,iBAAiB,GAAG,sCAAoB,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,iBAAiB,GAAG,OAAO,EAAE;QAC/B,OAAO,GAAG,iBAAiB,CAAC;KAC7B;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,QAAQ,GAAa,EAAE,CAAC;IAE5B,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAa,EAAE,CAAC;QACxC,IAAM,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,UAAC,MAAM;YAClD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAM,oBAAoB,GAAG,uCAAqB,CAAC;YACjD,GAAG,EAAE,yBAAyB;YAC9B,eAAe,EAAE,OAAO;SACzB,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,mBAAmB,GAAG,yCAAuB,CAAC;gBAC5C,GAAG,EAAE,oBAAoB;gBACzB,eAAe,EAAE,OAAO;gBACxB,mBAAmB,EAAE,mBAAmB;aACzC,CAAC,CAAC;YAEH,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;SACjD;QAED,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAC/D,UAAC,IAAY,EAAE,CAAS;YACtB,4DAA4D;YAC5D,wDAAwD;YACxD,4CAA4C;YAC5C,IAAI,IAAI,YAAY,YAAK,IAAK,IAAc,CAAC,aAAa,EAAE;gBAC1D,WAAW,GAAG,IAAI,CAAC;aACpB;YAED,IAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEvC,OAAO,CACL,uCACE,GAAG,EAAK,CAAC,CAAC,QAAQ,EAAE,SAAI,YAAY,CAAC,QAAQ,EAAI,EACjD,KAAK,wBACA,qCAAmB,CAAC,EAAE,IAAI,MAAA,EAAE,mBAAmB,qBAAA,EAAE,CAAC,KACrD,QAAQ,EAAE,CAAC,OAGZ,iCAAiB,CAAC;gBACjB,IAAI,EAAE,IAAI;gBACV,mBAAmB,qBAAA;aACpB,CAAC,CACE,CACP,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAM,eAAe,GACnB,IAAI,CAAC,MAAM,KAAK,CAAC;QACf,CAAC,CAAC,6CAA2B,CAAC,QAAQ,EAAE,OAAO,CAAC;QAChD,CAAC,CAAC,oCAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAM,SAAS,GAAG;QAChB,OAAO,EAAE,MAAM;QACf,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe;QACnE,GAAG,EAAE,MAAM;QACX,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,OAAO,uCAAK,KAAK,EAAE,SAAS,IAAG,OAAO,CAAO,CAAC;AAChD,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../src/widgets/containers/Container.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { Tags as TagsOoui } from "@gisce/ooui";
3
+ import { One2manyValue } from "../base/one2many/One2manyInput";
4
+ declare type TagsProps = {
5
+ ooui: TagsOoui;
6
+ };
7
+ declare type TagsInputProps = TagsProps & {
8
+ value?: One2manyValue;
9
+ onChange?: (value: One2manyValue) => void;
10
+ };
11
+ export declare const Tags: (props: TagsProps) => JSX.Element;
12
+ export declare const TagsInput: (props: TagsInputProps) => JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=Tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tags.d.ts","sourceRoot":"","sources":["../../../src/widgets/custom/Tags.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAgB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO7E,aAAK,SAAS,GAAG;IACf,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,aAAK,cAAc,GAAG,SAAS,GAAG;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,IAAI,UAAW,SAAS,gBAQpC,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,cAAc,gBAmE9C,CAAC"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
33
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
34
+ return new (P || (P = Promise))(function (resolve, reject) {
35
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
36
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
37
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
38
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
39
+ });
40
+ };
41
+ var __generator = (this && this.__generator) || function (thisArg, body) {
42
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
44
+ function verb(n) { return function (v) { return step([n, v]); }; }
45
+ function step(op) {
46
+ if (f) throw new TypeError("Generator is already executing.");
47
+ while (_) try {
48
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
49
+ if (y = 0, t) op = [op[0] & 2, t.value];
50
+ switch (op[0]) {
51
+ case 0: case 1: t = op; break;
52
+ case 4: _.label++; return { value: op[1], done: false };
53
+ case 5: _.label++; y = op[1]; op = [0]; continue;
54
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
55
+ default:
56
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
57
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
58
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
59
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
60
+ if (t[2]) _.ops.pop();
61
+ _.trys.pop(); continue;
62
+ }
63
+ op = body.call(thisArg, _);
64
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
65
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
+ }
67
+ };
68
+ var __importDefault = (this && this.__importDefault) || function (mod) {
69
+ return (mod && mod.__esModule) ? mod : { "default": mod };
70
+ };
71
+ Object.defineProperty(exports, "__esModule", { value: true });
72
+ exports.TagsInput = exports.Tags = void 0;
73
+ var react_1 = __importStar(require("react"));
74
+ var Field_1 = __importDefault(require("@/common/Field"));
75
+ var use_deep_compare_effect_1 = __importDefault(require("use-deep-compare-effect"));
76
+ var FormContext_1 = require("@/context/FormContext");
77
+ var antd_1 = require("antd");
78
+ var one2manyHelper_1 = require("@/helpers/one2manyHelper");
79
+ var formHelper_1 = require("@/helpers/formHelper");
80
+ var Tags = function (props) {
81
+ var ooui = props.ooui;
82
+ return (react_1.default.createElement(Field_1.default, __assign({ type: "array" }, props),
83
+ react_1.default.createElement(exports.TagsInput, { ooui: ooui })));
84
+ };
85
+ exports.Tags = Tags;
86
+ var TagsInput = function (props) {
87
+ var value = props.value, ooui = props.ooui, onChange = props.onChange;
88
+ var _a = (value || {}).items, items = _a === void 0 ? [] : _a;
89
+ var _b = react_1.useState(false), isLoading = _b[0], setIsLoading = _b[1];
90
+ var _c = react_1.useState(), error = _c[0], setError = _c[1];
91
+ var relation = ooui.relation, context = ooui.context, readOnly = ooui.readOnly, field = ooui.field;
92
+ var itemsToShow = items.filter(function (item) { return item.values && item.operation !== "pendingRemove"; });
93
+ var formContext = react_1.useContext(FormContext_1.FormContext);
94
+ var getContext = (formContext || {}).getContext;
95
+ use_deep_compare_effect_1.default(function () {
96
+ fetchData();
97
+ }, [items]);
98
+ var triggerChange = function (changedValue) {
99
+ onChange === null || onChange === void 0 ? void 0 : onChange({
100
+ items: changedValue,
101
+ });
102
+ };
103
+ function fetchData() {
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ var itemsWithValues, err_1;
106
+ return __generator(this, function (_a) {
107
+ switch (_a.label) {
108
+ case 0:
109
+ setIsLoading(true);
110
+ setError(undefined);
111
+ _a.label = 1;
112
+ case 1:
113
+ _a.trys.push([1, 3, 4, 5]);
114
+ return [4 /*yield*/, one2manyHelper_1.readObjectValues({
115
+ treeFields: [ooui.field],
116
+ formFields: [],
117
+ model: relation,
118
+ items: items,
119
+ context: __assign(__assign({}, getContext === null || getContext === void 0 ? void 0 : getContext()), context),
120
+ })];
121
+ case 2:
122
+ itemsWithValues = _a.sent();
123
+ triggerChange(itemsWithValues);
124
+ return [3 /*break*/, 5];
125
+ case 3:
126
+ err_1 = _a.sent();
127
+ setError(err_1);
128
+ return [3 /*break*/, 5];
129
+ case 4:
130
+ setIsLoading(false);
131
+ return [7 /*endfinally*/];
132
+ case 5: return [2 /*return*/];
133
+ }
134
+ });
135
+ });
136
+ }
137
+ if (error) {
138
+ return react_1.default.createElement(antd_1.Alert, { className: "mt-10", message: error, type: "error", banner: true });
139
+ }
140
+ if (isLoading) {
141
+ return react_1.default.createElement(antd_1.Spin, null);
142
+ }
143
+ return (react_1.default.createElement(react_1.default.Fragment, null,
144
+ react_1.default.createElement("div", { style: { padding: "1rem" } }, itemsToShow.map(function (item, index) {
145
+ var _a;
146
+ var value = (_a = item.values) === null || _a === void 0 ? void 0 : _a[field];
147
+ return (react_1.default.createElement(antd_1.Tag, { key: index, color: formHelper_1.colorFromString(value) }, value));
148
+ }))));
149
+ };
150
+ exports.TagsInput = TagsInput;
151
+ //# sourceMappingURL=Tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tags.js","sourceRoot":"","sources":["../../../src/widgets/custom/Tags.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gisce/react-ooui",
3
- "version": "0.9.3",
3
+ "version": "0.9.6",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@ant-design/charts": "^1.3.6",
27
- "@gisce/ooui": "^0.7.1",
27
+ "@gisce/ooui": "^0.7.2",
28
28
  "@gisce/react-formiga-table": "^0.3.0",
29
29
  "fiber-diagram": "github:gisce/fiber-diagram",
30
30
  "file-type": "^16.5.0",
@@ -223,3 +223,17 @@ export const transformPlainMany2Ones = ({
223
223
 
224
224
  return reformattedValues;
225
225
  };
226
+
227
+
228
+ export const colorFromString = (text: string) => {
229
+ let hash = 0;
230
+ for (let i = 0; i < text.length; i++) {
231
+ hash = text.charCodeAt(i) + ((hash << 5) - hash);
232
+ }
233
+ let hexColour = '#';
234
+ for (let i = 0; i < 3; i++) {
235
+ var value = (hash >> (i * 8)) & 0xFF;
236
+ hexColour += ('00' + value.toString(16)).slice(-2);
237
+ }
238
+ return hexColour;
239
+ }
package/src/index.ts CHANGED
@@ -34,6 +34,7 @@ import { Email } from "@/widgets/base/Email";
34
34
  import { Image } from "@/widgets/base/Image";
35
35
  import showConfirmDialog from "@/ui/ConfirmDialog";
36
36
  import Dashboard from "@/widgets/views/Dashboard/Dashboard";
37
+ import { Tags } from "@/widgets/custom/Tags";
37
38
  import {
38
39
  DashboardGridItem,
39
40
  DashboardGrid,
@@ -133,4 +134,5 @@ export {
133
134
  GraphIndicator,
134
135
  DashboardGridItem,
135
136
  DashboardGrid,
137
+ Tags,
136
138
  };
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+
3
+ import { TagsInput } from "../../widgets/custom/Tags";
4
+ import { Tags as TagsOoui } from "@gisce/ooui";
5
+ import "antd/dist/antd.css";
6
+ import LocaleProvider from "../../context/LocaleContext";
7
+ import { One2manyInput } from "../../widgets/base/one2many/One2manyInput";
8
+
9
+ export default {
10
+ title: "Components/Widgets/Custom/Tags",
11
+ };
12
+
13
+ export const Default = (): React.ReactElement => {
14
+ const ooui = new TagsOoui({
15
+ name: "button_field",
16
+ string: "Lorem ipsum",
17
+ field: "name"
18
+ });
19
+
20
+ return (
21
+ <LocaleProvider lang="en_US">
22
+ <TagsInput ooui={ooui} value={{items: [
23
+ {id: 1, operation: "original", values: {name: "test"}},
24
+ {id: 2, operation: "original", values: {name: "foo"}},
25
+ {id: 3, operation: "pendingRemove", values: {name: "remove"}}
26
+ ]}}
27
+ />
28
+ </LocaleProvider>
29
+ );
30
+ };
@@ -50,7 +50,7 @@ export default {
50
50
  },
51
51
  form: {
52
52
  arch:
53
- '<form string="CUPS">\n <notebook colspan="4">\n <page string="General">\n <field name="name" select="1" size="25"/>\n <field name="active" select="1"/>\n <field name="distribuidora_id" domain="[(\'supplier\',\'=\',True)]" context="{\'task\': \'test\'}" required="1" select="1"/>\n <field name="id_municipi" select="1"/>\n <field name="id_provincia"/>\n <field name="id_poblacio" select="1" domain="[(\'municipi_id.id\', \'=\', id_municipi)]"/>\n <field name="dp"/>\n <field name="direccio" select="1" colspan="4"/>\n <field name="polissa_polissa" select="1"/>\n <field name="polissa_comptador" select="1"/>\n <field name="polissa_potencia"/>\n <field name="potencia_adscrita" attrs="{\'readonly\':[(\'force_potencia_adscrita\',\'=\',0)]}"/>\n <field name="force_potencia_adscrita"/>\n <group colspan="4" string="Adreces">\n <notebook colspan="4">\n <page string="Principal">\n <separator string="Zona urbana" colspan="4"/>\n <field name="tv"/>\n <field name="nv" select="1"/>\n <field name="pnp" select="1"/>\n <field name="bq" select="1"/>\n <field name="es" select="1"/>\n <field name="pt" select="1"/>\n <field name="pu" select="1"/>\n <field name="aclarador" colspan="4" select="1"/>\n <separator string="Zona industrial" colspan="4"/>\n <field name="cpo" select="1"/>\n <field name="cpa" select="1"/>\n </page>\n <page string="Cadastre">\n <separator string="Zona urbana" colspan="4"/>\n <field name="catas_np"/>\n <field name="catas_nm"/>\n <field name="ref_catastral" select="1"/>\n <button type="object" name="update_dir_from_ref" string="Obtenir del Cadastre"/>\n <button type="object" name="delete_dir_ref" string="Eliminar dades del Cadastre" confirm="Està segur que vol eliminar les dades que s\'han obtingut del cadastre?"/>\n <field name="catas_ldt" colspan="4"/>\n <field name="catas_tv"/>\n <field name="catas_nv"/>\n <field name="catas_pnp"/>\n <field name="catas_bq"/>\n <field name="catas_es"/>\n <field name="catas_pt"/>\n <field name="catas_pu"/>\n <field name="catas_dp"/>\n <separator string="Zona industrial" colspan="4"/>\n <field name="catas_cpo"/>\n <field name="catas_cpa"/>\n <separator string="Sincronització amb el cadastre" colspan="4"/>\n <label colspan="2" string="Si disposa de la referencia cadastral pot copiar les dades del cadastre a l\'adreça principal mitjançant aquest botó"/>\n <button type="object" name="copy_to_alternative" string="Copiar a la principal"/>\n </page>\n <page string="Notes">\n <field name="notes" colspan="4" nolabel="1"/>\n </page>\n </notebook>\n </group>\n </page>\n <page string="Autoconsum">\n <field name="autoconsum_id" readonly="1" colspan="4"/>\n <field name="coef_repartiment" readonly="1" colspan="4"/>\n </page>\n <page string="Butlletins">\n <field name="butlletins" colspan="4" nolabel="1" context="{\'cups_id\': active_id}"/>\n </page>\n <page string="Històric d\'autoconsums">\n <field name="hist_autoconsum" nolabel="1" context="{\'default_cups_id\': active_id}" readonly="1"/>\n </page>\n <page string="Històric de pòlisses">\n <field name="polisses" nolabel="1" colspan="4">\n </field>\n </page>\n </notebook>\n </form>',
53
+ '<form string="CUPS">\n <notebook colspan="4">\n <page string="Corbes"> <group colspan="4"> <group string="Validada" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> <group string="Facturada" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> <group string="Autoconsumida" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> <group string="Generada Neta" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> <group string="Quart-Horària" colspan="2"> <field name="bq" string="Última corba"/> <field name="bq" string="Format"/> </group> </group> </page> <page string="General">\n <field name="name" select="1" size="25"/>\n <field name="active" select="1"/>\n <field name="distribuidora_id" domain="[(\'supplier\',\'=\',True)]" context="{\'task\': \'test\'}" required="1" select="1"/>\n <field name="id_municipi" select="1"/>\n <field name="id_provincia"/>\n <field name="id_poblacio" select="1" domain="[(\'municipi_id.id\', \'=\', id_municipi)]"/>\n <field name="dp"/>\n <field name="direccio" select="1" colspan="4"/>\n <field name="polissa_polissa" select="1"/>\n <field name="polissa_comptador" select="1"/>\n <field name="polissa_potencia"/>\n <field name="potencia_adscrita" attrs="{\'readonly\':[(\'force_potencia_adscrita\',\'=\',0)]}"/>\n <field name="force_potencia_adscrita"/>\n <group colspan="4" string="Adreces">\n <notebook colspan="4">\n <page string="Principal">\n <separator string="Zona urbana" colspan="4"/>\n <field name="tv"/>\n <field name="nv" select="1"/>\n <field name="pnp" select="1"/>\n <field name="bq" select="1"/>\n <field name="es" select="1"/>\n <field name="pt" select="1"/>\n <field name="pu" select="1"/>\n <field name="aclarador" colspan="4" select="1"/>\n <separator string="Zona industrial" colspan="4"/>\n <field name="cpo" select="1"/>\n <field name="cpa" select="1"/>\n </page>\n <page string="Cadastre">\n <separator string="Zona urbana" colspan="4"/>\n <field name="catas_np"/>\n <field name="catas_nm"/>\n <field name="ref_catastral" select="1"/>\n <button type="object" name="update_dir_from_ref" string="Obtenir del Cadastre"/>\n <button type="object" name="delete_dir_ref" string="Eliminar dades del Cadastre" confirm="Està segur que vol eliminar les dades que s\'han obtingut del cadastre?"/>\n <field name="catas_ldt" colspan="4"/>\n <field name="catas_tv"/>\n <field name="catas_nv"/>\n <field name="catas_pnp"/>\n <field name="catas_bq"/>\n <field name="catas_es"/>\n <field name="catas_pt"/>\n <field name="catas_pu"/>\n <field name="catas_dp"/>\n <separator string="Zona industrial" colspan="4"/>\n <field name="catas_cpo"/>\n <field name="catas_cpa"/>\n <separator string="Sincronització amb el cadastre" colspan="4"/>\n <label colspan="2" string="Si disposa de la referencia cadastral pot copiar les dades del cadastre a l\'adreça principal mitjançant aquest botó"/>\n <button type="object" name="copy_to_alternative" string="Copiar a la principal"/>\n </page>\n <page string="Notes">\n <field name="notes" colspan="4" nolabel="1"/>\n </page>\n </notebook>\n </group>\n </page>\n <page string="Autoconsum">\n <field name="autoconsum_id" readonly="1" colspan="4"/>\n <field name="coef_repartiment" readonly="1" colspan="4"/>\n </page>\n <page string="Butlletins">\n <field name="butlletins" colspan="4" nolabel="1" context="{\'cups_id\': active_id}"/>\n </page>\n <page string="Històric d\'autoconsums">\n <field name="hist_autoconsum" nolabel="1" context="{\'default_cups_id\': active_id}" readonly="1"/>\n </page>\n <page string="Històric de pòlisses">\n <field name="polisses" nolabel="1" colspan="4">\n </field>\n </page>\n </notebook>\n </form>',
54
54
  field_parent: false,
55
55
  fields: {
56
56
  aclarador: {
@@ -29,6 +29,7 @@ import { Image } from "./base/Image";
29
29
  import { FiberGrid } from "./custom/FiberGrid";
30
30
  import { Timeline } from "./custom/Timeline";
31
31
  import { Indicator} from "./custom/Indicator";
32
+ import { Tags } from "./custom/Tags";
32
33
 
33
34
  const getWidgetType = (type: string) => {
34
35
  switch (type) {
@@ -88,6 +89,8 @@ const getWidgetType = (type: string) => {
88
89
  return Timeline;
89
90
  case "indicator":
90
91
  return Indicator;
92
+ case "tags":
93
+ return Tags;
91
94
  default:
92
95
  return undefined;
93
96
  }
@@ -42,8 +42,11 @@ const Container = (props: Props): React.ReactElement => {
42
42
  numberOfColumns: columns,
43
43
  });
44
44
 
45
- let rowWithEmptiesToFit;
46
- if (i === 0) {
45
+ let rowWithEmptiesToFit = rowWithExpandedItems;
46
+ if (
47
+ i === 0 ||
48
+ !(row.length === 1 && row.some((widget) => widget.type === "group"))
49
+ ) {
47
50
  rowWithEmptiesToFit = fillRowWithEmptiesToFit({
48
51
  row: rowWithExpandedItems,
49
52
  numberOfColumns: columns,
@@ -53,33 +56,31 @@ const Container = (props: Props): React.ReactElement => {
53
56
  firstRow = firstRow.concat(rowWithEmptiesToFit);
54
57
  }
55
58
 
56
- return (i === 0 ? rowWithEmptiesToFit : rowWithExpandedItems).map(
57
- (item: Widget, j: number) => {
58
- // We check if we have any label+field inside the container.
59
- // In this scenario, we must format the grid accordingly
60
- // Otherwise, the grid will divide uniformly
61
- if (item instanceof Label && (item as Label).fieldForLabel) {
62
- fieldInRows = true;
63
- }
59
+ return rowWithEmptiesToFit.map((item: Widget, j: number) => {
60
+ // We check if we have any label+field inside the container.
61
+ // In this scenario, we must format the grid accordingly
62
+ // Otherwise, the grid will divide uniformly
63
+ if (item instanceof Label && (item as Label).fieldForLabel) {
64
+ fieldInRows = true;
65
+ }
64
66
 
65
- const itemRowIndex = row.indexOf(item);
67
+ const itemRowIndex = row.indexOf(item);
66
68
 
67
- return (
68
- <div
69
- key={`${i.toString()}-${itemRowIndex.toString()}`}
70
- style={{
71
- ...getSpanStyleForItem({ item, responsiveBehaviour }),
72
- minWidth: 0,
73
- }}
74
- >
75
- {createReactWidget({
76
- ooui: item,
77
- responsiveBehaviour,
78
- })}
79
- </div>
80
- );
81
- }
82
- );
69
+ return (
70
+ <div
71
+ key={`${i.toString()}-${itemRowIndex.toString()}`}
72
+ style={{
73
+ ...getSpanStyleForItem({ item, responsiveBehaviour }),
74
+ minWidth: 0,
75
+ }}
76
+ >
77
+ {createReactWidget({
78
+ ooui: item,
79
+ responsiveBehaviour,
80
+ })}
81
+ </div>
82
+ );
83
+ });
83
84
  });
84
85
 
85
86
  const templateColumns =
@@ -0,0 +1,97 @@
1
+ import React, { useContext, useState } from "react";
2
+ import { Tags as TagsOoui } from "@gisce/ooui";
3
+ import Field from "@/common/Field";
4
+ import { One2manyItem, One2manyValue } from "../base/one2many/One2manyInput";
5
+ import useDeepCompareEffect from "use-deep-compare-effect";
6
+ import { FormContext, FormContextType } from "@/context/FormContext";
7
+ import { Spin, Alert, Timeline as AntTimeline, Tag as AntTag } from "antd";
8
+ import { readObjectValues } from "@/helpers/one2manyHelper";
9
+ import { colorFromString } from "@/helpers/formHelper";
10
+
11
+ type TagsProps = {
12
+ ooui: TagsOoui;
13
+ };
14
+
15
+ type TagsInputProps = TagsProps & {
16
+ value?: One2manyValue;
17
+ onChange?: (value: One2manyValue) => void;
18
+ };
19
+
20
+ export const Tags = (props: TagsProps) => {
21
+ const { ooui } = props;
22
+
23
+ return (
24
+ <Field type={"array"} {...props}>
25
+ <TagsInput ooui={ooui} />
26
+ </Field>
27
+ );
28
+ };
29
+
30
+ export const TagsInput = (props: TagsInputProps) => {
31
+ const { value, ooui, onChange } = props;
32
+ const { items = [] } = value || {};
33
+
34
+ const [isLoading, setIsLoading] = useState<boolean>(false);
35
+ const [error, setError] = useState<string>();
36
+ const { relation, context, readOnly, field } = ooui;
37
+ const itemsToShow = items.filter(
38
+ (item) => item.values && item.operation !== "pendingRemove"
39
+ );
40
+
41
+ const formContext = useContext(FormContext) as FormContextType;
42
+ const { getContext } = formContext || {};
43
+
44
+ useDeepCompareEffect(() => {
45
+ fetchData();
46
+ }, [items]);
47
+
48
+ const triggerChange = (changedValue: Array<One2manyItem>) => {
49
+ onChange?.({
50
+ items: changedValue,
51
+ });
52
+ };
53
+
54
+ async function fetchData() {
55
+ setIsLoading(true);
56
+ setError(undefined);
57
+
58
+ try {
59
+ const itemsWithValues = await readObjectValues({
60
+ treeFields: [ooui.field],
61
+ formFields: [],
62
+ model: relation,
63
+ items,
64
+ context: { ...getContext?.(), ...context },
65
+ });
66
+
67
+ triggerChange(itemsWithValues);
68
+ } catch (err) {
69
+ setError(err as any);
70
+ } finally {
71
+ setIsLoading(false);
72
+ }
73
+ }
74
+
75
+ if (error) {
76
+ return <Alert className="mt-10" message={error} type="error" banner />;
77
+ }
78
+
79
+ if (isLoading) {
80
+ return <Spin />;
81
+ }
82
+
83
+ return (
84
+ <>
85
+ <div style={{ padding: "1rem" }}>
86
+
87
+ {itemsToShow.map((item, index) => {
88
+ const value = item.values?.[field];
89
+ return (
90
+ <AntTag key={index} color={colorFromString(value)}>{value}</AntTag>
91
+ );
92
+ })}
93
+ </div>
94
+
95
+ </>
96
+ );
97
+ };