ixbrl-viewer 1.4.21__py3-none-any.whl → 1.4.49__py3-none-any.whl

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.

Potentially problematic release.


This version of ixbrl-viewer might be problematic. Click here for more details.

Files changed (114) hide show
  1. iXBRLViewerPlugin/__init__.py +77 -49
  2. iXBRLViewerPlugin/_version.py +2 -2
  3. iXBRLViewerPlugin/constants.py +86 -1
  4. iXBRLViewerPlugin/featureConfig.py +4 -1
  5. iXBRLViewerPlugin/iXBRLViewer.py +202 -131
  6. iXBRLViewerPlugin/plugin.py +7 -0
  7. iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +1 -1
  8. iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt +9 -2
  9. iXBRLViewerPlugin/viewer/i18next-parser.config.js +1 -1
  10. iXBRLViewerPlugin/viewer/src/data/utr.json +1 -0
  11. iXBRLViewerPlugin/viewer/src/html/fact-details.html +69 -38
  12. iXBRLViewerPlugin/viewer/src/html/footer-logo.html +4 -0
  13. iXBRLViewerPlugin/viewer/src/html/footnote-details.html +1 -1
  14. iXBRLViewerPlugin/viewer/src/html/inspector.html +324 -211
  15. iXBRLViewerPlugin/viewer/src/i18n/cy/balancetypes.json +1 -0
  16. iXBRLViewerPlugin/viewer/src/i18n/cy/currencies.json +13 -0
  17. iXBRLViewerPlugin/viewer/src/i18n/cy/datatypes.json +9 -0
  18. iXBRLViewerPlugin/viewer/src/i18n/cy/labelroles.json +24 -0
  19. iXBRLViewerPlugin/viewer/src/i18n/cy/referenceparts.json +10 -0
  20. iXBRLViewerPlugin/viewer/src/i18n/cy/scale.json +16 -0
  21. iXBRLViewerPlugin/viewer/src/i18n/cy/tooltips.json +17 -0
  22. iXBRLViewerPlugin/viewer/src/i18n/cy/translation.json +179 -0
  23. iXBRLViewerPlugin/viewer/src/i18n/en/balancetypes.json +4 -0
  24. iXBRLViewerPlugin/viewer/src/i18n/en/datatypes.json +10 -0
  25. iXBRLViewerPlugin/viewer/src/i18n/en/labelroles.json +4 -0
  26. iXBRLViewerPlugin/viewer/src/i18n/en/scale.json +16 -0
  27. iXBRLViewerPlugin/viewer/src/i18n/en/tooltips.json +17 -0
  28. iXBRLViewerPlugin/viewer/src/i18n/en/translation.json +56 -24
  29. iXBRLViewerPlugin/viewer/src/i18n/es/balancetypes.json +4 -0
  30. iXBRLViewerPlugin/viewer/src/i18n/es/datatypes.json +10 -0
  31. iXBRLViewerPlugin/viewer/src/i18n/es/labelroles.json +24 -0
  32. iXBRLViewerPlugin/viewer/src/i18n/es/scale.json +16 -0
  33. iXBRLViewerPlugin/viewer/src/i18n/es/tooltips.json +17 -0
  34. iXBRLViewerPlugin/viewer/src/i18n/es/translation.json +70 -37
  35. iXBRLViewerPlugin/viewer/src/icons/dark-mode.svg +4 -0
  36. iXBRLViewerPlugin/viewer/src/img/arelle-dark.svg +179 -0
  37. iXBRLViewerPlugin/viewer/src/img/inline-viewer-dark.svg +59 -0
  38. iXBRLViewerPlugin/viewer/src/js/accordian.js +3 -2
  39. iXBRLViewerPlugin/viewer/src/js/aspect.js +18 -10
  40. iXBRLViewerPlugin/viewer/src/js/aspect.test.js +2 -2
  41. iXBRLViewerPlugin/viewer/src/js/balance.js +14 -0
  42. iXBRLViewerPlugin/viewer/src/js/calculation.js +45 -34
  43. iXBRLViewerPlugin/viewer/src/js/calculationInspector.js +4 -7
  44. iXBRLViewerPlugin/viewer/src/js/chart.js +23 -21
  45. iXBRLViewerPlugin/viewer/src/js/concept.js +27 -2
  46. iXBRLViewerPlugin/viewer/src/js/concept.test.js +23 -2
  47. iXBRLViewerPlugin/viewer/src/js/datatype.js +20 -0
  48. iXBRLViewerPlugin/viewer/src/js/datatype.test.js +62 -0
  49. iXBRLViewerPlugin/viewer/src/js/dialog.js +6 -4
  50. iXBRLViewerPlugin/viewer/src/js/fact.js +40 -7
  51. iXBRLViewerPlugin/viewer/src/js/fact.test.js +3 -0
  52. iXBRLViewerPlugin/viewer/src/js/index.js +11 -3
  53. iXBRLViewerPlugin/viewer/src/js/inspector.js +560 -160
  54. iXBRLViewerPlugin/viewer/src/js/inspector.test.js +1 -2
  55. iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js +129 -31
  56. iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js +133 -20
  57. iXBRLViewerPlugin/viewer/src/js/ixnode.js +1 -1
  58. iXBRLViewerPlugin/viewer/src/js/menu.js +25 -7
  59. iXBRLViewerPlugin/viewer/src/js/number-matcher.js +2 -2
  60. iXBRLViewerPlugin/viewer/src/js/outline.js +2 -4
  61. iXBRLViewerPlugin/viewer/src/js/period.js +0 -1
  62. iXBRLViewerPlugin/viewer/src/js/report.js +68 -13
  63. iXBRLViewerPlugin/viewer/src/js/report.test.js +77 -6
  64. iXBRLViewerPlugin/viewer/src/js/reportset.js +33 -3
  65. iXBRLViewerPlugin/viewer/src/js/reportset.test.js +32 -6
  66. iXBRLViewerPlugin/viewer/src/js/search.js +61 -35
  67. iXBRLViewerPlugin/viewer/src/js/search.test.js +8 -5
  68. iXBRLViewerPlugin/viewer/src/js/summary.js +22 -0
  69. iXBRLViewerPlugin/viewer/src/js/summary.test.js +50 -13
  70. iXBRLViewerPlugin/viewer/src/js/tableExport.js +3 -3
  71. iXBRLViewerPlugin/viewer/src/js/taxonomynamer.js +34 -0
  72. iXBRLViewerPlugin/viewer/src/js/taxonomynamer.test.js +32 -0
  73. iXBRLViewerPlugin/viewer/src/js/theme.js +49 -0
  74. iXBRLViewerPlugin/viewer/src/js/unit.js +73 -2
  75. iXBRLViewerPlugin/viewer/src/js/unit.test.js +14 -3
  76. iXBRLViewerPlugin/viewer/src/js/util.js +21 -18
  77. iXBRLViewerPlugin/viewer/src/js/util.test.js +1 -0
  78. iXBRLViewerPlugin/viewer/src/js/utr.js +27 -0
  79. iXBRLViewerPlugin/viewer/src/js/viewer.js +40 -29
  80. iXBRLViewerPlugin/viewer/src/js/viewerOptions.js +0 -2
  81. iXBRLViewerPlugin/viewer/src/less/accordian.less +8 -4
  82. iXBRLViewerPlugin/viewer/src/less/block-list.less +12 -6
  83. iXBRLViewerPlugin/viewer/src/less/calculation-inspector.less +2 -2
  84. iXBRLViewerPlugin/viewer/src/less/chart.less +8 -5
  85. iXBRLViewerPlugin/viewer/src/less/colours-dark-mode.less +40 -0
  86. iXBRLViewerPlugin/viewer/src/less/colours.less +28 -21
  87. iXBRLViewerPlugin/viewer/src/less/common.less +1 -1
  88. iXBRLViewerPlugin/viewer/src/less/components.less +3 -3
  89. iXBRLViewerPlugin/viewer/src/less/core.less +2 -0
  90. iXBRLViewerPlugin/viewer/src/less/dialog.less +13 -10
  91. iXBRLViewerPlugin/viewer/src/less/form-controls.less +33 -11
  92. iXBRLViewerPlugin/viewer/src/less/inspector.less +556 -300
  93. iXBRLViewerPlugin/viewer/src/less/loader.less +2 -2
  94. iXBRLViewerPlugin/viewer/src/less/menu.less +33 -15
  95. iXBRLViewerPlugin/viewer/src/less/summary.less +16 -6
  96. iXBRLViewerPlugin/viewer/src/less/tabs.less +5 -5
  97. iXBRLViewerPlugin/viewer/src/less/text-mixins.less +2 -1
  98. iXBRLViewerPlugin/viewer/src/less/validation-report.less +1 -1
  99. iXBRLViewerPlugin/viewer/src/less/viewer.less +30 -18
  100. iXBRLViewerPlugin/viewer/webpack.common.js +19 -9
  101. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/METADATA +41 -14
  102. ixbrl_viewer-1.4.49.dist-info/RECORD +197 -0
  103. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/WHEEL +1 -1
  104. tests/puppeteer/framework/page_objects/doc_frame.js +3 -3
  105. tests/puppeteer/framework/page_objects/fact_details_panel.js +28 -0
  106. tests/puppeteer/puppeteer_test_run_via_intellij.jpg +0 -0
  107. tests/puppeteer/tests/fact_properties.test.js +10 -4
  108. tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py +117 -51
  109. iXBRLViewerPlugin/viewer/src/js/interact.min.js +0 -6
  110. ixbrl_viewer-1.4.21.dist-info/RECORD +0 -166
  111. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/LICENSE +0 -0
  112. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/NOTICE +0 -0
  113. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/entry_points.txt +0 -0
  114. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/top_level.txt +0 -0
