@gisce/react-ooui 1.1.2-rc.1 → 1.1.2-rc.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ActionView.d.ts","sourceRoot":"","sources":["ActionView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAAO,EAIL,eAAe,EAGf,QAAQ,EACT,MAAM,eAAe,CAAC;AAiBvB,aAAK,KAAK,GAAG;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,eAAe,CAAC;IAC7B,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;;AA2aF,wBAAsC"}
1
+ {"version":3,"file":"ActionView.d.ts","sourceRoot":"","sources":["ActionView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAAO,EAIL,eAAe,EAGf,QAAQ,EACT,MAAM,eAAe,CAAC;AAiBvB,aAAK,KAAK,GAAG;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,eAAe,CAAC;IAC7B,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;;AA0aF,wBAAsC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RootView.d.ts","sourceRoot":"","sources":["RootView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAKN,MAAM,OAAO,CAAC;AAaf,aAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;;AAudF,wBAAoC"}
1
+ {"version":3,"file":"RootView.d.ts","sourceRoot":"","sources":["RootView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAKN,MAAM,OAAO,CAAC;AAcf,aAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;;AA0dF,wBAAoC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Binary.d.ts","sourceRoot":"","sources":["Binary.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAmBnD,aAAK,KAAK,GAAG;IACX,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,MAAM,UAAW,KAAK,gBASlC,CAAC;AAEF,UAAU,gBAAgB;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,WAAW,UAAW,gBAAgB,gBAiGlD,CAAC"}
1
+ {"version":3,"file":"Binary.d.ts","sourceRoot":"","sources":["Binary.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAmBnD,aAAK,KAAK,GAAG;IACX,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,MAAM,UAAW,KAAK,gBASlC,CAAC;AAEF,UAAU,gBAAgB;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,WAAW,UAAW,gBAAgB,gBAkGlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"One2manyInput.d.ts","sourceRoot":"","sources":["One2manyInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAWvD,OAAO,EAAE,KAAK,EAAY,MAAM,SAAS,CAAC;AAiB1C,aAAK,aAAa,GAAG;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;CAC5B,CAAC;AAQF,aAAK,YAAY,GAAG;IAClB,SAAS,CAAC,EACN,UAAU,GACV,eAAe,GACf,eAAe,GACf,eAAe,GACf,aAAa,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;CACrB,CAAC;AAEF,UAAU,kBAAkB;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC;CACd;AAWD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2kB/C,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"One2manyInput.d.ts","sourceRoot":"","sources":["One2manyInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAWvD,OAAO,EAAE,KAAK,EAAY,MAAM,SAAS,CAAC;AAkB1C,aAAK,aAAa,GAAG;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;CAC5B,CAAC;AAQF,aAAK,YAAY,GAAG;IAClB,SAAS,CAAC,EACN,UAAU,GACV,eAAe,GACf,eAAe,GACf,eAAe,GACf,aAAa,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;CACrB,CAAC;AAEF,UAAU,kBAAkB;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC;CACd;AAWD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA4kB/C,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MultiCheckbox.d.ts","sourceRoot":"","sources":["MultiCheckbox.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAgB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAM7E,aAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,aAAK,uBAAuB,GAAG,kBAAkB,GAAG;IAClD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,kBAAkB,gBAQtD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAAW,uBAAuB,gBA4HhE,CAAC"}
1
+ {"version":3,"file":"MultiCheckbox.d.ts","sourceRoot":"","sources":["MultiCheckbox.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAgB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO7E,aAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,aAAK,uBAAuB,GAAG,kBAAkB,GAAG;IAClD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,kBAAkB,gBAQtD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAAW,uBAAuB,gBAsIhE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tags.d.ts","sourceRoot":"","sources":["Tags.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAgB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO7E,aAAK,SAAS,GAAG,WAAW,GAAG;IAC7B,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,gBAiI9C,CAAC"}
1
+ {"version":3,"file":"Tags.d.ts","sourceRoot":"","sources":["Tags.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAgB,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO7E,aAAK,SAAS,GAAG,WAAW,GAAG;IAC7B,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,gBAoI9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gisce/react-ooui",
3
- "version": "1.1.2-rc.1",
3
+ "version": "1.1.2-rc.3",
4
4
  "files": [
5
5
  "dist",
6
6
  "src",
@@ -23,7 +23,10 @@
23
23
  "access": "public"
24
24
  },
25
25
  "scripts": {
26
+ "preminor": "npm version preminor --preid rc",
26
27
  "prerelease": "npm version prerelease --preid rc",
28
+ "prepatch": "npm version prepatch --preid rc",
29
+ "premajor": "npm version premajor --preid rc",
27
30
  "start": "while :; do vite build --watch --force; done",
28
31
  "build:tailwind": "postcss src/tailwind.css -o src/tailwind.generated.css",
29
32
  "build": "vite build",
@@ -33,7 +36,7 @@
33
36
  },
34
37
  "dependencies": {
35
38
  "@ant-design/plots": "^1.0.9",
36
- "@gisce/ooui": "^0.17.6",
39
+ "@gisce/ooui": "^0.17.7",
37
40
  "@gisce/react-formiga-table": "^0.5.0",
38
41
  "@monaco-editor/react": "^4.4.5",
39
42
  "@tabler/icons": "^1.96.0",
@@ -128,6 +128,17 @@ const ActionViewProvider = (props: ActionViewProviderProps): any => {
128
128
  }
129
129
  }, [availableViews]);
130
130
 
131
+ useEffect(() => {
132
+ if (
133
+ previousView?.view_id === currentView.view_id &&
134
+ availableViews.length > 1
135
+ ) {
136
+ setPreviousView(
137
+ availableViews.filter((view) => view.view_id !== currentView.view_id)[0]
138
+ );
139
+ }
140
+ }, [currentView]);
141
+
131
142
  const callOnFormSave = () => {
132
143
  (formRef.current as any)?.submitForm();
133
144
  };
@@ -17,6 +17,7 @@ import {
17
17
  } from "@/context/TabManagerContext";
18
18
  import { FormModal } from "@/widgets/modals/FormModal";
19
19
  import { LocaleContext, LocaleContextType } from "@/context/LocaleContext";
20
+ import { transformPlainMany2Ones } from "@/helpers/formHelper";
20
21
 
21
22
  export type ContentRootContextType = {
22
23
  processAction: ({
@@ -95,9 +96,9 @@ const ContentRootProvider = (
95
96
  return;
96
97
  }
97
98
 
98
- const { ids, ...datasource } = datas || {};
99
+ const { ids } = datas || {};
99
100
 
100
- let idsToExecute = ids;
101
+ let idsToExecute = ids || [];
101
102
 
102
103
  const reportContextParsed =
103
104
  typeof reportContext === "string"
@@ -108,23 +109,6 @@ const ContentRootProvider = (
108
109
  })
109
110
  : reportContext;
110
111
 
111
- if (!idsToExecute) {
112
- const results = await ConnectionProvider.getHandler().searchAllIds({
113
- params: [],
114
- model: datasource.model || model,
115
- totalItems: 1,
116
- context: { ...context, ...reportContextParsed },
117
- });
118
-
119
- if (results.length === 0) {
120
- showErrorDialog("Nothing to print");
121
- return;
122
- }
123
-
124
- idsToExecute = results;
125
- datas.id = results[0];
126
- }
127
-
128
112
  try {
129
113
  const newReportId = await ConnectionProvider.getHandler().createReport({
130
114
  model,
@@ -242,7 +226,10 @@ const ContentRootProvider = (
242
226
  if (actionData.domain) {
243
227
  parsedDomain = await ConnectionProvider.getHandler().evalDomain({
244
228
  domain: actionData.domain,
245
- values: { ...values, ...globalValues },
229
+ values: transformPlainMany2Ones({
230
+ fields,
231
+ values: { ...values, ...globalValues },
232
+ }),
246
233
  context: mergedContext,
247
234
  });
248
235
  }
@@ -160,22 +160,6 @@ function sortResults({
160
160
  return resultsToSort.sort(sortFn);
161
161
  }
162
162
 
163
- function sortResultsWithOrder(results: any[], order: number[]) {
164
- if (!order) {
165
- const sortResultsById = results.sort((a: any, b: any) => {
166
- return a.id - b.id;
167
- });
168
- return sortResultsById;
169
- }
170
-
171
- const sortedResults = results.sort((a: any, b: any) => {
172
- const aIndex = order.indexOf(a.id);
173
- const bIndex = order.indexOf(b.id);
174
- return aIndex - bIndex;
175
- });
176
- return sortedResults;
177
- }
178
-
179
163
  export {
180
164
  getTableColumns,
181
165
  getTableItems,
@@ -184,5 +168,4 @@ export {
184
168
  itemHasBooleans,
185
169
  getColorMap,
186
170
  sortResults,
187
- sortResultsWithOrder,
188
171
  };
@@ -49,8 +49,7 @@ export default {
49
49
  tv: false,
50
50
  },
51
51
  form: {
52
- arch:
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>',
52
+ arch: '<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
53
  field_parent: false,
55
54
  fields: {
56
55
  aclarador: {
@@ -113,7 +112,7 @@ export default {
113
112
  readonly: true,
114
113
  size: 5,
115
114
  string: "Codi Postal (c)",
116
- type: "char",
115
+ type: "integer",
117
116
  views: {},
118
117
  },
119
118
  catas_es: {
@@ -218,7 +217,7 @@ export default {
218
217
  dp: {
219
218
  size: 5,
220
219
  string: "Codi Postal",
221
- type: "char",
220
+ type: "float",
222
221
  views: {},
223
222
  },
224
223
  es: {
@@ -332,8 +331,7 @@ export default {
332
331
  type: "one2many",
333
332
  views: {
334
333
  tree: {
335
- arch:
336
- '<tree string="Modificacions contractuals">\n <field name="polissa_id"/>\n <field name="comptadors_periode"/>\n <field name="titular"/>\n <field name="tarifa"/>\n <field name="potencia"/>\n <field name="tensio_normalitzada"/>\n <field name="name"/>\n <field name="tipus"/>\n <field name="data_inici"/>\n <field name="data_final"/>\n <field name="state"/>\n </tree>\n ',
334
+ arch: '<tree string="Modificacions contractuals">\n <field name="polissa_id"/>\n <field name="comptadors_periode"/>\n <field name="titular"/>\n <field name="tarifa"/>\n <field name="potencia"/>\n <field name="tensio_normalitzada"/>\n <field name="name"/>\n <field name="tipus"/>\n <field name="data_inici"/>\n <field name="data_final"/>\n <field name="state"/>\n </tree>\n ',
337
335
  fields: {
338
336
  comptadors_periode: {
339
337
  digits: [16, 2],
@@ -667,8 +665,7 @@ export default {
667
665
  view_id: 458,
668
666
  },
669
667
  tree: {
670
- arch:
671
- '<tree string="CUPS">\n <field name="distribuidora_id"/>\n <field name="name"/>\n <field name="polissa_polissa"/>\n <field name="polissa_comptador"/>\n <field name="polissa_potencia" sum="Potència contractada (kW)"/>\n <field name="active"/>\n <field name="direccio"/>\n <field name="id_municipi"/>\n </tree>',
668
+ arch: '<tree string="CUPS">\n <field name="distribuidora_id"/>\n <field name="name"/>\n <field name="polissa_polissa"/>\n <field name="polissa_comptador"/>\n <field name="polissa_potencia" sum="Potència contractada (kW)"/>\n <field name="active"/>\n <field name="direccio"/>\n <field name="id_municipi"/>\n </tree>',
672
669
  field_parent: false,
673
670
  fields: {
674
671
  active: {
@@ -401,7 +401,6 @@ function ActionView(props: Props, ref: any) {
401
401
  formView={
402
402
  availableViews.find((v) => v.type === "form") as FormView
403
403
  }
404
- limit={limit}
405
404
  />
406
405
  );
407
406
  }
@@ -15,6 +15,7 @@ import { tForLang } from "@/context/LocaleContext";
15
15
  import { ShortcutApi } from "@/ui/FavouriteButton";
16
16
  import showErrorDialog from "@/ui/ActionErrorDialog";
17
17
  import { InitialViewData, ViewType } from "@/types";
18
+ import { transformPlainMany2Ones } from "@/helpers/formHelper";
18
19
 
19
20
  type RootViewProps = {
20
21
  children: React.ReactNode;
@@ -245,7 +246,10 @@ function RootView(props: RootViewProps, ref: any) {
245
246
  const parsedDomain = domain
246
247
  ? await ConnectionProvider.getHandler().evalDomain({
247
248
  domain: domain,
248
- values: { ...values, ...globalValues },
249
+ values: transformPlainMany2Ones({
250
+ fields,
251
+ values: { ...values, ...globalValues },
252
+ }),
249
253
  context: { ...rootContext, ...parsedContext },
250
254
  })
251
255
  : [];
@@ -62,9 +62,10 @@ export const BinaryInput = (props: BinaryInputProps) => {
62
62
  const linkSource = `data:${fileType?.mime};base64,${value}`;
63
63
  const downloadLink = document.createElement("a");
64
64
  const fileName = getFieldValue(filenameField);
65
+ const name = getFieldValue("name");
65
66
 
66
67
  downloadLink.href = linkSource;
67
- downloadLink.download = fileName;
68
+ downloadLink.download = fileName || name;
68
69
  downloadLink.click();
69
70
  }
70
71
 
@@ -24,7 +24,7 @@ export const Integer = (props: IntegerProps) => {
24
24
  className={"w-full " + requiredClass}
25
25
  disabled={readOnly}
26
26
  formatter={(value) => {
27
- return `${value}`.replace(/[^0-9]+/g, "");
27
+ return `${value}`.replace(/[^0-9\-]+/g, "");
28
28
  }}
29
29
  onChange={(newValue: any) => {
30
30
  const newNumber = newValue as number;
@@ -25,7 +25,8 @@ import { One2manyTopBar } from "@/widgets/base/one2many/One2manyTopBar";
25
25
  import { readObjectValues, getNextPendingId } from "@/helpers/one2manyHelper";
26
26
  import { SearchModal } from "@/widgets/modals/SearchModal";
27
27
  import { LocaleContext, LocaleContextType } from "@/context/LocaleContext";
28
- import { sortResults, sortResultsWithOrder } from "@/helpers/treeHelper";
28
+ import { sortResults } from "@/helpers/treeHelper";
29
+ import { transformPlainMany2Ones } from "@/helpers/formHelper";
29
30
 
30
31
  type One2manyValue = {
31
32
  fields?: any;
@@ -78,7 +79,8 @@ const One2manyInput: React.FC<One2manyInputProps> = (
78
79
  ) as One2manyContextType;
79
80
 
80
81
  const formContext = useContext(FormContext) as FormContextType;
81
- const { activeId, getValues, getContext, domain } = formContext || {};
82
+ const { activeId, getFields, getValues, getContext, domain } =
83
+ formContext || {};
82
84
  const { lang, t } = useContext(LocaleContext) as LocaleContextType;
83
85
 
84
86
  const formRef = useRef();
@@ -162,7 +164,10 @@ const One2manyInput: React.FC<One2manyInputProps> = (
162
164
  transformedDomain.current = transformDomainForChildWidget({
163
165
  domain: await ConnectionProvider.getHandler().evalDomain({
164
166
  domain: widgetDomain,
165
- values: getValues(),
167
+ values: transformPlainMany2Ones({
168
+ fields: getFields(),
169
+ values: getValues(),
170
+ }),
166
171
  context: getContext(),
167
172
  }),
168
173
  widgetFieldName: fieldName,
@@ -546,10 +551,7 @@ const One2manyInput: React.FC<One2manyInputProps> = (
546
551
  ...(views.get("form")?.fields || {}),
547
552
  },
548
553
  })
549
- : sortResultsWithOrder(
550
- itemsToShow.map((item) => item.treeValues),
551
- originalSortItemIds.current!
552
- );
554
+ : itemsToShow.map((item) => item.treeValues);
553
555
 
554
556
  if (currentView === "tree") {
555
557
  return (
@@ -4,8 +4,9 @@ import Field from "@/common/Field";
4
4
  import { One2manyItem, One2manyValue } from "../base/one2many/One2manyInput";
5
5
  import useDeepCompareEffect from "use-deep-compare-effect";
6
6
  import { FormContext, FormContextType } from "@/context/FormContext";
7
- import { Alert, Checkbox, Spin, Col, Row, Button, Space } from "antd";
7
+ import { Alert, Checkbox, Spin, Col, Row, Button, Space } from "antd";
8
8
  import ConnectionProvider from "@/ConnectionProvider";
9
+ import { transformPlainMany2Ones } from "@/helpers/formHelper";
9
10
 
10
11
  type MultiCheckboxProps = {
11
12
  ooui: MultiCheckboxOoui;
@@ -21,7 +22,7 @@ export const MultiCheckbox = (props: MultiCheckboxProps) => {
21
22
 
22
23
  return (
23
24
  <Field type={"array"} {...props}>
24
- <MultiCheckboxInput ooui={ooui} />
25
+ <MultiCheckboxInput ooui={ooui} />
25
26
  </Field>
26
27
  );
27
28
  };
@@ -29,16 +30,15 @@ export const MultiCheckbox = (props: MultiCheckboxProps) => {
29
30
  export const MultiCheckboxInput = (props: MultiCheckboxInputProps) => {
30
31
  const { value, ooui, onChange } = props;
31
32
  const { items = [] } = value || {};
32
- const itemsToShow = items.filter(
33
- (item) => item.operation !== "pendingRemove"
34
- ).map((item) => item.id) as number[];
33
+ const itemsToShow = items
34
+ .filter((item) => item.operation !== "pendingRemove")
35
+ .map((item) => item.id) as number[];
35
36
 
36
37
  const [options, setOptions] = useState<any[]>([]);
37
38
  const [error, setError] = useState<string>();
38
39
  const [isLoadingOptions, setIsLoadingOptions] = useState<boolean>(false);
39
40
  const { relation, context, readOnly, field, columns } = ooui;
40
41
 
41
-
42
42
  const formContext = useContext(FormContext) as FormContextType;
43
43
  const { getContext } = formContext || {};
44
44
 
@@ -56,13 +56,14 @@ export const MultiCheckboxInput = (props: MultiCheckboxInputProps) => {
56
56
  setIsLoadingOptions(true);
57
57
  let params: any = [];
58
58
  if (ooui.domain) {
59
- const evaluatedDomain = await ConnectionProvider.getHandler().evalDomain(
60
- {
61
- domain: ooui.domain,
59
+ const evaluatedDomain = await ConnectionProvider.getHandler().evalDomain({
60
+ domain: ooui.domain,
61
+ values: transformPlainMany2Ones({
62
+ fields: formContext?.getFields(),
62
63
  values: formContext.getPlainValues(),
63
- context: formContext.getContext(),
64
- }
65
- );
64
+ }),
65
+ context: formContext.getContext(),
66
+ });
66
67
  params = [...params, ...evaluatedDomain];
67
68
  }
68
69
  try {
@@ -72,35 +73,32 @@ export const MultiCheckboxInput = (props: MultiCheckboxInputProps) => {
72
73
  fields: [field],
73
74
  context: { ...getContext?.(), ...context },
74
75
  });
75
- const options = optionsRead.map((item:any) => {
76
+ const options = optionsRead.map((item: any) => {
76
77
  const value = item[field];
77
78
  let formattedValue = value;
78
79
  if (Array.isArray(value)) {
79
80
  formattedValue = value[1];
80
81
  }
81
- return {label: formattedValue, value: item.id}
82
+ return { label: formattedValue, value: item.id };
82
83
  });
83
84
  setOptions(options);
84
-
85
85
  } catch (err) {
86
- setError(err as any)
86
+ setError(err as any);
87
87
  } finally {
88
88
  setIsLoadingOptions(false);
89
89
  }
90
90
  if (error) {
91
91
  return <Alert className="mt-10" message={error} type="error" banner />;
92
92
  }
93
-
94
-
95
- };
93
+ }
96
94
 
97
95
  const checkAll = () => {
98
- onChangeSelected(options.map(option => option.value));
99
- }
96
+ onChangeSelected(options.map((option) => option.value));
97
+ };
100
98
 
101
99
  const uncheckAll = () => {
102
100
  onChangeSelected([]);
103
- }
101
+ };
104
102
 
105
103
  const onChangeSelected = (ids: any[]) => {
106
104
  const newItems: One2manyItem[] = items.map((item) => {
@@ -108,46 +106,59 @@ export const MultiCheckboxInput = (props: MultiCheckboxInputProps) => {
108
106
  if (item.operation == "pendingRemove") {
109
107
  return {
110
108
  ...item,
111
- operation: "original"
112
- }
109
+ operation: "original",
110
+ };
113
111
  } else {
114
- return item
112
+ return item;
115
113
  }
116
114
  } else {
117
- return {id: item.id, operation: 'pendingRemove'}
115
+ return { id: item.id, operation: "pendingRemove" };
118
116
  }
119
- })
120
- const currentIds = newItems.map(item => item.id)
121
- ids.filter(id => !currentIds.includes(id)).map((id) => {
122
- newItems.push({id, operation: 'pendingLink'});
123
117
  });
118
+ const currentIds = newItems.map((item) => item.id);
119
+ ids
120
+ .filter((id) => !currentIds.includes(id))
121
+ .map((id) => {
122
+ newItems.push({ id, operation: "pendingLink" });
123
+ });
124
124
  triggerChange(newItems);
125
125
  };
126
126
 
127
127
  if (isLoadingOptions && options.length === 0) {
128
- return <Spin />
128
+ return <Spin />;
129
129
  }
130
-
130
+
131
131
  return (
132
132
  <>
133
133
  <div className="flex flex-row">
134
- <Checkbox.Group value={options.length ? itemsToShow : []} disabled={readOnly} onChange={onChangeSelected} style={{width: '100%'}}>
134
+ <Checkbox.Group
135
+ value={options.length ? itemsToShow : []}
136
+ disabled={readOnly}
137
+ onChange={onChangeSelected}
138
+ style={{ width: "100%" }}
139
+ >
135
140
  <Row>
136
- {options.map((option) => (
137
- <Col span={Math.floor(24 / columns)}>
138
- <Checkbox value={option.value}>{option.label}</Checkbox>
139
- </Col>
140
- ))}
141
+ {options.map((option) => (
142
+ <Col span={Math.floor(24 / columns)}>
143
+ <Checkbox value={option.value}>{option.label}</Checkbox>
144
+ </Col>
145
+ ))}
141
146
  </Row>
142
147
  </Checkbox.Group>
143
- {!readOnly &&
148
+ {!readOnly && (
144
149
  <Space>
145
- <Button onClick={checkAll} disabled={itemsToShow.length == options.length}>Check all</Button>
146
- <Button onClick={uncheckAll} disabled={itemsToShow.length === 0}>Uncheck all</Button>
150
+ <Button
151
+ onClick={checkAll}
152
+ disabled={itemsToShow.length == options.length}
153
+ >
154
+ Check all
155
+ </Button>
156
+ <Button onClick={uncheckAll} disabled={itemsToShow.length === 0}>
157
+ Uncheck all
158
+ </Button>
147
159
  </Space>
148
- }
160
+ )}
149
161
  </div>
150
162
  </>
151
163
  );
152
-
153
164
  };
@@ -6,7 +6,7 @@ import { One2manyItem, One2manyValue } from "../base/one2many/One2manyInput";
6
6
  import useDeepCompareEffect from "use-deep-compare-effect";
7
7
  import { FormContext, FormContextType } from "@/context/FormContext";
8
8
  import { Alert, Tag as AntTag, Select } from "antd";
9
- import { colorFromString } from "@/helpers/formHelper";
9
+ import { colorFromString, transformPlainMany2Ones } from "@/helpers/formHelper";
10
10
  import ConnectionProvider from "@/ConnectionProvider";
11
11
 
12
12
  type TagsProps = WidgetProps & {
@@ -65,8 +65,11 @@ export const TagsInput = (props: TagsInputProps) => {
65
65
  const evaluatedDomain = await ConnectionProvider.getHandler().evalDomain(
66
66
  {
67
67
  domain: ooui.domain,
68
- values: formContext.getPlainValues(),
69
- context: formContext.getContext(),
68
+ values: transformPlainMany2Ones({
69
+ fields: formContext?.getFields(),
70
+ values: formContext.getPlainValues(),
71
+ }),
72
+ context: formContext.getContext(),
70
73
  }
71
74
  );
72
75
  params = [...params, ...evaluatedDomain];
@@ -87,7 +90,7 @@ export const TagsInput = (props: TagsInputProps) => {
87
90
  return {label: formattedValue, value: item.id}
88
91
  });
89
92
  setOptions(options);
90
-
93
+
91
94
  } catch (err) {
92
95
  setError(err as any)
93
96
  } finally {
@@ -156,5 +159,5 @@ export const TagsInput = (props: TagsInputProps) => {
156
159
  </div>
157
160
  </>
158
161
  );
159
-
162
+
160
163
  };
package/src/.eslintcache DELETED
@@ -1 +0,0 @@
1
- [{"/Users/marc/development/react-ooui/src/stories/Button.stories.js":"1","/Users/marc/development/react-ooui/src/stories/Char.stories.js":"2","/Users/marc/development/react-ooui/src/stories/Selection.stories.js":"3","/Users/marc/development/react-ooui/src/stories/ManyToOne.stories.js":"4","/Users/marc/development/react-ooui/src/stories/Checkbox.stories.js":"5","/Users/marc/development/react-ooui/src/widgets/Checkbox.tsx":"6","/Users/marc/development/react-ooui/src/widgets/ManyToOne.tsx":"7","/Users/marc/development/react-ooui/src/widgets/Selection.tsx":"8","/Users/marc/development/react-ooui/src/widgets/Button.tsx":"9","/Users/marc/development/react-ooui/src/widgets/Char.tsx":"10","/Users/marc/development/react-ooui/src/index.ts":"11","/Users/marc/development/react-ooui/src/helpers/TreeHelper.ts":"12","/Users/marc/development/react-ooui/src/widgets/Tree.tsx":"13","/Users/marc/development/react-ooui/src/stories/Tree.stories.js":"14"},{"size":721,"mtime":1611223665948,"results":"15","hashOfConfig":"16"},{"size":432,"mtime":1611223665949,"results":"17","hashOfConfig":"16"},{"size":539,"mtime":1611223665952,"results":"18","hashOfConfig":"16"},{"size":599,"mtime":1611223665950,"results":"19","hashOfConfig":"16"},{"size":464,"mtime":1611223665949,"results":"20","hashOfConfig":"16"},{"size":671,"mtime":1611223665953,"results":"21","hashOfConfig":"16"},{"size":1308,"mtime":1611223665954,"results":"22","hashOfConfig":"16"},{"size":706,"mtime":1611223665954,"results":"23","hashOfConfig":"16"},{"size":639,"mtime":1611223665953,"results":"24","hashOfConfig":"16"},{"size":741,"mtime":1611223665953,"results":"25","hashOfConfig":"16"},{"size":385,"mtime":1611227468105,"results":"26","hashOfConfig":"16"},{"size":1966,"mtime":1611306565063,"results":"27","hashOfConfig":"16"},{"size":1681,"mtime":1611227447728,"results":"28","hashOfConfig":"16"},{"size":3152,"mtime":1611308351200,"results":"29","hashOfConfig":"16"},{"filePath":"30","messages":"31","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},"i1ix4w",{"filePath":"33","messages":"34","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"35","messages":"36","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"37","messages":"38","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"41","messages":"42","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"43","messages":"44","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"45","messages":"46","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"47","messages":"48","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"49"},{"filePath":"50","messages":"51","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"52","messages":"53","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"54","messages":"55","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"56","messages":"57","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},{"filePath":"58","messages":"59","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"32"},"/Users/marc/development/react-ooui/src/stories/Button.stories.js",[],[],"/Users/marc/development/react-ooui/src/stories/Char.stories.js",[],"/Users/marc/development/react-ooui/src/stories/Selection.stories.js",[],"/Users/marc/development/react-ooui/src/stories/ManyToOne.stories.js",[],"/Users/marc/development/react-ooui/src/stories/Checkbox.stories.js",[],"/Users/marc/development/react-ooui/src/widgets/Checkbox.tsx",[],"/Users/marc/development/react-ooui/src/widgets/ManyToOne.tsx",[],"/Users/marc/development/react-ooui/src/widgets/Selection.tsx",[],"/Users/marc/development/react-ooui/src/widgets/Button.tsx",[],[],"/Users/marc/development/react-ooui/src/widgets/Char.tsx",[],"/Users/marc/development/react-ooui/src/index.ts",[],"/Users/marc/development/react-ooui/src/helpers/TreeHelper.ts",[],"/Users/marc/development/react-ooui/src/widgets/Tree.tsx",[],"/Users/marc/development/react-ooui/src/stories/Tree.stories.js",[]]