@digigov/react-modules 1.1.4

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 (82) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/FilteredResults/DataTable/index.js +18 -0
  3. package/FilteredResults/DataTable/package.json +6 -0
  4. package/FilteredResults/DataTable.d.ts +5 -0
  5. package/FilteredResults/DataTable.js.map +7 -0
  6. package/FilteredResults/FilterChips/index.js +52 -0
  7. package/FilteredResults/FilterChips/package.json +6 -0
  8. package/FilteredResults/FilterChips.d.ts +3 -0
  9. package/FilteredResults/FilterChips.js.map +7 -0
  10. package/FilteredResults/FilterFields/index.js +11 -0
  11. package/FilteredResults/FilterFields/package.json +6 -0
  12. package/FilteredResults/FilterFields.d.ts +5 -0
  13. package/FilteredResults/FilterFields.js.map +7 -0
  14. package/FilteredResults/FilteredResults.stories/index.js +12 -0
  15. package/FilteredResults/FilteredResults.stories/package.json +6 -0
  16. package/FilteredResults/FilteredResults.stories.d.ts +8 -0
  17. package/FilteredResults/FilteredResults.stories.js.map +7 -0
  18. package/FilteredResults/__stories__/Default/index.js +220 -0
  19. package/FilteredResults/__stories__/Default/package.json +6 -0
  20. package/FilteredResults/__stories__/Default.d.ts +2 -0
  21. package/FilteredResults/__stories__/Default.js.map +7 -0
  22. package/FilteredResults/hooks/index.js +105 -0
  23. package/FilteredResults/hooks/package.json +6 -0
  24. package/FilteredResults/hooks.d.ts +22 -0
  25. package/FilteredResults/hooks.js.map +7 -0
  26. package/FilteredResults/index.d.ts +25 -0
  27. package/FilteredResults/index.js +122 -0
  28. package/FilteredResults/index.js.map +7 -0
  29. package/FilteredResults/index.test.d.ts +1 -0
  30. package/FilteredResults/package.json +6 -0
  31. package/LICENSE +0 -0
  32. package/README.md +0 -0
  33. package/ReactModules.stories/index.js +7 -0
  34. package/ReactModules.stories/package.json +6 -0
  35. package/ReactModules.stories.d.ts +4 -0
  36. package/ReactModules.stories.js.map +7 -0
  37. package/cjs/FilteredResults/DataTable/index.js +42 -0
  38. package/cjs/FilteredResults/DataTable.js.map +7 -0
  39. package/cjs/FilteredResults/FilterChips/index.js +82 -0
  40. package/cjs/FilteredResults/FilterChips.js.map +7 -0
  41. package/cjs/FilteredResults/FilterFields/index.js +44 -0
  42. package/cjs/FilteredResults/FilterFields.js.map +7 -0
  43. package/cjs/FilteredResults/FilteredResults.stories/index.js +45 -0
  44. package/cjs/FilteredResults/FilteredResults.stories.js.map +7 -0
  45. package/cjs/FilteredResults/__stories__/Default/index.js +250 -0
  46. package/cjs/FilteredResults/__stories__/Default.js.map +7 -0
  47. package/cjs/FilteredResults/hooks/index.js +132 -0
  48. package/cjs/FilteredResults/hooks.js.map +7 -0
  49. package/cjs/FilteredResults/index.js +155 -0
  50. package/cjs/FilteredResults/index.js.map +7 -0
  51. package/cjs/ReactModules.stories/index.js +26 -0
  52. package/cjs/ReactModules.stories.js.map +7 -0
  53. package/cjs/index.js +22 -0
  54. package/cjs/index.js.map +7 -0
  55. package/cjs/lazy/index.js +43 -0
  56. package/cjs/lazy.js.map +7 -0
  57. package/cjs/registry/index.js +63 -0
  58. package/cjs/registry.js.map +7 -0
  59. package/index.d.ts +1 -0
  60. package/index.js +7 -0
  61. package/index.js.map +7 -0
  62. package/lazy/index.js +14 -0
  63. package/lazy/package.json +6 -0
  64. package/lazy.d.ts +16 -0
  65. package/lazy.js.map +7 -0
  66. package/package.json +25 -0
  67. package/registry/index.js +34 -0
  68. package/registry/package.json +6 -0
  69. package/registry.d.ts +9 -0
  70. package/registry.js.map +7 -0
  71. package/src/FilteredResults/DataTable.tsx +47 -0
  72. package/src/FilteredResults/FilterChips.tsx +54 -0
  73. package/src/FilteredResults/FilterFields.tsx +15 -0
  74. package/src/FilteredResults/FilteredResults.stories.js +7 -0
  75. package/src/FilteredResults/__stories__/Default.tsx +243 -0
  76. package/src/FilteredResults/hooks.ts +131 -0
  77. package/src/FilteredResults/index.test.tsx +20 -0
  78. package/src/FilteredResults/index.tsx +180 -0
  79. package/src/ReactModules.stories.js +3 -0
  80. package/src/index.ts +1 -0
  81. package/src/lazy.js +11 -0
  82. package/src/registry.js +35 -0