@@ -3,6 +3,7 @@
3
3
  @import url("core.less");
4
4
  @import url("fonts.less");
5
5
  @import url("colours.less");
6
+ @import url("colours-dark-mode.less");
6
7
  @import url("common.less");
7
8
  @import (reference) "components.less";
8
9
  @import url("form-controls.less");
@@ -21,22 +22,102 @@
21
22
 
22
23
  @top-bar-height: 3.5rem;
23
24
 
25
+ :root {
26
+ --colour-bg-selected: @colour-bg-selected;
27
+ --colour-bg-tag: @colour-bg-tag;
28
+ --colour-bg: @colour-bg;
29
+ --colour-bg-fade: @colour-bg-fade;
30
+ --colour-border-grey: @colour-border-grey;
31
+ --colour-button-bg: @colour-button-bg;
32
+ --colour-button-primary-bg: @colour-button-primary-bg;
33
+ --colour-button-primary-border: @colour-button-primary-border;
34
+ --colour-foreground: @colour-foreground;
35
+ --colour-highlight-1: @colour-highlight-1;
36
+ --colour-highlight-2: @colour-highlight-2;
37
+ --colour-highlight-default: @colour-highlight-default;
38
+ --colour-icon-grey: @colour-icon-grey;
39
+ --colour-linked-fact: @colour-linked-fact;
40
+ --colour-loader: @colour-loader;
41
+ --colour-primary-focus: @colour-primary-focus;
42
+ --colour-primary: @colour-primary;
43
+ --colour-related-fact: @colour-related-fact;
44
+ --colour-row-odd: @colour-row-odd;
45
+ --colour-row-hover: @colour-row-hover;
46
+ --colour-text-form-value: @colour-text-form-value;
47
+ --colour-text-light: @colour-text-light;
48
+ --colour-text-title: @colour-text-title;
49
+ --colour-text: @colour-text;
50
+ --colour-warning: @colour-warning;
51
+ --top-bar-height: @top-bar-height;
52
+
53
+ .only-dark {
54
+ display: none;
55
+ }
56
+ }
57
+
58
+ :root[data-theme="theme-dark"] {
59
+ --colour-bg-selected: @colour-bg-selected-d;
60
+ --colour-bg-tag: @colour-bg-tag-d;
61
+ --colour-bg: @colour-bg-d;
62
+ --colour-bg-fade: @colour-bg-fade-d;
63
+ --colour-border-grey: @colour-border-grey-d;
64
+ --colour-button-bg: @colour-button-bg-d;
65
+ --colour-button-primary-bg: @colour-button-primary-bg-d;
66
+ --colour-button-primary-border: @colour-button-primary-border-d;
67
+ --colour-foreground: @colour-foreground-d;
68
+ --colour-highlight-1: @colour-highlight-1-d;
69
+ --colour-highlight-2: @colour-highlight-2-d;
70
+ --colour-highlight-default: @colour-highlight-default-d;
71
+ --colour-icon-grey: @colour-icon-grey-d;
72
+ --colour-linked-fact: @colour-linked-fact-d;
73
+ --colour-loader: @colour-loader-d;
74
+ --colour-primary-focus: @colour-primary-focus-d;
75
+ --colour-primary: @colour-primary-d;
76
+ --colour-related-fact: @colour-related-fact-d;
77
+ --colour-row-odd: @colour-row-odd-d;
78
+ --colour-row-hover: @colour-row-hover-d;
79
+ --colour-text-form-value: @colour-text-form-value-d;
80
+ --colour-text-light: @colour-text-light-d;
81
+ --colour-text-title: @colour-text-title-d;
82
+ --colour-text: @colour-text-d;
83
+ --colour-warning: @colour-warning-d;
84
+ --top-bar-height: @top-bar-height;
85
+
86
+ .only-dark {
87
+ display: initial;
88
+ }
89
+
90
+ .only-light {
91
+ display: none;
92
+ }
93
+ }
94
+
24
95
  #ixv {
