@truedat/core 6.0.5 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,40 +8,472 @@ exports[`<SideMenu /> matches the latest snapshot 1`] = `
8
8
  <div
9
9
  class="ui vertical ui push left visible sidebar menu"
10
10
  >
11
- <div>
11
+ <div
12
+ class="active item selectable"
13
+ >
14
+ <a
15
+ href="/search"
16
+ >
17
+ <i
18
+ aria-hidden="true"
19
+ class="search large icon"
20
+ />
21
+ Search
22
+ </a>
23
+ </div>
24
+ <div
25
+ class="active item selectable"
26
+ >
27
+ <a
28
+ href="/concepts"
29
+ >
30
+ <i
31
+ aria-hidden="true"
32
+ class="tags large icon"
33
+ />
34
+ Glossary
35
+ </a>
36
+ <div
37
+ class="menu"
38
+ >
39
+ <a
40
+ class="link item"
41
+ href="/concepts"
42
+ >
43
+ Glossary
44
+ </a>
45
+ <a
46
+ class="link item"
47
+ href="/pendingConcepts"
48
+ >
49
+ Drafts
50
+ </a>
51
+ <a
52
+ class="link item"
53
+ href="/deprecatedConcepts"
54
+ >
55
+ Deprecated
56
+ </a>
57
+ <a
58
+ class="link item"
59
+ href="/links/concepts/management"
60
+ >
61
+ Links manager
62
+ </a>
63
+ <a
64
+ class="link item"
65
+ href="/concepts/bulk_upload_event"
66
+ >
67
+ My loads
68
+ </a>
69
+ </div>
70
+ </div>
71
+ <div
72
+ class="active item selectable"
73
+ >
74
+ <a
75
+ href="/structures"
76
+ >
77
+ <i
78
+ aria-hidden="true"
79
+ class="block layout large icon"
80
+ />
81
+ Catalog
82
+ </a>
83
+ <div
84
+ class="menu"
85
+ >
86
+ <a
87
+ class="link item"
88
+ href="/structures"
89
+ >
90
+ Structures
91
+ </a>
92
+ <a
93
+ class="link item"
94
+ href="/buckets/metadata.region"
95
+ >
96
+ metadata.region
97
+ </a>
98
+ <a
99
+ class="link item"
100
+ href="/buckets/note.layer"
101
+ >
102
+ note.layer
103
+ </a>
104
+ <a
105
+ class="link item"
106
+ href="/referenceDatasets"
107
+ >
108
+ Reference Data
109
+ </a>
110
+ <a
111
+ class="link item"
112
+ href="/structureNotes"
113
+ >
114
+ Pending notes
115
+ </a>
116
+ <a
117
+ class="link item"
118
+ href="/bulkUpdateTemplateContentEvents"
119
+ >
120
+ My loads
121
+ </a>
122
+ <a
123
+ class="link item"
124
+ href="/bucketViewConfigs"
125
+ >
126
+ Catalog views
127
+ </a>
128
+ <a
129
+ class="link item"
130
+ href="/structureTypes"
131
+ >
132
+ Structure Types
133
+ </a>
134
+ <a
135
+ class="link item"
136
+ href="/structureTags"
137
+ >
138
+ Structure Tags
139
+ </a>
140
+ </div>
141
+ </div>
142
+ <div
143
+ class="active item selectable"
144
+ >
145
+ <a
146
+ href="/structuresGrantRequests"
147
+ >
148
+ <i
149
+ aria-hidden="true"
150
+ class="key large icon"
151
+ />
152
+ Grants
153
+ </a>
154
+ <div
155
+ class="menu"
156
+ >
157
+ <a
158
+ class="link item"
159
+ href="/structuresGrantRequests"
160
+ >
161
+ Structures grant requests
162
+ </a>
163
+ <a
164
+ class="link item"
165
+ href="/myGrants"
166
+ >
167
+ My Grants
168
+ </a>
169
+ <a
170
+ class="link item"
171
+ href="/grants"
172
+ >
173
+ Grants
174
+ </a>
175
+ <a
176
+ class="link item"
177
+ href="/myGrantRequests"
178
+ >
179
+ My Grant Requests
180
+ </a>
181
+ <a
182
+ class="link item"
183
+ href="/grantRequests"
184
+ >
185
+ Approve Grant Requests
186
+ </a>
187
+ <a
188
+ class="link item"
189
+ href="/grantApprovalRules"
190
+ >
191
+ Approval Rules
192
+ </a>
193
+ </div>
194
+ </div>
195
+ <div
196
+ class="active item selectable"
197
+ >
198
+ <a
199
+ href="/rules"
200
+ >
201
+ <i
202
+ aria-hidden="true"
203
+ class="check square large icon"
204
+ />
205
+ Data Quality
206
+ </a>
207
+ <div
208
+ class="menu"
209
+ >
210
+ <a
211
+ class="link item"
212
+ href="/rules"
213
+ >
214
+ Quality Rules
215
+ </a>
216
+ <a
217
+ class="link item"
218
+ href="/implementations"
219
+ >
220
+ Implementations
221
+ </a>
222
+ <a
223
+ class="link item"
224
+ href="/pendingImplementations"
225
+ >
226
+ Drafts
227
+ </a>
228
+ <a
229
+ class="link item"
230
+ href="/deprecatedImplementations"
231
+ >
232
+ Deprecated
233
+ </a>
234
+ <a
235
+ class="link item"
236
+ href="/executionGroups"
237
+ >
238
+ My Executions
239
+ </a>
240
+ </div>
241
+ </div>
242
+ <div
243
+ class="active item selectable"
244
+ >
245
+ <a
246
+ href="/dataViews"
247
+ >
248
+ <i
249
+ aria-hidden="true"
250
+ class="weight large icon"
251
+ />
252
+ quality_experience
253
+ </a>
254
+ <div
255
+ class="menu"
256
+ >
257
+ <a
258
+ class="link item"
259
+ href="/dataViews"
260
+ >
261
+ dataViews
262
+ </a>
263
+ <a
264
+ class="link item"
265
+ href="/functions"
266
+ >
267
+ functions
268
+ </a>
269
+ <a
270
+ class="link item"
271
+ href="/qualityControls"
272
+ >
273
+ quality_controls_published
274
+ </a>
275
+ <a
276
+ class="link item"
277
+ href="/qualityControls/deprecated"
278
+ >
279
+ quality_controls_deprecated
280
+ </a>
281
+ <a
282
+ class="link item"
283
+ href="/qualityControls/drafts"
284
+ >
285
+ quality_controls_drafts
286
+ </a>
287
+ <a
288
+ class="link item"
289
+ href="/qualityControls/executionGroups"
290
+ >
291
+ quality_controls_execution_groups
292
+ </a>
293
+ </div>
294
+ </div>
295
+ <div
296
+ class="active item selectable"
297
+ >
298
+ <a
299
+ href="/graphs"
300
+ >
301
+ <i
302
+ aria-hidden="true"
303
+ class="shuffle large icon"
304
+ />
305
+ Lineage Analysis
306
+ </a>
12
307
  <div
13
- aria-expanded="false"
14
- class="ui item dropdown"
15
- role="listbox"
16
- tabindex="0"
17
- >
18
- <a
19
- class="ui"
20
- href="/search"
21
- >
22
- <i
23
- aria-hidden="true"
24
- class="search large icon"
25
- />
26
- Search
27
- </a>
28
- <div
29
- class="menu transition"
30
- >
31
- <a
32
- aria-checked="false"
33
- class="item"
34
- href="/search"
35
- name="search"
36
- role="option"
37
- >
38
- <span
39
- class="text"
40
- >
41
- Search
42
- </span>
43
- </a>
44
- </div>
308
+ class="menu"
309
+ >
310
+ <a
311
+ class="link item"
312
+ href="/graphs"
313
+ >
314
+ Lineage Analysis
315
+ </a>
316
+ <a
317
+ class="link item"
318
+ href="/lineageEvents"
319
+ >
320
+ My graphs
321
+ </a>
322
+ </div>
323
+ </div>
324
+ <div
325
+ class="active item selectable"
326
+ >
327
+ <a
328
+ href="/ingests"
329
+ >
330
+ <i
331
+ aria-hidden="true"
332
+ class="hdd outline large icon"
333
+ />
334
+ Data Requests
335
+ </a>
336
+ </div>
337
+ <div
338
+ class="active item selectable"
339
+ >
340
+ <a
341
+ href="/resource_mappings"
342
+ >
343
+ <i
344
+ aria-hidden="true"
345
+ class="lightbulb outline large icon"
346
+ />
347
+ artificial_intelligence
348
+ </a>
349
+ <div
350
+ class="menu"
351
+ >
352
+ <a
353
+ class="link item"
354
+ href="/resource_mappings"
355
+ >
356
+ resource_mappings
357
+ </a>
358
+ <a
359
+ class="link item"
360
+ href="/prompts"
361
+ >
362
+ prompts
363
+ </a>
364
+ </div>
365
+ </div>
366
+ <div
367
+ class="active item selectable"
368
+ >
369
+ <a
370
+ href="/domains"
371
+ >
372
+ <i
373
+ aria-hidden="true"
374
+ class="sitemap large icon"
375
+ />
376
+ Taxonomy
377
+ </a>
378
+ </div>
379
+ <div
380
+ class="active item selectable"
381
+ >
382
+ <a
383
+ href="/users"
384
+ >
385
+ <i
386
+ aria-hidden="true"
387
+ class="users large icon"
388
+ />
389
+ Members
390
+ </a>
391
+ <div
392
+ class="menu"
393
+ >
394
+ <a
395
+ class="link item"
396
+ href="/users"
397
+ >
398
+ Users
399
+ </a>
400
+ <a
401
+ class="link item"
402
+ href="/roles"
403
+ >
404
+ Roles
405
+ </a>
406
+ </div>
407
+ </div>
408
+ <div
409
+ class="active item selectable"
410
+ >
411
+ <a
412
+ href="/templates"
413
+ >
414
+ <i
415
+ aria-hidden="true"
416
+ class="setting large icon"
417
+ />
418
+ Administration
419
+ </a>
420
+ <div
421
+ class="menu"
422
+ >
423
+ <a
424
+ class="link item"
425
+ href="/templates"
426
+ >
427
+ Templates
428
+ </a>
429
+ <a
430
+ class="link item"
431
+ href="/hierarchies"
432
+ >
433
+ Hierarchies
434
+ </a>
435
+ <a
436
+ class="link item"
437
+ href="/relationTags"
438
+ >
439
+ Relations
440
+ </a>
441
+ <a
442
+ class="link item"
443
+ href="/subscriptions"
444
+ >
445
+ Subscriptions
446
+ </a>
447
+ <a
448
+ class="link item"
449
+ href="/sources"
450
+ >
451
+ Sources
452
+ </a>
453
+ <a
454
+ class="link item"
455
+ href="/jobs"
456
+ >
457
+ Jobs
458
+ </a>
459
+ <a
460
+ class="link item"
461
+ href="/configurations"
462
+ >
463
+ Configuration
464
+ </a>
465
+ <a
466
+ class="link item"
467
+ href="/i18n/messages"
468
+ >
469
+ Translations
470
+ </a>
471
+ <a
472
+ class="link item"
473
+ href="/tasks"
474
+ >
475
+ Tasks
476
+ </a>
45
477
  </div>
46
478
  </div>
47
479
  <a
@@ -0,0 +1,76 @@
1
+ import _ from "lodash/fp";
2
+ import React from "react";
3
+ import { FormattedMessage } from "react-intl";
4
+ import { Label, Icon, Dropdown, Dimmer, Loader } from "semantic-ui-react";
5
+ import { accentInsensitivePathOrder } from "@truedat/core/services/sort";
6
+ import FilterItem from "./FilterItem";
7
+
8
+ import { useSearchContext } from "./SearchContext";
9
+
10
+ const removePrefix = _.replace(/^.*\./, "");
11
+
12
+ export default function FilterDropdown() {
13
+ const {
14
+ loadingFilters: loading,
15
+ filter,
16
+ options,
17
+ activeFilterSelectedValues,
18
+
19
+ openFilter,
20
+ closeFilter,
21
+ removeFilter,
22
+ toggleFilterValue,
23
+ } = useSearchContext();
24
+
25
+ return (
26
+ <Dropdown
27
+ item
28
+ floating
29
+ scrolling
30
+ icon={false}
31
+ upward={false}
32
+ trigger={
33
+ <Label key={filter}>
34
+ <FormattedMessage
35
+ id={`filters.${filter}`}
36
+ defaultMessage={removePrefix(filter)}
37
+ />
38
+ <Icon
39
+ name="delete"
40
+ onClick={(e) => {
41
+ e.preventDefault();
42
+ e.stopPropagation();
43
+ removeFilter({ filter });
44
+ }}
45
+ />
46
+ </Label>
47
+ }
48
+ onOpen={() => openFilter({ filter })}
49
+ onClose={() => closeFilter({ filter })}
50
+ open={!_.isEmpty(options)}
51
+ >
52
+ <Dimmer.Dimmable as={Dropdown.Menu} dimmed={loading}>
53
+ {options &&
54
+ _.flow(
55
+ _.sortBy(accentInsensitivePathOrder("text")),
56
+ _.map.convert({ cap: false })((option, i) => (
57
+ <FilterItem
58
+ key={i}
59
+ filter={filter}
60
+ option={option}
61
+ toggleFilterValue={toggleFilterValue}
62
+ active={_.includes(_.prop("value")(option))(
63
+ activeFilterSelectedValues
64
+ )}
65
+ />
66
+ ))
67
+ )(options)}
68
+ {loading && (
69
+ <Dimmer active inverted>
70
+ <Loader size="tiny" />
71
+ </Dimmer>
72
+ )}
73
+ </Dimmer.Dimmable>
74
+ </Dropdown>
75
+ );
76
+ }
@@ -0,0 +1,49 @@
1
+ import _ from "lodash/fp";
2
+ import React from "react";
3
+ import PropTypes from "prop-types";
4
+ import { FormattedMessage } from "react-intl";
5
+ import { Icon, Dropdown } from "semantic-ui-react";
6
+
7
+ const FilterItemText = ({ filterName, text }) =>
8
+ _.trim(text) ? (
9
+ <FormattedMessage
10
+ id={`filters.${filterName}.${_.trim(text)}`}
11
+ defaultMessage={_.trim(text)}
12
+ />
13
+ ) : (
14
+ <i>
15
+ <FormattedMessage id="filter.empty" />
16
+ </i>
17
+ );
18
+
19
+ const preventDefault = (e, callback) => {
20
+ e && e.preventDefault();
21
+ e && e.stopPropagation();
22
+ callback();
23
+ };
24
+
25
+ export const FilterItem = ({
26
+ active,
27
+ filter,
28
+ toggleFilterValue,
29
+ option: { text, value },
30
+ }) => (
31
+ <Dropdown.Item
32
+ onClick={(e) =>
33
+ preventDefault(e, () => toggleFilterValue({ filter, value }))
34
+ }
35
+ active={active}
36
+ >
37
+ <Icon name={active ? "check square outline" : "square outline"} />
38
+ <FilterItemText filterName={filter} text={text} />
39
+ </Dropdown.Item>
40
+ );
41
+
42
+ FilterItem.propTypes = {
43
+ filterName: PropTypes.string,
44
+ text: PropTypes.string,
45
+ toggleFilterValue: PropTypes.func,
46
+ option: PropTypes.object,
47
+ };
48
+
49
+ export default FilterItem;