@@ -0,0 +1,250 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var Default_exports = {};
29
+ __export(Default_exports, {
30
+ Default: () => Default
31
+ });
32
+ module.exports = __toCommonJS(Default_exports);
33
+ var import_react = __toESM(require("react"));
34
+ var import_FilteredResults = __toESM(require("@digigov/react-modules/FilteredResults"));
35
+ var import_DataTable = require("@digigov/react-modules/FilteredResults/DataTable");
36
+ var import_hooks = require("@digigov/react-modules/FilteredResults/hooks");
37
+ var import_icons = require("@digigov/ui/icons");
38
+ var import_Link = __toESM(require("@digigov/ui/navigation/Link"));
39
+ const fields = [
40
+ {
41
+ type: "string",
42
+ key: "text",
43
+ label: {
44
+ primary: "\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BB\u03AD\u03BE\u03B7\u03C2"
45
+ }
46
+ },
47
+ {
48
+ type: "choice:single",
49
+ key: "name",
50
+ label: {
51
+ primary: "\u038C\u03BD\u03BF\u03BC\u03B1"
52
+ },
53
+ extra: {
54
+ component: "Select",
55
+ options: [
56
+ {
57
+ label: {
58
+ primary: ""
59
+ },
60
+ value: ""
61
+ },
62
+ {
63
+ label: {
64
+ primary: "\u039A\u03B1\u03BB\u03BB\u03B9\u03CC\u03C0\u03B7 \u03A0\u03B1\u03C0\u03B1\u03B4\u03BF\u03C0\u03BF\u03CD\u03BB\u03BF\u03C5"
65
+ },
66
+ value: "Kalliopi Papadopoulou"
67
+ },
68
+ {
69
+ label: {
70
+ primary: "\u039C\u03AC\u03C1\u03B9\u03BF\u03C2 \u039C\u03B5\u03BD\u03B5\u03BE\u03AD\u03C2"
71
+ },
72
+ value: "Marios Menekses"
73
+ },
74
+ {
75
+ label: {
76
+ primary: "\u039C\u03B1\u03C1\u03AF\u03B1 \u03A6\u03BB\u03BF\u03CD\u03C0\u03B7"
77
+ },
78
+ value: "Maria Floupi"
79
+ },
80
+ {
81
+ label: {
82
+ primary: "\u0397\u03BB\u03AD\u03BA\u03C4\u03C1\u03B1 \u0391\u03C0\u03BF\u03C3\u03C4\u03CC\u03BB\u03BF\u03C5"
83
+ },
84
+ value: "Ilektra Apostolou"
85
+ }
86
+ ]
87
+ }
88
+ },
89
+ {
90
+ type: "choice:single",
91
+ key: "role",
92
+ label: {
93
+ primary: "\u03A1\u03CC\u03BB\u03BF\u03C2"
94
+ },
95
+ extra: {
96
+ component: "Select",
97
+ options: [
98
+ {
99
+ label: {
100
+ primary: ""
101
+ },
102
+ value: ""
103
+ },
104
+ {
105
+ label: {
106
+ primary: "\u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2"
107
+ },
108
+ value: "admin"
109
+ },
110
+ {
111
+ label: {
112
+ primary: "\u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2"
113
+ },
114
+ value: "user"
115
+ }
116
+ ]
117
+ }
118
+ },
119
+ {
120
+ type: "choice:single",
121
+ key: "rights",
122
+ label: {
123
+ primary: "\u0394\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1"
124
+ },
125
+ extra: {
126
+ component: "Select",
127
+ options: [
128
+ {
129
+ label: {
130
+ primary: ""
131
+ },
132
+ value: ""
133
+ },
134
+ {
135
+ label: {
136
+ primary: "\u039D\u03B1\u03B9"
137
+ },
138
+ value: true
139
+ },
140
+ {
141
+ label: {
142
+ primary: "\u038C\u03C7\u03B9"
143
+ },
144
+ value: false
145
+ }
146
+ ]
147
+ }
148
+ }
149
+ ];
150
+ const displayLink = (value) => {
151
+ return /* @__PURE__ */ import_react.default.createElement(import_Link.default, { href: `#/${value}` }, value);
152
+ };
153
+ const displayRights = (value) => {
154
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, value ? /* @__PURE__ */ import_react.default.createElement(import_icons.CheckIcon, null) : /* @__PURE__ */ import_react.default.createElement(import_icons.UncheckIcon, null));
155
+ };
156
+ const data = [
157
+ {
158
+ name: "\u039C\u03AC\u03C1\u03B9\u03BF\u03C2 \u039C\u03B5\u03BD\u03B5\u03BE\u03AD\u03C2",
159
+ case_id: 123,
160
+ role: "\u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2",
161
+ email: "marios@mail.com",
162
+ rights: false
163
+ },
164
+ {
165
+ name: "\u039A\u03B1\u03BB\u03BB\u03B9\u03CC\u03C0\u03B7 \u03A0\u03B1\u03C0\u03B1\u03B4\u03BF\u03C0\u03BF\u03CD\u03BB\u03BF\u03C5",
166
+ case_id: 124,
167
+ role: "\u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2",
168
+ email: "kalliopi@mail.com",
169
+ rights: false
170
+ },
171
+ {
172
+ name: "\u039C\u03B1\u03C1\u03AF\u03B1 \u03A6\u03BB\u03BF\u03CD\u03C0\u03B7",
173
+ case_id: 125,
174
+ role: "\u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2",
175
+ email: "maria@mail.com",
176
+ rights: true
177
+ },
178
+ {
179
+ name: "\u0397\u03BB\u03AD\u03BA\u03C4\u03C1\u03B1 \u0391\u03C0\u03BF\u03C3\u03C4\u03CC\u03BB\u03BF\u03C5",
180
+ case_id: 126,
181
+ role: "\u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2",
182
+ email: "ilektra@mail.com",
183
+ rights: true
184
+ }
185
+ ];
186
+ const dataConfig = [
187
+ {
188
+ key: "name",
189
+ title: "\u038C\u03BD\u03BF\u03BC\u03B1"
190
+ },
191
+ {
192
+ key: "case_id",
193
+ title: "\u0391\u03C1. \u03A5\u03C0\u03CC\u03B8\u03B5\u03C3\u03B7\u03C2",
194
+ displayComponent: displayLink
195
+ },
196
+ {
197
+ key: "role",
198
+ title: "\u03A1\u03CC\u03BB\u03BF\u03C2"
199
+ },
200
+ {
201
+ key: "email",
202
+ title: "Email"
203
+ },
204
+ {
205
+ key: "rights",
206
+ title: "\u0394\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1",
207
+ displayComponent: displayRights
208
+ }
209
+ ];
210
+ const initialFilters = {
211
+ name: "",
212
+ case_id: "",
213
+ role: "",
214
+ text: "",
215
+ rights: ""
216
+ };
217
+ const Default = () => {
218
+ const { search, results } = (0, import_hooks.useStaticSearch)({
219
+ fields,
220
+ data,
221
+ initialFilters
222
+ });
223
+ const navigate = (url) => {
224
+ if (window.history.pushState) {
225
+ const newUrl = window.location.protocol + "//" + window.location.host + window.location.pathname + url;
226
+ window.history.pushState({ path: newUrl }, "", newUrl);
227
+ }
228
+ };
229
+ const { search: urlSearch, values } = (0, import_hooks.useURLParamsSearch)(search, {
230
+ navigate,
231
+ fields
232
+ });
233
+ return /* @__PURE__ */ import_react.default.createElement(
234
+ import_FilteredResults.default,
235
+ {
236
+ data: results,
237
+ variant: "block",
238
+ currentFilters: values,
239
+ defaultFilters: initialFilters,
240
+ fields,
241
+ onSearch: urlSearch
242
+ },
243
+ /* @__PURE__ */ import_react.default.createElement(import_DataTable.DataTable, { dataConfig, data: results })
244
+ );
245
+ };
246
+ // Annotate the CommonJS export names for ESM import in node:
247
+ 0 && (module.exports = {
248
+ Default
249
+ });
250
+ //# sourceMappingURL=Default.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/FilteredResults/__stories__/Default.tsx"],
4
+ "sourcesContent": ["import React from 'react';\nimport { FieldSpec } from '@digigov/form/types';\nimport FilteredResults, {\n DataConfigType,\n} from '@digigov/react-modules/FilteredResults';\nimport { DataTable } from '@digigov/react-modules/FilteredResults/DataTable';\nimport {\n useURLParamsSearch,\n useStaticSearch,\n} from '@digigov/react-modules/FilteredResults/hooks';\nimport { CheckIcon, UncheckIcon } from '@digigov/ui/icons';\nimport Link from '@digigov/ui/navigation/Link';\n\nconst fields: FieldSpec[] = [\n {\n type: 'string',\n key: 'text',\n label: {\n primary: '\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BB\u03AD\u03BE\u03B7\u03C2',\n },\n },\n {\n type: 'choice:single',\n key: 'name',\n label: {\n primary: '\u038C\u03BD\u03BF\u03BC\u03B1',\n },\n extra: {\n component: 'Select',\n options: [\n {\n label: {\n primary: '',\n },\n value: '',\n },\n {\n label: {\n primary: '\u039A\u03B1\u03BB\u03BB\u03B9\u03CC\u03C0\u03B7 \u03A0\u03B1\u03C0\u03B1\u03B4\u03BF\u03C0\u03BF\u03CD\u03BB\u03BF\u03C5',\n },\n value: 'Kalliopi Papadopoulou',\n },\n {\n label: {\n primary: '\u039C\u03AC\u03C1\u03B9\u03BF\u03C2 \u039C\u03B5\u03BD\u03B5\u03BE\u03AD\u03C2',\n },\n value: 'Marios Menekses',\n },\n {\n label: {\n primary: '\u039C\u03B1\u03C1\u03AF\u03B1 \u03A6\u03BB\u03BF\u03CD\u03C0\u03B7',\n },\n value: 'Maria Floupi',\n },\n {\n label: {\n primary: '\u0397\u03BB\u03AD\u03BA\u03C4\u03C1\u03B1 \u0391\u03C0\u03BF\u03C3\u03C4\u03CC\u03BB\u03BF\u03C5',\n },\n value: 'Ilektra Apostolou',\n },\n ],\n },\n },\n {\n type: 'choice:single',\n key: 'role',\n label: {\n primary: '\u03A1\u03CC\u03BB\u03BF\u03C2',\n },\n extra: {\n component: 'Select',\n options: [\n {\n label: {\n primary: '',\n },\n value: '',\n },\n {\n label: {\n primary: '\u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2',\n },\n value: 'admin',\n },\n {\n label: {\n primary: '\u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2',\n },\n value: 'user',\n },\n ],\n },\n },\n {\n type: 'choice:single',\n key: 'rights',\n label: {\n primary: '\u0394\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1',\n },\n extra: {\n component: 'Select',\n options: [\n {\n label: {\n primary: '',\n },\n value: '',\n },\n {\n label: {\n primary: '\u039D\u03B1\u03B9',\n },\n value: true,\n },\n {\n label: {\n primary: '\u038C\u03C7\u03B9',\n },\n value: false,\n },\n ],\n },\n },\n];\n\nconst displayLink = (value) => {\n return <Link href={`#/${value}`}>{value}</Link>;\n};\nconst displayRights = (value) => {\n return <>{value ? <CheckIcon /> : <UncheckIcon />}</>;\n};\n\ntype DataType = {\n name: string;\n case_id: number;\n role: string;\n email: string;\n rights: boolean;\n};\n\nconst data: DataType[] = [\n {\n name: '\u039C\u03AC\u03C1\u03B9\u03BF\u03C2 \u039C\u03B5\u03BD\u03B5\u03BE\u03AD\u03C2',\n case_id: 123,\n role: '\u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2',\n email: 'marios@mail.com',\n rights: false,\n },\n {\n name: '\u039A\u03B1\u03BB\u03BB\u03B9\u03CC\u03C0\u03B7 \u03A0\u03B1\u03C0\u03B1\u03B4\u03BF\u03C0\u03BF\u03CD\u03BB\u03BF\u03C5',\n case_id: 124,\n role: '\u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2',\n email: 'kalliopi@mail.com',\n rights: false,\n },\n {\n name: '\u039C\u03B1\u03C1\u03AF\u03B1 \u03A6\u03BB\u03BF\u03CD\u03C0\u03B7',\n case_id: 125,\n role: '\u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2',\n email: 'maria@mail.com',\n rights: true,\n },\n {\n name: '\u0397\u03BB\u03AD\u03BA\u03C4\u03C1\u03B1 \u0391\u03C0\u03BF\u03C3\u03C4\u03CC\u03BB\u03BF\u03C5',\n case_id: 126,\n role: '\u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2',\n email: 'ilektra@mail.com',\n rights: true,\n },\n];\n\nconst dataConfig: DataConfigType[] = [\n {\n key: 'name',\n title: '\u038C\u03BD\u03BF\u03BC\u03B1',\n },\n {\n key: 'case_id',\n title: '\u0391\u03C1. \u03A5\u03C0\u03CC\u03B8\u03B5\u03C3\u03B7\u03C2',\n displayComponent: displayLink,\n },\n {\n key: 'role',\n title: '\u03A1\u03CC\u03BB\u03BF\u03C2',\n },\n {\n key: 'email',\n title: 'Email',\n },\n {\n key: 'rights',\n title: '\u0394\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1',\n displayComponent: displayRights,\n },\n];\n\ntype InitialFiltersType = {\n [K in (typeof dataConfig)[number]['key']]: string;\n};\n\nconst initialFilters: InitialFiltersType = {\n name: '',\n case_id: '',\n role: '',\n text: '',\n rights: '',\n};\n\nexport const Default = () => {\n const { search, results } = useStaticSearch<DataType, InitialFiltersType>({\n fields,\n data,\n initialFilters,\n });\n const navigate = (url) => {\n if (window.history.pushState) {\n const newUrl =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n url;\n window.history.pushState({ path: newUrl }, '', newUrl);\n }\n };\n const { search: urlSearch, values } = useURLParamsSearch(search, {\n navigate,\n fields,\n });\n\n return (\n <FilteredResults\n data={results}\n variant=\"block\"\n currentFilters={values}\n defaultFilters={initialFilters}\n fields={fields}\n onSearch={urlSearch}\n >\n <DataTable dataConfig={dataConfig} data={results} />\n </FilteredResults>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAElB,6BAEO;AACP,uBAA0B;AAC1B,mBAGO;AACP,mBAAuC;AACvC,kBAAiB;AAEjB,MAAM,SAAsB;AAAA,EAC1B;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,WAAW;AAAA,MACX,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,WAAW;AAAA,MACX,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,WAAW;AAAA,MACX,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,cAAc,CAAC,UAAU;AAC7B,SAAO,6BAAAA,QAAA,cAAC,YAAAC,SAAA,EAAK,MAAM,KAAK,KAAK,MAAK,KAAM;AAC1C;AACA,MAAM,gBAAgB,CAAC,UAAU;AAC/B,SAAO,6BAAAD,QAAA,2BAAAA,QAAA,gBAAG,QAAQ,6BAAAA,QAAA,cAAC,4BAAU,IAAK,6BAAAA,QAAA,cAAC,8BAAY,CAAG;AACpD;AAUA,MAAM,OAAmB;AAAA,EACvB;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AACF;AAEA,MAAM,aAA+B;AAAA,EACnC;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,kBAAkB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,kBAAkB;AAAA,EACpB;AACF;AAMA,MAAM,iBAAqC;AAAA,EACzC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AACV;AAEO,MAAM,UAAU,MAAM;AAC3B,QAAM,EAAE,QAAQ,QAAQ,QAAI,8BAA8C;AAAA,IACxE;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,WAAW,CAAC,QAAQ;AACxB,QAAI,OAAO,QAAQ,WAAW;AAC5B,YAAM,SACJ,OAAO,SAAS,WAChB,OACA,OAAO,SAAS,OAChB,OAAO,SAAS,WAChB;AACF,aAAO,QAAQ,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,MAAM;AAAA,IACvD;AAAA,EACF;AACA,QAAM,EAAE,QAAQ,WAAW,OAAO,QAAI,iCAAmB,QAAQ;AAAA,IAC/D;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,6BAAAA,QAAA;AAAA,IAAC,uBAAAE;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN,SAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB;AAAA,MACA,UAAU;AAAA;AAAA,IAEV,6BAAAF,QAAA,cAAC,8BAAU,YAAwB,MAAM,SAAS;AAAA,EACpD;AAEJ;",
6
+ "names": ["React", "Link", "FilteredResults"]
7
+ }
@@ -0,0 +1,132 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var hooks_exports = {};
19
+ __export(hooks_exports, {
20
+ getOptionLabelForSelectValue: () => getOptionLabelForSelectValue,
21
+ isBooleanString: () => isBooleanString,
22
+ normalizeText: () => normalizeText,
23
+ useStaticSearch: () => useStaticSearch,
24
+ useURLParamsSearch: () => useURLParamsSearch
25
+ });
26
+ module.exports = __toCommonJS(hooks_exports);
27
+ var import_react = require("react");
28
+ function isBooleanString(str) {
29
+ return /^(true|false)$/i.test(str);
30
+ }
31
+ function normalizeText(text) {
32
+ return text.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
33
+ }
34
+ const getOptionLabelForSelectValue = (field, value) => {
35
+ if (field.extra?.options) {
36
+ const matchedOption = field.extra.options.find(
37
+ (option) => option.value.toString() === value?.toString()
38
+ );
39
+ if (matchedOption) {
40
+ return matchedOption.label.primary;
41
+ }
42
+ }
43
+ return value;
44
+ };
45
+ const useURLParamsSearch = (searchFunc, { navigate, fields }) => {
46
+ const urlParams = new URLSearchParams(window.location.search);
47
+ const currentParams = Object.fromEntries(urlParams.entries());
48
+ const values = fields.reduce((newValues, field) => {
49
+ if (currentParams[field.key]) {
50
+ newValues[field.key] = currentParams[field.key];
51
+ }
52
+ return newValues;
53
+ }, {});
54
+ const search = (params) => {
55
+ navigate(
56
+ "?" + new URLSearchParams(
57
+ // @ts-ignore
58
+ Object.entries({ ...currentParams, ...params }).filter(
59
+ ([_, value]) => !!value
60
+ )
61
+ ).toString()
62
+ );
63
+ return searchFunc(params);
64
+ };
65
+ return { search, values };
66
+ };
67
+ function useStaticSearch({ fields, data, initialFilters }) {
68
+ const [results, setResults] = (0, import_react.useState)(data);
69
+ (0, import_react.useEffect)(() => {
70
+ search(initialFilters);
71
+ }, [initialFilters]);
72
+ const search = (filters) => {
73
+ if (!filters || Object.keys(filters).every((key) => filters[key] === "")) {
74
+ setResults(data);
75
+ return;
76
+ }
77
+ const newResults = data.filter((row) => {
78
+ const filterKeys = Object.keys(filters);
79
+ const enabledFilters = filterKeys.filter(
80
+ (filterKey) => filters[filterKey]?.toString() && row[filterKey]?.toString()
81
+ );
82
+ const freeTextFilters = filterKeys.filter(
83
+ (filterKey) => filters[filterKey]?.toString() && !row[filterKey]?.toString()
84
+ );
85
+ let filtersMatchingValue = false;
86
+ if (enabledFilters.length > 0) {
87
+ filtersMatchingValue = enabledFilters.every((filterKey) => {
88
+ if (filters[filterKey]?.toString() !== row[filterKey]?.toString()) {
89
+ const field = fields.find((f) => f.key === filterKey);
90
+ const optionsObj = field?.extra?.options.find(
91
+ (option) => option?.label?.primary === row[filterKey]
92
+ );
93
+ return optionsObj?.value.toString() === filters[filterKey]?.toString();
94
+ }
95
+ filtersMatchingValue = true;
96
+ return filtersMatchingValue;
97
+ });
98
+ if (!filtersMatchingValue) {
99
+ return false;
100
+ }
101
+ }
102
+ if (freeTextFilters.length > 0) {
103
+ return freeTextFilters.every((filterKey) => {
104
+ return Object.values(row).some((value) => {
105
+ if (typeof value !== "string") {
106
+ return false;
107
+ }
108
+ const normalizedItemValue = normalizeText(
109
+ value.toString().toLowerCase()
110
+ );
111
+ const normalizedFilterValue = normalizeText(
112
+ filters[filterKey]?.toString().toLowerCase().trim() || ""
113
+ );
114
+ return normalizedItemValue.includes(normalizedFilterValue);
115
+ });
116
+ });
117
+ }
118
+ return filtersMatchingValue;
119
+ });
120
+ setResults(newResults);
121
+ };
122
+ return (0, import_react.useMemo)(() => ({ search, results }), [search, results]);
123
+ }
124
+ // Annotate the CommonJS export names for ESM import in node:
125
+ 0 && (module.exports = {
126
+ getOptionLabelForSelectValue,
127
+ isBooleanString,
128
+ normalizeText,
129
+ useStaticSearch,
130
+ useURLParamsSearch
131
+ });
132
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/FilteredResults/hooks.ts"],
4
+ "sourcesContent": ["import { useState, useEffect, useMemo } from 'react';\nimport { FieldSpec } from '@digigov/form/types';\nimport { ScalarType } from '@digigov/react-modules/FilteredResults';\n\nexport function isBooleanString(str: string): boolean {\n return /^(true|false)$/i.test(str);\n}\n\nexport function normalizeText(text: string): string {\n return text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\nexport const getOptionLabelForSelectValue = (field, value) => {\n if (field.extra?.options) {\n const matchedOption = field.extra.options.find(\n (option) => option.value.toString() === value?.toString()\n );\n if (matchedOption) {\n return matchedOption.label.primary;\n }\n }\n return value;\n};\n\nexport const useURLParamsSearch = (searchFunc, { navigate, fields }) => {\n const urlParams = new URLSearchParams(window.location.search);\n const currentParams = Object.fromEntries(urlParams.entries());\n const values = fields.reduce((newValues, field) => {\n if (currentParams[field.key]) {\n newValues[field.key] = currentParams[field.key];\n }\n return newValues;\n }, {});\n\n const search = (params) => {\n navigate(\n '?' +\n new URLSearchParams(\n // @ts-ignore\n Object.entries({ ...currentParams, ...params }).filter(\n ([_, value]) => !!value\n )\n ).toString()\n );\n return searchFunc(params);\n };\n return { search, values };\n};\n\ninterface UseStaticSearchProps<\n DT extends Record<string, ScalarType>,\n FT extends Record<string, ScalarType>,\n> {\n fields: FieldSpec[];\n data: DT[];\n initialFilters: FT;\n}\n\nexport function useStaticSearch<\n DT extends Record<string, ScalarType>,\n FT extends Record<string, ScalarType>,\n>({ fields, data, initialFilters }: UseStaticSearchProps<DT, FT>) {\n const [results, setResults] = useState<DT[]>(data);\n\n useEffect(() => {\n search(initialFilters);\n }, [initialFilters]);\n\n const search = (filters: FT) => {\n if (!filters || Object.keys(filters).every((key) => filters[key] === '')) {\n setResults(data);\n return;\n }\n\n const newResults = data.filter((row) => {\n const filterKeys = Object.keys(filters);\n const enabledFilters = filterKeys.filter(\n (filterKey) =>\n filters[filterKey]?.toString() && row[filterKey]?.toString()\n );\n const freeTextFilters = filterKeys.filter(\n (filterKey) =>\n filters[filterKey]?.toString() && !row[filterKey]?.toString()\n );\n let filtersMatchingValue = false;\n\n // Filter the fields that exists as columns in table\n if (enabledFilters.length > 0) {\n filtersMatchingValue = enabledFilters.every((filterKey) => {\n if (filters[filterKey]?.toString() !== row[filterKey]?.toString()) {\n const field = fields.find((f) => f.key === filterKey);\n const optionsObj = field?.extra?.options.find(\n (option) => option?.label?.primary === row[filterKey]\n );\n return (\n optionsObj?.value.toString() === filters[filterKey]?.toString()\n );\n }\n filtersMatchingValue = true;\n return filtersMatchingValue;\n });\n if (!filtersMatchingValue) {\n return false;\n }\n }\n // Filter the free text fields (doesn't exist as columns)\n if (freeTextFilters.length > 0) {\n return freeTextFilters.every((filterKey) => {\n return Object.values(row).some((value) => {\n if (typeof value !== 'string') {\n return false;\n }\n const normalizedItemValue = normalizeText(\n value.toString().toLowerCase()\n );\n\n const normalizedFilterValue = normalizeText(\n filters[filterKey]?.toString().toLowerCase().trim() || ''\n );\n return normalizedItemValue.includes(normalizedFilterValue);\n });\n });\n }\n return filtersMatchingValue;\n });\n\n setResults(newResults);\n };\n\n return useMemo(() => ({ search, results }), [search, results]);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,155 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var FilteredResults_exports = {};
29
+ __export(FilteredResults_exports, {
30
+ BlockFilteredResults: () => BlockFilteredResults,
31
+ DrawerFilteredResults: () => DrawerFilteredResults,
32
+ FilteredResults: () => FilteredResults,
33
+ FormBuilderSyncValues: () => FormBuilderSyncValues,
34
+ default: () => FilteredResults_default
35
+ });
36
+ module.exports = __toCommonJS(FilteredResults_exports);
37
+ var import_react = __toESM(require("react"));
38
+ var import_FormBuilder = __toESM(require("@digigov/form/FormBuilder"));
39
+ var import_FormContext = require("@digigov/form/FormContext");
40
+ var import_FilterChips = require("@digigov/react-modules/FilteredResults/FilterChips");
41
+ var import_FilterFields = require("@digigov/react-modules/FilteredResults/FilterFields");
42
+ var import_CloseButton = __toESM(require("@digigov/ui/app/CloseButton"));
43
+ var import_FilterContainer = __toESM(require("@digigov/ui/app/FilterContainer"));
44
+ var import_Button = require("@digigov/ui/form/Button");
45
+ var import_Grid = require("@digigov/ui/layouts/Grid");
46
+ var import_Hidden = require("@digigov/ui/layouts/Hidden");
47
+ var import_SectionBreak = require("@digigov/ui/layouts/SectionBreak");
48
+ var import_Drawer = require("@digigov/ui/navigation/Drawer");
49
+ var import_hooks = require("@digigov/ui/navigation/Drawer/hooks");
50
+ var import_Heading = require("@digigov/ui/typography/Heading");
51
+ const FormBuilderSyncValues = ({ values, autoSubmit }) => {
52
+ const form = (0, import_react.useContext)(import_FormContext.FormContext);
53
+ const previousValues = form.getValues();
54
+ (0, import_react.useEffect)(() => {
55
+ const mergedObject = { ...values, ...previousValues };
56
+ let shouldSubmit = false;
57
+ for (const key in mergedObject) {
58
+ if (values[key] !== void 0 && previousValues[key] !== values[key]) {
59
+ shouldSubmit = true;
60
+ previousValues[key] = values[key];
61
+ form.setValue(key, values[key]);
62
+ }
63
+ }
64
+ if (autoSubmit && shouldSubmit) {
65
+ form.submit();
66
+ }
67
+ }, [values]);
68
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null);
69
+ };
70
+ const DrawerFilteredResults = import_react.default.forwardRef(
71
+ function DrawerFilteredResults2({ fields, direction = "left", ...props }, ref) {
72
+ const { registerDrawer, registerAction, currentOpen } = (0, import_hooks.useDrawer)();
73
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, currentOpen && /* @__PURE__ */ import_react.default.createElement(import_Grid.Grid, { item: true, xs: 12, md: 12, lg: 4, ref }, /* @__PURE__ */ import_react.default.createElement(
74
+ import_Drawer.Drawer,
75
+ {
76
+ ...registerDrawer("filters-drawer", {
77
+ upRelative: "lg",
78
+ direction
79
+ })
80
+ },
81
+ /* @__PURE__ */ import_react.default.createElement(import_Drawer.DrawerHeading, { ...registerAction("filters-drawer", "close") }, /* @__PURE__ */ import_react.default.createElement(import_Heading.Heading, { size: "md" }, "\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1")),
82
+ /* @__PURE__ */ import_react.default.createElement(import_FilterContainer.FilterContent, null, /* @__PURE__ */ import_react.default.createElement(import_FilterFields.FilterFields, { fields, horizontal: false }))
83
+ )), /* @__PURE__ */ import_react.default.createElement(import_Grid.Grid, { item: true, xs: 12, md: 12, lg: currentOpen ? 8 : 12 }, /* @__PURE__ */ import_react.default.createElement(
84
+ import_Button.Button,
85
+ {
86
+ mb: 4,
87
+ ...registerAction(
88
+ "filters-drawer",
89
+ currentOpen === "filters-drawer" ? "close" : "open"
90
+ ),
91
+ color: "secondary"
92
+ },
93
+ "\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1"
94
+ ), /* @__PURE__ */ import_react.default.createElement(import_FilterChips.FilterChips, null), props.children));
95
+ }
96
+ );
97
+ const BlockFilteredResults = import_react.default.forwardRef(
98
+ function BlockFilteredResults2({ fields, ...props }, ref) {
99
+ const [open, setOpen] = import_react.default.useState(true);
100
+ return /* @__PURE__ */ import_react.default.createElement(import_Grid.Grid, { item: true, xs: 12, ref }, /* @__PURE__ */ import_react.default.createElement(import_FilterContainer.default, { open }, /* @__PURE__ */ import_react.default.createElement(import_FilterContainer.FilterHeadingContainer, null, /* @__PURE__ */ import_react.default.createElement(import_Hidden.Hidden, { mdUp: true }, /* @__PURE__ */ import_react.default.createElement(import_CloseButton.default, { onClick: () => setOpen(false) }, "\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF")), /* @__PURE__ */ import_react.default.createElement(import_Heading.Heading, { size: "md" }, "\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1")), /* @__PURE__ */ import_react.default.createElement(import_FilterContainer.FilterContent, null, /* @__PURE__ */ import_react.default.createElement(import_FilterChips.FilterChips, null), /* @__PURE__ */ import_react.default.createElement(import_FilterFields.FilterFields, { fields, horizontal: true }))), /* @__PURE__ */ import_react.default.createElement(
101
+ import_Button.Button,
102
+ {
103
+ color: "secondary",
104
+ mdUpHidden: true,
105
+ mb: 4,
106
+ onClick: () => setOpen(true)
107
+ },
108
+ "\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1"
109
+ ), /* @__PURE__ */ import_react.default.createElement(import_SectionBreak.SectionBreak, { size: "md", visible: false }), props.children);
110
+ }
111
+ );
112
+ const FilteredResults = import_react.default.forwardRef(function FilteredResults2({
113
+ fields,
114
+ onSearch,
115
+ variant = "block",
116
+ defaultFilters,
117
+ currentFilters,
118
+ children
119
+ }, ref) {
120
+ const isDrawer = variant.startsWith("drawer-");
121
+ return /* @__PURE__ */ import_react.default.createElement(
122
+ import_FormBuilder.default,
123
+ {
124
+ onSubmit: onSearch,
125
+ initial: defaultFilters,
126
+ fields,
127
+ grid: true,
128
+ ref
129
+ },
130
+ currentFilters && /* @__PURE__ */ import_react.default.createElement(FormBuilderSyncValues, { values: currentFilters, autoSubmit: true }),
131
+ isDrawer ? (
132
+ // @ts-ignore
133
+ /* @__PURE__ */ import_react.default.createElement(
134
+ DrawerFilteredResults,
135
+ {
136
+ fields,
137
+ direction: variant.split("-")[1]
138
+ },
139
+ children
140
+ )
141
+ ) : (
142
+ // @ts-ignore
143
+ /* @__PURE__ */ import_react.default.createElement(BlockFilteredResults, { fields }, children)
144
+ )
145
+ );
146
+ });
147
+ var FilteredResults_default = FilteredResults;
148
+ // Annotate the CommonJS export names for ESM import in node:
149
+ 0 && (module.exports = {
150
+ BlockFilteredResults,
151
+ DrawerFilteredResults,
152
+ FilteredResults,
153
+ FormBuilderSyncValues
154
+ });
155
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/FilteredResults/index.tsx"],
4
+ "sourcesContent": ["import React, { useContext, useEffect } from 'react';\nimport FormBuilder from '@digigov/form/FormBuilder';\nimport { FormContext } from '@digigov/form/FormContext';\nimport { FieldSpec } from '@digigov/form/types';\nimport { FilterChips } from '@digigov/react-modules/FilteredResults/FilterChips';\nimport { FilterFields } from '@digigov/react-modules/FilteredResults/FilterFields';\nimport CloseButton from '@digigov/ui/app/CloseButton';\nimport FilterContainer, {\n FilterContent,\n FilterHeadingContainer,\n} from '@digigov/ui/app/FilterContainer';\nimport { Button } from '@digigov/ui/form/Button';\nimport { Grid } from '@digigov/ui/layouts/Grid';\nimport { Hidden } from '@digigov/ui/layouts/Hidden';\nimport { SectionBreak } from '@digigov/ui/layouts/SectionBreak';\nimport { Drawer, DrawerHeading } from '@digigov/ui/navigation/Drawer';\nimport { useDrawer } from '@digigov/ui/navigation/Drawer/hooks';\nimport { Heading } from '@digigov/ui/typography/Heading';\n\nexport type ScalarType = string | number | boolean | null | undefined;\n\nexport interface DataConfigType {\n key: string;\n title: string;\n displayComponent?: (value: string | number | boolean) => React.ReactNode;\n}\nexport interface FilteredResultsProps<\n DT extends Record<string, ScalarType>,\n FT extends Record<string, ScalarType>,\n> {\n fields: FieldSpec[];\n data: DT[];\n variant?: 'drawer-left' | 'drawer-right' | 'block';\n defaultFilters?: FT;\n currentFilters?: FT;\n onSearch: (filters: unknown) => void;\n children?: React.ReactNode;\n}\n\nexport const FormBuilderSyncValues = ({ values, autoSubmit }) => {\n const form = useContext(FormContext);\n const previousValues = form.getValues();\n useEffect(() => {\n const mergedObject = { ...values, ...previousValues };\n let shouldSubmit = false;\n for (const key in mergedObject) {\n // catching the filters that have been parsed from url & avoid continuous submitting\n if (values[key] !== undefined && previousValues[key] !== values[key]) {\n shouldSubmit = true;\n previousValues[key] = values[key];\n form.setValue(key, values[key]);\n }\n }\n if (autoSubmit && shouldSubmit) {\n form.submit();\n }\n }, [values]);\n return <></>;\n};\n\nexport const DrawerFilteredResults = React.forwardRef<HTMLDivElement, unknown>(\n function DrawerFilteredResults(\n { fields, direction = 'left', ...props },\n ref\n ) {\n const { registerDrawer, registerAction, currentOpen } = useDrawer();\n\n return (\n <>\n {currentOpen && (\n <Grid item xs={12} md={12} lg={4} ref={ref}>\n <Drawer\n {...registerDrawer('filters-drawer', {\n upRelative: 'lg',\n direction,\n })}\n >\n <DrawerHeading {...registerAction('filters-drawer', 'close')}>\n <Heading size=\"md\">\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1</Heading>\n </DrawerHeading>\n <FilterContent>\n <FilterFields fields={fields} horizontal={false} />\n </FilterContent>\n </Drawer>\n </Grid>\n )}\n <Grid item xs={12} md={12} lg={currentOpen ? 8 : 12}>\n <Button\n mb={4}\n {...registerAction(\n 'filters-drawer',\n currentOpen === 'filters-drawer' ? 'close' : 'open'\n )}\n color=\"secondary\"\n >\n \u03A6\u03AF\u03BB\u03C4\u03C1\u03B1\n </Button>\n <FilterChips />\n {props.children}\n </Grid>\n </>\n );\n }\n);\n\nexport const BlockFilteredResults = React.forwardRef<HTMLDivElement, unknown>(\n function BlockFilteredResults({ fields, ...props }, ref) {\n const [open, setOpen] = React.useState(true);\n return (\n <Grid item xs={12} ref={ref}>\n <FilterContainer open={open}>\n <FilterHeadingContainer>\n <Hidden mdUp>\n <CloseButton onClick={() => setOpen(false)}>\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF</CloseButton>\n </Hidden>\n <Heading size=\"md\">\u03A6\u03AF\u03BB\u03C4\u03C1\u03B1</Heading>\n </FilterHeadingContainer>\n <FilterContent>\n <FilterChips />\n <FilterFields fields={fields} horizontal={true} />\n </FilterContent>\n </FilterContainer>\n <Button\n color=\"secondary\"\n mdUpHidden\n mb={4}\n onClick={() => setOpen(true)}\n >\n \u03A6\u03AF\u03BB\u03C4\u03C1\u03B1\n </Button>\n <SectionBreak size=\"md\" visible={false} />\n {props.children}\n </Grid>\n );\n }\n);\n\nexport const FilteredResults = React.forwardRef<\n HTMLFormElement,\n FilteredResultsProps<Record<string, ScalarType>, Record<string, ScalarType>>\n>(function FilteredResults(\n {\n fields,\n onSearch,\n variant = 'block',\n defaultFilters,\n currentFilters,\n children,\n },\n ref\n) {\n const isDrawer = variant.startsWith('drawer-');\n return (\n <FormBuilder\n onSubmit={onSearch}\n initial={defaultFilters}\n fields={fields}\n grid\n ref={ref}\n >\n {currentFilters && (\n <FormBuilderSyncValues values={currentFilters} autoSubmit={true} />\n )}\n {isDrawer ? (\n // @ts-ignore\n <DrawerFilteredResults\n fields={fields}\n direction={variant.split('-')[1]}\n >\n {children}\n </DrawerFilteredResults>\n ) : (\n // @ts-ignore\n <BlockFilteredResults fields={fields}>{children}</BlockFilteredResults>\n )}\n </FormBuilder>\n );\n});\n\nexport default FilteredResults;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "DrawerFilteredResults", "BlockFilteredResults", "FilterContainer", "CloseButton", "FilteredResults", "FormBuilder"]
7
+ }
@@ -0,0 +1,26 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var ReactModules_stories_exports = {};
19
+ __export(ReactModules_stories_exports, {
20
+ default: () => ReactModules_stories_default
21
+ });
22
+ module.exports = __toCommonJS(ReactModules_stories_exports);
23
+ var ReactModules_stories_default = {
24
+ title: "Digigov React Modules"
25
+ };
26
+ //# sourceMappingURL=ReactModules.stories.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ReactModules.stories.js"],
4
+ "sourcesContent": ["export default {\n title: 'Digigov React Modules',\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAO,+BAAQ;AAAA,EACb,OAAO;AACT;",
6
+ "names": []
7
+ }