25
96
  /* Specify these here, not on body in case the iXBRL document has its own
26
97
  * style attribute */
27
98
  &,
28
- table {
99
+ table,
100
+ dialog {
29
101
  .default-font();
30
102
  .text-md();
31
103
  }
32
104
 
105
+ a {
106
+ text-decoration: none;
107
+ color: var(--colour-primary);
108
+
109
+ &:hover {
110
+ text-decoration: underline;
111
+ }
112
+ }
113
+
33
114
  #ixv-progress {
34
115
  position: fixed;
35
116
  top: 20px;
36
117
  left: 20px;
37
118
  width: 500px;
38
119
  height: 200px;
39
- background-color: #fff;
120
+ background-color: var(--colour-bg);
40
121
  border: solid #000 1px;
41
122
  text-align: center;
42
123
  }
@@ -46,9 +127,9 @@
46
127
  box-sizing: border-box;
47
128
  position: fixed;
48
129
  left: 0;
49
- top: @top-bar-height;
130
+ top: var(--top-bar-height);
50
131
  bottom: 0;
51
- z-index: 0;
132
+ z-index: 1;
52
133
  display: flex;
53
134
  flex-flow: column;
54
135
 
@@ -58,6 +139,8 @@
58
139
  }
59
140
 
60
141
  #iframe-container {
142
+ background-color:white;
143
+ color:black;
61
144
  position: relative;
62
145
  flex: 1 1 auto;
63
146
 
@@ -134,53 +217,67 @@
134
217
  .default-font();
135
218
  .text-md();
136
219
 
137
- color: @text;
220
+ display: flex;
221
+ align-items: center;
222
+ color: var(--colour-text);
138
223
  position: fixed;
139
224
  top: 0;
140
225
  left: 0;
141
226
  right: 0;
142
- height: @top-bar-height;
227
+ height: var(--top-bar-height);
143
228
  border-bottom: solid 1px #ccc;
144
229
  z-index: 5;
145
230
 
231
+ #home-link {
232
+ font-size: 2.2rem;
233
+ font-weight: bold;
234
+ margin-left: 1rem;
235
+ margin-right: 1rem;
236
+ }
237
+
146
238
  .header {
147
- position: absolute;
148
- top: 0;
149
- left: 0;
150
- bottom: 0;
151
239
  height: 100%;
152
240
  }
153
241
 
154
242
  .document-title {
155
- position: absolute;
156
243
  box-sizing: border-box;
157
- left: 160px;
158
- top: 0;
159
244
  padding-right: 1.6rem;
160
- padding-top: 1.3rem;
245
+ line-height: var(--top-bar-height);
161
246
  border-right: solid 0.1rem #ccc;
162
- height: @top-bar-height;
247
+ height: var(--top-bar-height);
163
248
  overflow: hidden;
249
+ font-size: inherit;
250
+ font-weight: inherit;
251
+ margin: 0;
164
252
  }
165
253
 
166
254
  .top-bar-controls {
167
255
  position: absolute;
168
- right: 1.8rem;
256
+ display: flex;
257
+ right: 0;
169
258
  top: 0;
170
- line-height: @top-bar-height;
259
+ line-height: var(--top-bar-height);
260
+ height: var(--top-bar-height);
261
+ background: var(--colour-bg);
262
+ padding-left: 1.8rem;
171
263
 
172
- * {
173
- vertical-align: middle;
264
+ & > * {
265
+ margin-right: 0.8rem;
174
266
  }
175
267
 
176
- .content {
177
- input {
268
+ .horizontal-menu {
269
+ * {
270
+ vertical-align: middle;
271
+ }
272
+
273
+ .content > * {
178
274
  position: relative;
179
275
  top: -0.1rem;
180
276
  margin-right: 0.6rem;
181
277
  }
182
278
  }
183
279
 
280
+
184
281
  .highlight-key {
185
282
  margin-left: 0.6rem;
186
283
  margin-right: 1.5rem;
@@ -196,8 +293,9 @@
196
293
  position: absolute;
197
294
  top: 3.2rem;
198
295
  left: -2rem;
199
- background: #fff;
200
- border: solid 1px @text;
296
+ background: white;
297
+ color: black;
298
+ border: solid 1px black;
201
299
  border-radius: 0.3rem;
202
300
  line-height: 1.6rem;
203
301
 
@@ -207,10 +305,10 @@
207
305
  left: 1.1rem;
208
306
  width: 1.5rem;
209
307
  height: 1.5rem;
210
- border-top: solid 0.1rem @text;
211
- border-left: solid 0.1rem @text;
308
+ border-top: solid 0.1rem black;
309
+ border-left: solid 0.1rem black;
212
310
  transform: translate(50%, -50%) rotate(45deg);
213
- background: #fff;
311
+ background: white;
214
312
  }
215
313
 
216
314
  .item {
@@ -226,15 +324,15 @@
226
324
  }
227
325
 
228
326
  .sample-0 {
229
- background: @highlight-default;
327
+ background: var(--colour-highlight-default);
230
328
  }
231
329
 
232
330
  .sample-1 {
233
- background: @highlight-1;
331
+ background: var(--colour-highlight-1);
234
332
  }
235
333
 
236
334
  .sample-2 {
237
- background: @highlight-2;
335
+ background: var(--colour-highlight-2);
238
336
  }
239
337
  }
240
338
  }
@@ -250,6 +348,22 @@
250
348
  .icon-warning();
251
349
  }
252
350
  }
351
+
352
+ #toggle-dark-mode {
353
+ border: none;
354
+
355
+ &::before {
356
+ .icon-dark-mode();
357
+
358
+ cursor: pointer;
359
+ }
360
+ }
361
+
362
+ .menu .menu-title::before {
363
+ .icon-cog();
364
+
365
+ font-size: 2rem;
366
+ }
253
367
  }
254
368
  }
255
369
 
@@ -261,15 +375,16 @@
261
375
  h2,
262
376
  h3 {
263
377
  font-weight: normal;
264
- border-bottom: solid 1px @border-grey;
265
378
  width: 100%;
266
379
  box-sizing: border-box;
267
- padding-bottom: 5px;
268
- color: @text-title;
380
+ color: var(--colour-text-title);
269
381
  }
270
382
 
271
383
  h2 {
272
384
  text-align: center;
385
+ font-size: 1.8rem;
386
+ line-height: 3.2rem;
387
+ margin: 0.8rem 0;
273
388
  }
274
389
 
275
390
  h3 {
@@ -278,65 +393,28 @@
278
393
 
279
394
  h4 {
280
395
  font-weight: bold;
281
- color: @text-title;
396
+ color: var(--colour-text-title);
282
397
  margin-bottom: 1.4em;
283
398
  }
284
399
 
285
400
  #inspector-head {
286
401
  padding: 0;
287
402
  position: relative;
288
- border-bottom: solid 1px @border-grey;
289
-
290
- .title {
291
- text-align: center;
292
- position: relative;
293
- border-bottom: @simple-border;
294
-
295
- h1 {
296
- margin: 0.8rem 0;
297
- border: none;
298
- padding: 0;
299
- font-size: 1.8rem;
300
- line-height: 3.2rem;
301
- }
302
-
303
- .back {
304
- .square-button-bare();
305
-
306
- top: 0;
307
- left: 0;
308
- position: absolute;
309
-
310
- &::before {
311
- .icon-chevron-left();
312
- }
313
- }
314
-
315
- .menu {
316
- top: 0;
317
- right: 0;
318
- position: absolute;
319
-
320
- .menu-title::before {
321
- .icon-cog();
322
-
323
- font-size: 2rem;
324
- }
325
- }
326
- }
403
+ border-bottom: solid 1px var(--colour-border-grey);
327
404
 
328
405
  .controls {
329
406
  position: relative;
330
407
  height: 3.2rem;
331
- margin: 0.8rem 0.9rem;
408
+ padding: 0.8rem 0.9rem;
409
+ display: flex;
410
+
411
+ & > * {
412
+ margin: 0.8rem 0.9rem;
413
+ }
332
414
 
333
415
  .search-button {
334
416
  .square-button();
335
417
 
336
- position: absolute;
337
- top: 0;
338
- left: 7.7rem;
339
-
340
418
  &::before {
341
419
  .icon-search();
342
420
 
@@ -347,10 +425,6 @@
347
425
  .outline-button {
348
426
  .square-button();
349
427
 
350
- position: absolute;
351
- top: 0;
352
- left: 3.6rem;
353
-
354
428
  &::before {
355
429
  .icon-outline();
356
430
 
@@ -361,10 +435,6 @@
361
435
  .summary-button {
362
436
  .square-button();
363
437
 
364
- position: absolute;
365
- top: 0;
366
- left: 0;
367
-
368
438
  &::before {
369
439
  .icon-summary();
370
440
 
@@ -372,35 +442,61 @@
372
442
  }
373
443
  }
374
444
 
375
- .next-prev {
376
- position: absolute;
377
- top: 0;
378
- right: 0;
445
+ .ixbrl-prev-tag {
446
+ .square-button();
379
447
 
380
- .ixbrl-next-tag,
381
- .ixbrl-prev-tag {
382
- .square-button();
448
+ margin-left: auto;
383
449
 
384
- position: relative;
385
- display: inline-block;
450
+ &::before {
451
+ .icon-chevron-left();
386
452
  }
453
+ }
387
454
 
388
- .ixbrl-next-tag::before {
455
+ .ixbrl-next-tag {
456
+ .square-button();
457
+
458
+ &::before {
389
459
  .icon-chevron-right();
390
460
  }
461
+ }
462
+ }
463
+ }
464
+
465
+ .inspector-container {
466
+ flex-grow: 1;
467
+ overflow: hidden;
468
+ display: flex;
469
+ flex-direction: column;
470
+
471
+ .inspector-title {
472
+ text-align: center;
473
+ position: relative;
474
+ margin: 0.8rem 0;
391
475
 
392
- .ixbrl-prev-tag::before {
476
+ h2 {
477
+ margin: 0;
478
+ padding: 0;
479
+ }
480
+
481
+ .back {
482
+ .square-button-bare();
483
+
484
+ top: 0;
485
+ left: 0.9rem;
486
+ position: absolute;
487
+
488
+ &::before {
393
489
  .icon-chevron-left();
394
490
  }
395
491
  }
396
492
  }
397
493
 
398
494
  .search-controls {
399
- margin: 0.8rem 0.9rem;
495
+ margin: 0 0 0.8rem;
400
496
 
401
497
  .search-input {
402
498
  display: flex;
403
- padding: 0;
499
+ padding: 0 0.9rem;
404
500
 
405
501
  input#ixbrl-search {
406
502
  flex-grow: 1;
@@ -416,12 +512,32 @@
416
512
  }
417
513
  }
418
514
 
515
+ .filter-info {
516
+ text-align: center;
517
+ font-style: italic;
518
+ margin-top: 0.8rem;
519
+ position: relative;
520
+
521
+ .reset {
522
+ .bare-button();
523
+ .text-md();
524
+
525
+ position: absolute;
526
+ right: 0.8rem;
527
+ top: -0.3rem;
528
+ }
529
+ }
530
+
419
531
  &:not(.show-filters) .search-filters {
420
532
  display: none;
421
533
  }
422
534
 
423
- &.show-filters .filter-toggle {
424
- color: @primary;
535
+ &.active-filters .filter-toggle {
536
+ color: var(--colour-primary);
537
+ }
538
+
539
+ &:not(.active-filters) .reset {
540
+ display: none;
425
541
  }
426
542
 
427
543
  .search-filters {
@@ -429,19 +545,17 @@
429
545
  // Ensure the filter pane never grows too large to hide the results pane
430
546
  max-height: 60vh;
431
547
  overflow-y: auto;
548
+ padding: 0 0.9rem;
432
549
 
433
- .reset {
434
- .clickable();
435
-
436
- position: absolute;
437
- right: 0;
438
- top: 0;
439
- }
440
550
 
441
551
  h3 {
442
552
  border: none;
443
553
  font-weight: bold;
444
554
  padding-bottom: 0;
555
+
556
+ button {
557
+ font-weight: inherit;
558
+ }
445
559
  }
446
560
 
447
561
  .filter-group {
@@ -488,123 +602,130 @@
488
602
  }
489
603
  }
490
604
 
491
- .filter-info {
492
- text-align: center;
493
- font-style: italic;
494
- font-size: 1.1rem;
605
+
606
+ .datatype-conflict-warning {
607
+ margin: 1rem 0;
608
+ color: var(--colour-warning);
609
+ display: none;
495
610
  }
496
611
  }
497
612
  }
498
- }
499
613
 
500
- .inspector-body {
501
- flex-grow: 1;
502
- width: 100%;
503
- position: relative;
504
- overflow: hidden;
614
+ .inspector-body {
615
+ border-top: solid 1px var(--colour-border-grey);
616
+ width: 100%;
617
+ position: relative;
618
+ overflow-y: auto;
619
+ flex-grow: 1;
505
620
 
506
- .no-fact-overlay,
507
- .no-outline-overlay {
508
- display: block;
509
- position: absolute;
510
- left: 50%;
511
- top: 50%;
512
- transform: translate(-50%, -50%);
513
- width: 80%;
514
- text-align: center;
515
- color: @text-light;
621
+ .no-fact-overlay,
622
+ .no-outline-overlay {
623
+ position: absolute;
624
+ left: 50%;
625
+ top: 50%;
626
+ transform: translate(-50%, -50%);
627
+ width: 80%;
628
+ text-align: center;
629
+ color: var(--colour-text-light);
516
630
 
517
- .no-fact-overlay-icon::before {
518
- .icon-tag();
631
+ .no-fact-overlay-icon::before {
632
+ .icon-tag();
519
633
 
520
- font-size: 10rem;
521
- }
634
+ font-size: 10rem;
635
+ line-height: normal;
636
+ }
522
637
 
523
- .no-outline-overlay-icon::before {
524
- .icon-outline();
638
+ .no-outline-overlay-icon::before {
639
+ .icon-outline();
525
640
 
526
- font-size: 10rem;
527
- }
641
+ font-size: 10rem;
642
+ line-height: normal;
643
+ }
528
644
 
529
- .title {
530
- font-size: x-large;
645
+ .title {
646
+ font-size: x-large;
647
+ line-height: normal;
648
+ }
531
649
  }
532
- }
533
650
 
534
- .inspector-body-fact {
535
- overflow-y: auto;
536
- height: 100%;
537
- position: relative;
538
- }
651
+ .inspector-body {
652
+ overflow-y: auto;
653
+ height: 100%;
654
+ position: relative;
655
+ }
539
656
 
540
- .search-results {
541
- overflow-y: auto;
542
- height: 100%;
543
- .panel-indent();
657
+ .search-results {
658
+ overflow-y: auto;
659
+ height: 100%;
660
+ .panel-indent();
544
661
 
545
- .search-overlay {
546
- transform: translate(-50%, -50%);
547
- position: absolute;
548
- top: 50%;
549
- left: 50%;
550
- color: @text-light;
551
- width: 85%;
662
+ .search-overlay {
663
+ transform: translate(-50%, -50%);
664
+ position: absolute;
665
+ top: 50%;
666
+ left: 50%;
667
+ color: var(--colour-text-light);
668
+ width: 85%;
669
+
670
+ .search-overlay-icon {
671
+ text-align: center;
672
+ font-size: 10rem;
673
+ line-height: normal;
674
+
675
+ &::before {
676
+ .icon-search();
677
+ }
678
+ }
552
679
 
553
- .search-overlay-icon {
554
- text-align: center;
555
- font-size: 10rem;
680
+ .search-overlay-text {
681
+ text-align: center;
682
+ font-size: medium;
683
+ line-height: normal;
556
684
 
557
- &::before {
558
- .icon-search();
685
+ .title {
686
+ font-size: x-large;
687
+ line-height: normal;
688
+ }
559
689
  }
560
690
  }
561
691
 
562
- .search-overlay-text {
563
- text-align: center;
564
- font-size: medium;
692
+ .select-icon {
693
+ float: right;
694
+ .square-button();
695
+ .clickable();
696
+
697
+ &:first-of-type {
698
+ margin-left: 0.5rem;
699
+ }
565
700
 
566
- .title {
567
- font-size: x-large;
701
+ &::before {
702
+ .icon-select();
568
703
  }
569
704
  }
570
- }
571
705
 
572
- .select-icon {
573
- float: right;
574
- .square-button();
575
- .clickable();
706
+ .more-results {
707
+ .clickable();
576
708
 
577
- &:first-of-type {
578
- margin-left: 0.5rem;
709
+ padding: 1rem;
710
+ text-align: center;
579
711
  }
712
+ } /* search results */
580
713
 
581
- &::before {
582
- .icon-select();
583
- }
714
+ .outline {
715
+ overflow-y: auto;
716
+ height: 100%;
584
717
  }
585
718
 
586
- .more-results {
587
- .clickable();
588
-
589
- padding: 1rem;
590
- text-align: center;
719
+ .summary {
720
+ overflow-y: auto;
721
+ height: 100%;
591
722
  }
592
- } /* search results */
593
-
594
- .outline {
595
- overflow-y: auto;
596
- height: 100%;
597
- }
598
-
599
- .summary {
600
- overflow-y: auto;
601
- height: 100%;
602
- }
603
723
 
604
- .body {
605
- .panel-indent();
606
- }
607
- } /* inspector body */
724
+ .body {
725
+ .panel-indent();
726
+ }
727
+ } /* inspector body */
728
+ } /* inspector container */
608
729
 
609
730
  .std-label {
610
731
  margin-left: 30px;
@@ -612,15 +733,25 @@
612
733
  position: relative;
613
734
 
614
735
  &::before {
615
- color: @primary;
736
+ color: var(--colour-primary);
616
737
  content: "\2022";
617
738
  position: absolute;
618
- top: -5px;
619
739
  left: -20px;
620
740
  font-size: x-large;
621
741
  }
622
742
  }
623
743
 
744
+ dt {
745
+ font-weight: bold;
746
+ color: var(--colour-text-title);
747
+ margin-bottom: 1.4rem;
748
+ margin-top: 1.4rem;
749
+ }
750
+
751
+ dd {
752
+ margin-inline-start: 2rem;
753
+ }
754
+
624
755
  #concept {
625
756
  margin-top: 20px;
626
757
  font-size: small;
@@ -639,7 +770,7 @@
639
770
  &::before {
640
771
  .icon-dimension();
641
772
 
642
- color: @primary;
773
+ color: var(--colour-primary);
643
774
  position: absolute;
644
775
  top: 0;
645
776
  left: -2.3rem;
@@ -655,7 +786,7 @@
655
786
  .icon-dimension-member();
656
787
 
657
788
  position: absolute;
658
- color: @primary;
789
+ color: var(--colour-primary);
659
790
  top: 0;
660
791
  left: -2.3rem;
661
792
  font-size: 120%;
@@ -663,10 +794,16 @@
663
794
  }
664
795
  }
665
796
 
666
- .analyse {
797
+ .inline-button {
798
+ display: inline;
667
799
  cursor: pointer;
668
- padding-left: 0.7rem;
669
- color: @primary;
800
+ color: var(--colour-primary);
801
+ padding: 0.3rem;
802
+ border: none;
803
+ }
804
+
805
+ .analyse {
806
+ margin-left: 0.4rem;
670
807
  }
671
808
 
672
809
  .analyse::before {
@@ -676,7 +813,7 @@
676
813
  top: 1px;
677
814
  }
678
815
 
679
- .inspector-body-fact .tags {
816
+ .inspector-body .tags {
680
817
  position: absolute;
681
818
  top: 1.5rem;
682
819
  right: 0.9rem;
@@ -695,53 +832,6 @@
695
832
  }
696
833
  }
697
834
 
698
- table.fact-properties {
699
- table-layout: fixed;
700
- width: 100%;
701
-
702
- th {
703
- width: 75px;
704
- text-align: right;
705
- padding-right: 20px;
706
- color: @text-title;
707
- }
708
-
709
- th,
710
- td {
711
- padding-top: 2px;
712
- padding-bottom: 2px;
713
- }
714
-
715
- tr.value {
716
- .show-all {
717
- color: @primary;
718
- cursor: pointer;
719
- }
720
-
721
- &:not(.truncated) .show-all {
722
- display: none;
723
- }
724
-
725
- &.text-block .expand-text-block {
726
- color: @primary;
727
- cursor: pointer;
728
-
729
- &::before {
730
- .icon-text-block();
731
- }
732
- }
733
- }
734
-
735
- td {
736
- overflow: hidden;
737
- text-overflow: ellipsis;
738
- color: @text-form-value;
739
- }
740
-
741
- tr.uri > td {
742
- white-space: nowrap;
743
- }
744
- }
745
835
 
746
836
  .duplicates {
747
837
  text-align: center;
@@ -805,21 +895,12 @@
805
895
 
806
896
  width: 25%;
807
897
  position: absolute;
808
- top: @top-bar-height;
898
+ top: var(--top-bar-height);
809
899
  right: 0;
810
900
  bottom: 0;
811
901
  box-sizing: border-box;
812
902
  overflow: hidden;
813
- border-left: @simple-border;
814
-
815
- a {
816
- text-decoration: none;
817
- color: @primary;
818
-
819
- &:hover {
820
- text-decoration: underline;
821
- }
822
- }
903
+ border-left: solid 0.1rem var(--colour-border-grey);
823
904
 
824
905
  .inspector-section {
825
906
  padding-left: 0.9rem;
@@ -833,21 +914,32 @@
833
914
 
834
915
  .collapsible-header {
835
916
  position: relative;
836
- padding-left: 12px;
917
+ padding: 0 0 0.5rem 1.2rem;
837
918
  cursor: pointer;
838
919
  user-select: none;
839
920
  white-space: nowrap;
921
+ border-bottom: solid 1px var(--colour-border-grey);
840
922
 
841
- &::before {
842
- .icon-chevron-right();
923
+ button:first-of-type {
924
+ .text-md();
843
925
 
844
- font-size: 1.8rem;
845
- position: relative;
846
- top: 0.4rem;
847
- left: -0.3rem;
848
- transform: rotate(90deg);
849
- transition: all 0.25s ease;
850
- display: inline-block;
926
+ border: none;
927
+ color: var(--colour-text-title);
928
+ text-align: left;
929
+ position: relative;
930
+ padding: 0.4rem 0.9rem 0.4rem 2.3rem;
931
+
932
+ &::before {
933
+ .icon-chevron-right();
934
+
935
+ font-size: 1.8rem;
936
+ position: absolute;
937
+ top: 0.4rem;
938
+ left: 0;
939
+ transform: rotate(90deg);
940
+ transition: all 0.25s ease;
941
+ display: inline-block;
942
+ }
851
943
  }
852
944
 
853
945
  .collapsible-subheader {
@@ -855,19 +947,19 @@
855
947
  font-weight: normal;
856
948
  font-style: italic;
857
949
  font-size: 1.3rem;
858
- color: @text-form-value;
950
+ color: var(--colour-text-form-value);
859
951
  }
860
952
  }
861
953
 
862
954
  &.collapsed {
863
- .collapsible-header::before {
955
+ .collapsible-header button::before {
864
956
  transform: rotate(0);
865
957
  top: 0.3rem;
866
958
  left: -0.2rem;
867
959
  }
868
960
 
869
961
  .collapsible-subheader {
870
- color: @primary;
962
+ color: var(--colour-primary);
871
963
  }
872
964
  }
873
965
 
@@ -883,7 +975,7 @@
883
975
  padding-right: 0.75rem;
884
976
  position: relative;
885
977
  top: 0.2rem;
886
- color: @warning-orange;
978
+ color: var(--colour-warning);
887
979
 
888
980
  &::before {
889
981
  .icon-circle-cross();
@@ -894,7 +986,7 @@
894
986
  padding-right: 0.75rem;
895
987
  position: relative;
896
988
  top: 0.2rem;
897
- color: @workiva-green;
989
+ color: var(--colour-primary);
898
990
 
899
991
  &::before {
900
992
  .icon-circle-tick();
@@ -919,9 +1011,13 @@
919
1011
 
920
1012
  tr.item {
921
1013
  td {
922
- padding: 5px 0;
1014
+ padding: 0.2rem 0;
923
1015
  line-height: 1.8rem;
924
1016
 
1017
+ &.weight {
1018
+ text-align: center;
1019
+ }
1020
+
925
1021
  &.value {
926
1022
  text-align: right;
927
1023
  }
@@ -931,12 +1027,27 @@
931
1027
  color: #777;
932
1028
  }
933
1029
 
1030
+ &:not(.calc-fact-link) {
1031
+ td {
1032
+ .text-md();
1033
+
1034
+ &.concept-name {
1035
+ // Compensate for padding that gets added by button on clickable rows.
1036
+ padding: 0.3rem;
1037
+ }
1038
+ }
1039
+ }
1040
+
934
1041
  &.calc-fact-link {
935
1042
  cursor: pointer;
936
1043
 
937
1044
  .concept-name,
938
1045
  .value {
939
- color: @primary;
1046
+ color: var(--colour-primary);
1047
+
1048
+ button {
1049
+ .text-md();
1050
+ }
940
1051
  }
941
1052
  }
942
1053
 
@@ -946,28 +1057,34 @@
946
1057
  }
947
1058
 
948
1059
  &.total td {
949
- border-top: solid 1px @border-grey;
1060
+ border-top: solid 1px var(--colour-border-grey);
950
1061
  padding-bottom: 1.2rem;
951
1062
  }
952
1063
  }
953
1064
  }
954
1065
 
955
1066
  .calculation-details-link {
956
- color: @primary;
957
- cursor: pointer;
1067
+ .inline-button();
1068
+ .text-md();
958
1069
  }
959
1070
  }
960
1071
  }
961
1072
 
962
- .reset-multiselect {
963
- float: right;
964
- line-height: 0;
1073
+ .resetable-multiselect {
965
1074
  position: relative;
966
- bottom: 1rem;
967
- cursor: pointer;
968
1075
 
969
- &::after {
970
- .icon-close();
1076
+ .reset-multiselect {
1077
+ position: absolute;
1078
+ top: -2.5rem;
1079
+ right: -0.5rem;
1080
+ cursor: pointer;
1081
+ border: none;
1082
+ padding: 0.3rem;
1083
+
1084
+
1085
+ &::after {
1086
+ .icon-close();
1087
+ }
971
1088
  }
972
1089
  }
973
1090
 
@@ -1030,12 +1147,12 @@
1030
1147
 
1031
1148
  text-align: center;
1032
1149
  flex-shrink: 0;
1033
- background: #fff;
1150
+ background: var(--colour-bg);
1034
1151
  width: 100%;
1035
1152
  height: 3rem;
1036
1153
  margin: 0;
1037
1154
  box-sizing: border-box;
1038
- border-top: @simple-border;
1155
+ border-top: solid 0.1rem var(--colour-border-grey);
1039
1156
  position: relative;
1040
1157
 
1041
1158
  img {
@@ -1050,7 +1167,7 @@
1050
1167
  right: 5px;
1051
1168
  font-size: small;
1052
1169
  line-height: 3rem;
1053
- color: #999;
1170
+ color: var(--colour-text-light);
1054
1171
  }
1055
1172
  }
1056
1173
 
@@ -1086,7 +1203,7 @@
1086
1203
 
1087
1204
  &.failed-to-load .failed-to-load-mask {
1088
1205
  display: block;
1089
- background-color: rgb(0 0 0 / 50%);
1206
+ background-color: var(--colour-bg-fade);
1090
1207
  position: absolute;
1091
1208
  width: 100%;
1092
1209
  height: 100%;
@@ -1107,14 +1224,71 @@
1107
1224
  background-color: rgb(0 0 0 / 50%);
1108
1225
  }
1109
1226
  }
1227
+
1228
+ table.property-table {
1229
+ &:not(.numeric) {
1230
+ table-layout: fixed;
1231
+ width: 100%;
1232
+ }
1233
+
1234
+ td, th {
1235
+ padding: 0;
1236
+ line-height: 2.6rem;
1237
+ }
1238
+
1239
+ th {
1240
+ width: 90px;
1241
+ text-align: right;
1242
+ padding-right: 30px;
1243
+ color: var(--colour-text-title);
1244
+
1245
+ &.has-tooltip {
1246
+ padding-right: 10px;
1247
+ }
1248
+ }
1249
+
1250
+ tr.value {
1251
+ .show-all {
1252
+ color: var(--colour-primary);
1253
+ cursor: pointer;
1254
+ }
1255
+
1256
+ &:not(.truncated) .show-all {
1257
+ display: none;
1258
+ }
1259
+
1260
+ &.text-block .expand-text-block {
1261
+ color: var(--colour-primary);
1262
+ cursor: pointer;
1263
+
1264
+ &::before {
1265
+ .icon-text-block();
1266
+ }
1267
+ }
1268
+ }
1269
+
1270
+ td {
1271
+ overflow: clip visible;
1272
+ text-overflow: ellipsis;
1273
+ color: var(--colour-text-form-value);
1274
+ }
1275
+
1276
+ tr.uri > td {
1277
+ white-space: nowrap;
1278
+ }
1279
+
1280
+ &.numeric td {
1281
+ text-align: right;
1282
+ }
1283
+ }
1110
1284
  }
1111
1285
 
1112
1286
  .fact-link {
1113
1287
  cursor: pointer;
1114
- color: @primary;
1288
+ color: var(--colour-primary);
1115
1289
 
1116
1290
  &:hover {
1117
- outline: solid 0.125em @linked-fact;
1291
+ outline: solid 0.125em var(--colour-linked-fact);
1118
1292
  outline-offset: 0.0625em;
1119
1293
  }
1120
1294
  }
@@ -1124,15 +1298,21 @@
1124
1298
  .block-list-item();
1125
1299
 
1126
1300
  .title {
1127
- color: @text-title;
1301
+ color: var(--colour-text-title);
1128
1302
  font-weight: bold;
1129
1303
  }
1130
1304
 
1131
1305
  .dimension {
1132
- color: @text;
1306
+ color: var(--colour-text);
1133
1307
  margin: 0.6rem 0;
1134
1308
  }
1135
1309
 
1310
+ .datatype {
1311
+ color: var(--colour-text);
1312
+ margin: 0.6rem 0;
1313
+ font-style: italic;
1314
+ }
1315
+
1136
1316
  .hidden {
1137
1317
  .tag();
1138
1318
  }
@@ -1143,14 +1323,16 @@
1143
1323
  }
1144
1324
 
1145
1325
  .dimension {
1146
- color: @text;
1326
+ color: var(--colour-text);
1147
1327
  }
1148
1328
  }
1329
+
1149
1330
  }
1150
1331
  }
1151
1332
 
1333
+
1152
1334
  .dialog-mask {
1153
- background-color: rgb(0 0 0 / 60%);
1335
+ background-color: var(--colour-bg-fade);
1154
1336
  position: fixed;
1155
1337
  inset: 0;
1156
1338
  z-index: 10;
@@ -1162,12 +1344,12 @@
1162
1344
  }
1163
1345
 
1164
1346
  .copy-icon {
1165
- color: @primary;
1347
+ color: var(--colour-primary);
1166
1348
  border-radius: 0.3rem;
1167
1349
 
1168
1350
  &:active {
1169
- background-color: @primary;
1170
- color: #fff;
1351
+ background-color: var(--colour-primary);
1352
+ color: var(--colour-bg);
1171
1353
  }
1172
1354
 
1173
1355
  &::before {
@@ -1176,4 +1358,78 @@
1176
1358
  cursor: pointer;
1177
1359
  }
1178
1360
  }
1361
+
1362
+ .has-tooltip {
1363
+ white-space: nowrap;
1364
+
1365
+ & > * {
1366
+ vertical-align: middle;
1367
+ }
1368
+
1369
+ .tooltip-icon {
1370
+ .inline-button();
1371
+
1372
+ cursor: help;
1373
+ margin-left: -0.3rem;
1374
+ vertical-align: middle;
1375
+
1376
+ &::after {
1377
+ content: "\24d8";
1378
+ }
1379
+ }
1380
+
1381
+ button + .tooltip-icon {
1382
+ margin-left: -1rem;
1383
+ }
1384
+ }
1385
+
1386
+ .tooltip {
1387
+ position: fixed;
1388
+ visibility: hidden;
1389
+ transition: all 0.5s ease;
1390
+ background-color: var(--colour-bg);
1391
+ z-index: 1;
1392
+ border: solid 0.1rem var(--colour-border-grey);
1393
+ border-radius: 0.4rem;
1394
+ padding: 0.8rem;
1395
+ box-shadow: rgb(0 0 0 / 30%) 0.2rem 0.2rem 0.2rem;
1396
+ font-weight: normal;
1397
+ opacity: 0;
1398
+ cursor: default;
1399
+ color: var(--colour-text);
1400
+ text-align: left;
1401
+
1402
+ &.show,
1403
+ &.hover-show {
1404
+ visibility: visible;
1405
+ opacity: 1;
1406
+ transition: opacity 0.5s ease;
1407
+ }
1408
+
1409
+ &.with-glossary-link .glossary-link {
1410
+ display: block;
1411
+ }
1412
+
1413
+ .glossary-link {
1414
+ margin-top: 0.8rem;
1415
+ font-size: smaller;
1416
+ display: none;
1417
+ }
1418
+ }
1419
+
1420
+ .fact-value {
1421
+ &.fact-value-invalid {
1422
+ font-style: italic;
1423
+ color: #f00;
1424
+ }
1425
+
1426
+ &.fact-value-nil {
1427
+ font-style: italic;
1428
+ }
1429
+
1430
+ .measure {
1431
+ border-bottom: 1px dotted @colour-text-form-value;
1432
+ cursor: help;
1433
+ }
1434
+ }
1179
1435
  }