@ng-prism/core 21.4.4 → 21.5.0

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 (105) hide show
  1. package/README.md +1 -1
  2. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +16 -0
  3. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -0
  4. package/dist/app/canvas/prism-canvas-rulers.component.js +177 -0
  5. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +14 -0
  6. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -0
  7. package/dist/app/canvas/prism-canvas-toolbar.component.js +144 -0
  8. package/dist/app/canvas/prism-code-drawer.component.d.ts +12 -0
  9. package/dist/app/canvas/prism-code-drawer.component.d.ts.map +1 -0
  10. package/dist/app/canvas/prism-code-drawer.component.js +114 -0
  11. package/dist/app/component-head/prism-component-head.component.d.ts +15 -0
  12. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -0
  13. package/dist/app/component-head/prism-component-head.component.js +207 -0
  14. package/dist/app/component-head/prism-stat.component.d.ts +10 -0
  15. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -0
  16. package/dist/app/component-head/prism-stat.component.js +52 -0
  17. package/dist/app/controls/boolean-control.component.d.ts.map +1 -1
  18. package/dist/app/controls/boolean-control.component.js +16 -44
  19. package/dist/app/controls/json-control.component.d.ts.map +1 -1
  20. package/dist/app/controls/json-control.component.js +33 -54
  21. package/dist/app/controls/number-control.component.d.ts.map +1 -1
  22. package/dist/app/controls/number-control.component.js +18 -35
  23. package/dist/app/controls/string-control.component.d.ts.map +1 -1
  24. package/dist/app/controls/string-control.component.js +14 -41
  25. package/dist/app/controls/union-control.component.d.ts.map +1 -1
  26. package/dist/app/controls/union-control.component.js +26 -50
  27. package/dist/app/directives/prism-resizer.directive.d.ts +14 -0
  28. package/dist/app/directives/prism-resizer.directive.d.ts.map +1 -0
  29. package/dist/app/directives/prism-resizer.directive.js +71 -0
  30. package/dist/app/header/prism-header.component.d.ts +3 -0
  31. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  32. package/dist/app/header/prism-header.component.js +91 -215
  33. package/dist/app/icons/prism-icon.component.d.ts +10 -0
  34. package/dist/app/icons/prism-icon.component.d.ts.map +1 -0
  35. package/dist/app/icons/prism-icon.component.js +64 -0
  36. package/dist/app/index.d.ts +4 -3
  37. package/dist/app/index.d.ts.map +1 -1
  38. package/dist/app/index.js +4 -3
  39. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  40. package/dist/app/layout-menu/prism-layout-menu.component.js +63 -69
  41. package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
  42. package/dist/app/panels/a11y/a11y-core.plugin.js +1 -0
  43. package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
  44. package/dist/app/panels/a11y/a11y-keyboard.component.js +61 -100
  45. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +4 -0
  46. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  47. package/dist/app/panels/a11y/a11y-overlay-host.component.js +87 -11
  48. package/dist/app/panels/a11y/a11y-panel.component.d.ts +0 -2
  49. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  50. package/dist/app/panels/a11y/a11y-panel.component.js +70 -85
  51. package/dist/app/panels/a11y/a11y-score.component.d.ts +2 -1
  52. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  53. package/dist/app/panels/a11y/a11y-score.component.js +55 -49
  54. package/dist/app/panels/a11y/a11y-sr.component.d.ts +1 -9
  55. package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
  56. package/dist/app/panels/a11y/a11y-sr.component.js +60 -208
  57. package/dist/app/panels/a11y/a11y-tree.component.d.ts +2 -4
  58. package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
  59. package/dist/app/panels/a11y/a11y-tree.component.js +92 -137
  60. package/dist/app/panels/a11y/a11y-violations.component.d.ts +2 -6
  61. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  62. package/dist/app/panels/a11y/a11y-violations.component.js +126 -373
  63. package/dist/app/panels/controls/controls-plugin.d.ts.map +1 -1
  64. package/dist/app/panels/controls/controls-plugin.js +1 -0
  65. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  66. package/dist/app/panels/controls/prism-controls-panel.component.js +96 -88
  67. package/dist/app/panels/events/events-plugin.d.ts.map +1 -1
  68. package/dist/app/panels/events/events-plugin.js +1 -0
  69. package/dist/app/panels/events/prism-events-panel.component.d.ts +1 -0
  70. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  71. package/dist/app/panels/events/prism-events-panel.component.js +44 -46
  72. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +7 -2
  73. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  74. package/dist/app/panels/panel-host/prism-panel-host.component.js +102 -42
  75. package/dist/app/renderer/prism-renderer.component.d.ts +5 -6
  76. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  77. package/dist/app/renderer/prism-renderer.component.js +84 -150
  78. package/dist/app/services/prism-canvas.service.d.ts +18 -0
  79. package/dist/app/services/prism-canvas.service.d.ts.map +1 -0
  80. package/dist/app/services/prism-canvas.service.js +63 -0
  81. package/dist/app/services/prism-theme.service.d.ts +13 -1
  82. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  83. package/dist/app/services/prism-theme.service.js +56 -9
  84. package/dist/app/shell/prism-shell.component.d.ts +1 -2
  85. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  86. package/dist/app/shell/prism-shell.component.js +189 -178
  87. package/dist/app/sidebar/prism-sidebar.component.d.ts +16 -10
  88. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  89. package/dist/app/sidebar/prism-sidebar.component.js +318 -204
  90. package/dist/app/theme/prism-default-theme.d.ts +1 -0
  91. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  92. package/dist/app/theme/prism-default-theme.js +53 -34
  93. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +13 -0
  94. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -0
  95. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +134 -0
  96. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  97. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +15 -11
  98. package/dist/decorator/showcase.decorator.d.ts +1 -3
  99. package/dist/decorator/showcase.decorator.d.ts.map +1 -1
  100. package/dist/decorator/showcase.decorator.js +2 -6
  101. package/dist/plugin/plugin.types.d.ts +1 -0
  102. package/dist/plugin/plugin.types.d.ts.map +1 -1
  103. package/dist/schematics/ng-add/index.d.ts.map +1 -1
  104. package/dist/schematics/ng-add/index.js +2 -1
  105. package/package.json +6 -6
@@ -3,107 +3,82 @@ import { A11yTreeService } from './a11y-tree.service.js';
3
3
  import { PrismRendererService } from '../../services/prism-renderer.service.js';
4
4
  import * as i0 from "@angular/core";
5
5
  const _forTrack0 = ($index, $item) => $item.key;
6
+ function A11yTreeNodeComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵtext(0);
8
+ } if (rf & 2) {
9
+ const ctx_r0 = i0.ɵɵnextContext();
10
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.isLast() ? "\u2514\u2500" : "\u251C\u2500", " ");
11
+ } }
6
12
  function A11yTreeNodeComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
7
- i0.ɵɵelementStart(0, "span", 3);
13
+ const _r2 = i0.ɵɵgetCurrentView();
14
+ i0.ɵɵelementStart(0, "button", 6);
15
+ i0.ɵɵlistener("click", function A11yTreeNodeComponent_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.toggleExpanded()); });
8
16
  i0.ɵɵtext(1);
9
17
  i0.ɵɵelementEnd();
10
18
  } if (rf & 2) {
11
19
  const ctx_r0 = i0.ɵɵnextContext();
12
20
  i0.ɵɵadvance();
13
- i0.ɵɵtextInterpolate(ctx_r0.expanded() ? "\u25BE" : "\u25B8");
21
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.expanded() ? "\u25BE" : "\u25B8", " ");
14
22
  } }
15
- function A11yTreeNodeComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
23
+ function A11yTreeNodeComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
16
24
  i0.ɵɵelementStart(0, "span", 4);
17
- i0.ɵɵtext(1, "\u00B7");
18
- i0.ɵɵelementEnd();
19
- } }
20
- function A11yTreeNodeComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
21
- i0.ɵɵelementStart(0, "span", 6);
22
25
  i0.ɵɵtext(1);
23
26
  i0.ɵɵelementEnd();
24
27
  } if (rf & 2) {
25
28
  const ctx_r0 = i0.ɵɵnextContext();
26
29
  i0.ɵɵadvance();
27
- i0.ɵɵtextInterpolate1(" \"", ctx_r0.node().name, "\"");
30
+ i0.ɵɵtextInterpolate1("\"", ctx_r0.node().name, "\"");
28
31
  } }
29
- function A11yTreeNodeComponent_For_9_Template(rf, ctx) { if (rf & 1) {
30
- i0.ɵɵelementStart(0, "span", 7);
32
+ function A11yTreeNodeComponent_For_8_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "span", 5);
31
34
  i0.ɵɵtext(1);
32
35
  i0.ɵɵelementEnd();
33
36
  } if (rf & 2) {
34
- const entry_r2 = ctx.$implicit;
37
+ const entry_r3 = ctx.$implicit;
35
38
  i0.ɵɵadvance();
36
- i0.ɵɵtextInterpolate(entry_r2.label);
37
- } }
38
- function A11yTreeNodeComponent_Conditional_10_For_1_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelement(0, "prism-a11y-tree-node", 8);
40
- } if (rf & 2) {
41
- const child_r3 = ctx.$implicit;
42
- const ctx_r0 = i0.ɵɵnextContext(2);
43
- i0.ɵɵproperty("node", child_r3)("depth", ctx_r0.depth() + 1);
39
+ i0.ɵɵtextInterpolate1("[", entry_r3.label, "]");
44
40
  } }
45
- function A11yTreeNodeComponent_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵelementStart(0, "div", 10)(1, "span", 11);
47
- i0.ɵɵtext(2);
48
- i0.ɵɵelementEnd()();
41
+ function A11yTreeNodeComponent_Conditional_9_For_1_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelement(0, "prism-a11y-tree-node", 7);
49
43
  } if (rf & 2) {
44
+ const child_r4 = ctx.$implicit;
45
+ const ɵ$index_23_r5 = ctx.$index;
46
+ const ɵ$count_23_r6 = ctx.$count;
50
47
  const ctx_r0 = i0.ɵɵnextContext(2);
51
- i0.ɵɵstyleProp("padding-left", (ctx_r0.depth() + 1) * 16 + 24, "px");
52
- i0.ɵɵadvance(2);
53
- i0.ɵɵtextInterpolate2(" ", ctx_r0.hiddenChildren().length, " hidden element", ctx_r0.hiddenChildren().length > 1 ? "s" : "", " (aria-hidden) ");
48
+ i0.ɵɵproperty("node", child_r4)("depth", ctx_r0.depth() + 1)("isLast", ɵ$index_23_r5 === ɵ$count_23_r6 - 1);
54
49
  } }
55
- function A11yTreeNodeComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
56
- i0.ɵɵrepeaterCreate(0, A11yTreeNodeComponent_Conditional_10_For_1_Template, 1, 2, "prism-a11y-tree-node", 8, i0.ɵɵrepeaterTrackByIndex);
57
- i0.ɵɵconditionalCreate(2, A11yTreeNodeComponent_Conditional_10_Conditional_2_Template, 3, 4, "div", 9);
50
+ function A11yTreeNodeComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵrepeaterCreate(0, A11yTreeNodeComponent_Conditional_9_For_1_Template, 1, 3, "prism-a11y-tree-node", 7, i0.ɵɵrepeaterTrackByIndex);
58
52
  } if (rf & 2) {
59
53
  const ctx_r0 = i0.ɵɵnextContext();
60
- i0.ɵɵrepeater(ctx_r0.visibleChildren());
61
- i0.ɵɵadvance(2);
62
- i0.ɵɵconditional(ctx_r0.hiddenChildren().length ? 2 : -1);
54
+ i0.ɵɵrepeater(ctx_r0.node().children);
63
55
  } }
64
- function A11yTreeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "div", 1);
66
- i0.ɵɵtext(1, "Select a component to inspect the accessibility tree.");
56
+ function A11yTreeComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelementStart(0, "div", 0);
58
+ i0.ɵɵtext(1, " Select a component to inspect the accessibility tree. ");
67
59
  i0.ɵɵelementEnd();
68
60
  } }
69
- function A11yTreeComponent_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
70
- i0.ɵɵelement(0, "prism-a11y-tree-node", 5);
71
- } if (rf & 2) {
72
- const ctx_r1 = i0.ɵɵnextContext(2);
73
- i0.ɵɵproperty("node", ctx_r1.tree())("depth", 0);
74
- } }
75
- function A11yTreeComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
76
- const _r1 = i0.ɵɵgetCurrentView();
77
- i0.ɵɵelementStart(0, "div", 2)(1, "span");
78
- i0.ɵɵtext(2, "Accessibility tree");
79
- i0.ɵɵelementEnd();
80
- i0.ɵɵelementStart(3, "button", 3);
81
- i0.ɵɵlistener("click", function A11yTreeComponent_Conditional_2_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.expandAll.update(v => !v)); });
82
- i0.ɵɵtext(4);
83
- i0.ɵɵelementEnd()();
84
- i0.ɵɵelementStart(5, "div", 4);
85
- i0.ɵɵconditionalCreate(6, A11yTreeComponent_Conditional_2_Conditional_6_Template, 1, 2, "prism-a11y-tree-node", 5);
61
+ function A11yTreeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelementStart(0, "div", 1);
63
+ i0.ɵɵelement(1, "prism-a11y-tree-node", 2);
86
64
  i0.ɵɵelementEnd();
87
65
  } if (rf & 2) {
88
- const ctx_r1 = i0.ɵɵnextContext();
89
- i0.ɵɵadvance(4);
90
- i0.ɵɵtextInterpolate1(" ", ctx_r1.expandAll() ? "Collapse all" : "Expand all", " ");
91
- i0.ɵɵadvance(2);
92
- i0.ɵɵconditional(ctx_r1.tree() ? 6 : -1);
66
+ const ctx_r0 = i0.ɵɵnextContext();
67
+ i0.ɵɵadvance();
68
+ i0.ɵɵproperty("node", ctx_r0.tree())("depth", 0)("isLast", true);
93
69
  } }
94
70
  export class A11yTreeNodeComponent {
95
71
  node = input.required(...(ngDevMode ? [{ debugName: "node" }] : []));
96
72
  depth = input(0, ...(ngDevMode ? [{ debugName: "depth" }] : []));
73
+ isLast = input(false, ...(ngDevMode ? [{ debugName: "isLast" }] : []));
97
74
  expanded = signal(true, ...(ngDevMode ? [{ debugName: "expanded" }] : []));
98
- visibleChildren = computed(() => this.node().children.filter((c) => !c.hidden), ...(ngDevMode ? [{ debugName: "visibleChildren" }] : []));
99
- hiddenChildren = computed(() => this.node().children.filter((c) => c.hidden), ...(ngDevMode ? [{ debugName: "hiddenChildren" }] : []));
100
75
  stateEntries = computed(() => {
101
76
  const states = this.node().states;
102
77
  return Object.entries(states)
103
78
  .filter(([key]) => key !== 'hidden')
104
79
  .map(([key, value]) => ({
105
80
  key,
106
- label: value === true ? key : `${key}:${value}`,
81
+ label: value === true ? key : `${key}=${value}`,
107
82
  }));
108
83
  }, ...(ngDevMode ? [{ debugName: "stateEntries" }] : []));
109
84
  toggleExpanded() {
@@ -112,81 +87,72 @@ export class A11yTreeNodeComponent {
112
87
  }
113
88
  }
114
89
  static ɵfac = function A11yTreeNodeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || A11yTreeNodeComponent)(); };
115
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yTreeNodeComponent, selectors: [["prism-a11y-tree-node"]], inputs: { node: [1, "node"], depth: [1, "depth"] }, decls: 11, vars: 8, consts: [[1, "prism-a11y-tn"], [1, "prism-a11y-tn__row", 3, "click"], [1, "prism-a11y-tn__indent"], [1, "prism-a11y-tn__chevron"], [1, "prism-a11y-tn__chevron", "prism-a11y-tn__chevron--leaf"], [1, "prism-a11y-tn__role"], [1, "prism-a11y-tn__name"], [1, "prism-a11y-tn__state"], [3, "node", "depth"], [1, "prism-a11y-tn__hidden-group", 3, "padding-left"], [1, "prism-a11y-tn__hidden-group"], [1, "prism-a11y-tn__hidden-label"]], template: function A11yTreeNodeComponent_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
117
- i0.ɵɵlistener("click", function A11yTreeNodeComponent_Template_button_click_1_listener() { return ctx.toggleExpanded(); });
118
- i0.ɵɵelement(2, "span", 2);
119
- i0.ɵɵconditionalCreate(3, A11yTreeNodeComponent_Conditional_3_Template, 2, 1, "span", 3)(4, A11yTreeNodeComponent_Conditional_4_Template, 2, 0, "span", 4);
120
- i0.ɵɵelementStart(5, "span", 5);
121
- i0.ɵɵtext(6);
90
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yTreeNodeComponent, selectors: [["prism-a11y-tree-node"]], inputs: { node: [1, "node"], depth: [1, "depth"], isLast: [1, "isLast"] }, decls: 10, vars: 9, consts: [[1, "aria-tree-line"], [1, "indent"], [1, "tree-toggle"], [1, "role"], [1, "name"], [1, "attr"], [1, "tree-toggle", 3, "click"], [3, "node", "depth", "isLast"]], template: function A11yTreeNodeComponent_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelementStart(0, "div", 0)(1, "span", 1);
92
+ i0.ɵɵconditionalCreate(2, A11yTreeNodeComponent_Conditional_2_Template, 1, 1);
122
93
  i0.ɵɵelementEnd();
123
- i0.ɵɵconditionalCreate(7, A11yTreeNodeComponent_Conditional_7_Template, 2, 1, "span", 6);
124
- i0.ɵɵrepeaterCreate(8, A11yTreeNodeComponent_For_9_Template, 2, 1, "span", 7, _forTrack0);
94
+ i0.ɵɵconditionalCreate(3, A11yTreeNodeComponent_Conditional_3_Template, 2, 1, "button", 2);
95
+ i0.ɵɵelementStart(4, "span", 3);
96
+ i0.ɵɵtext(5);
125
97
  i0.ɵɵelementEnd();
126
- i0.ɵɵconditionalCreate(10, A11yTreeNodeComponent_Conditional_10_Template, 3, 1);
98
+ i0.ɵɵconditionalCreate(6, A11yTreeNodeComponent_Conditional_6_Template, 2, 1, "span", 4);
99
+ i0.ɵɵrepeaterCreate(7, A11yTreeNodeComponent_For_8_Template, 2, 1, "span", 5, _forTrack0);
127
100
  i0.ɵɵelementEnd();
101
+ i0.ɵɵconditionalCreate(9, A11yTreeNodeComponent_Conditional_9_Template, 2, 0);
128
102
  } if (rf & 2) {
103
+ i0.ɵɵclassProp("aria-tree-line--hidden", ctx.node().hidden);
129
104
  i0.ɵɵadvance();
130
- i0.ɵɵclassProp("prism-a11y-tn__row--hidden", ctx.node().hidden);
105
+ i0.ɵɵstyleProp("width", ctx.depth() * 20, "px");
131
106
  i0.ɵɵadvance();
132
- i0.ɵɵstyleProp("width", ctx.depth() * 16, "px");
107
+ i0.ɵɵconditional(ctx.depth() > 0 ? 2 : -1);
133
108
  i0.ɵɵadvance();
134
- i0.ɵɵconditional(ctx.node().children.length ? 3 : 4);
135
- i0.ɵɵadvance(3);
109
+ i0.ɵɵconditional(ctx.node().children.length ? 3 : -1);
110
+ i0.ɵɵadvance(2);
136
111
  i0.ɵɵtextInterpolate(ctx.node().role);
137
112
  i0.ɵɵadvance();
138
- i0.ɵɵconditional(ctx.node().name ? 7 : -1);
113
+ i0.ɵɵconditional(ctx.node().name ? 6 : -1);
139
114
  i0.ɵɵadvance();
140
115
  i0.ɵɵrepeater(ctx.stateEntries());
141
116
  i0.ɵɵadvance(2);
142
- i0.ɵɵconditional(ctx.expanded() && ctx.node().children.length ? 10 : -1);
143
- } }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] { display: block; }\n\n .prism-a11y-tn__row[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n align-items: center;\n padding: 3px 12px 3px 4px;\n gap: 0;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n font-family: var(--prism-font-mono, monospace);\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n transition: background 0.1s;\n white-space: nowrap;\n }\n .prism-a11y-tn__row[_ngcontent-%COMP%]:hover { background: rgba(255, 255, 255, 0.04); }\n .prism-a11y-tn__row--hidden[_ngcontent-%COMP%] { opacity: 0.4; }\n\n .prism-a11y-tn__indent[_ngcontent-%COMP%] { display: inline-block; flex-shrink: 0; }\n\n .prism-a11y-tn__chevron[_ngcontent-%COMP%] {\n display: inline-flex;\n width: 16px;\n justify-content: center;\n font-size: 10px;\n color: var(--prism-text-muted);\n flex-shrink: 0;\n }\n .prism-a11y-tn__chevron--leaf[_ngcontent-%COMP%] { opacity: 0.3; }\n\n .prism-a11y-tn__role[_ngcontent-%COMP%] {\n color: var(--prism-primary);\n font-weight: 600;\n }\n\n .prism-a11y-tn__name[_ngcontent-%COMP%] {\n color: var(--prism-text-2);\n margin-left: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 240px;\n }\n\n .prism-a11y-tn__state[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n margin-left: 6px;\n padding: 0 5px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.04em;\n background: color-mix(in srgb, #fbbf24 12%, transparent);\n color: #fbbf24;\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n }\n\n .prism-a11y-tn__hidden-group[_ngcontent-%COMP%] {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n\n .prism-a11y-tn__hidden-label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--prism-text-muted);\n font-style: italic;\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n }"], changeDetection: 0 });
117
+ i0.ɵɵconditional(ctx.expanded() && ctx.node().children.length ? 9 : -1);
118
+ } }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] { display: block; }\n\n .aria-tree-line[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 2px 0;\n font-family: var(--font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--prism-text-2);\n }\n .aria-tree-line--hidden[_ngcontent-%COMP%] { opacity: 0.4; }\n\n .indent[_ngcontent-%COMP%] {\n color: var(--prism-text-ghost);\n opacity: 0.5;\n user-select: none;\n flex-shrink: 0;\n white-space: pre;\n font-size: 12px;\n text-align: right;\n }\n\n .tree-toggle[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 10px;\n color: var(--prism-text-muted);\n padding: 0;\n width: 12px;\n flex-shrink: 0;\n }\n\n .role[_ngcontent-%COMP%] { color: var(--prism-primary); font-weight: 600; }\n .name[_ngcontent-%COMP%] { color: var(--prism-text); }\n .attr[_ngcontent-%COMP%] { color: var(--prism-text-ghost); }"], changeDetection: 0 });
144
119
  }
145
120
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yTreeNodeComponent, [{
146
121
  type: Component,
147
122
  args: [{ selector: 'prism-a11y-tree-node', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
148
- <div class="prism-a11y-tn">
149
- <button
150
- class="prism-a11y-tn__row"
151
- [class.prism-a11y-tn__row--hidden]="node().hidden"
152
- (click)="toggleExpanded()"
153
- >
154
- <span class="prism-a11y-tn__indent" [style.width.px]="depth() * 16"></span>
155
- @if (node().children.length) {
156
- <span class="prism-a11y-tn__chevron">{{ expanded() ? '▾' : '▸' }}</span>
157
- } @else {
158
- <span class="prism-a11y-tn__chevron prism-a11y-tn__chevron--leaf">·</span>
159
- }
160
- <span class="prism-a11y-tn__role">{{ node().role }}</span>
161
- @if (node().name) {
162
- <span class="prism-a11y-tn__name"> "{{ node().name }}"</span>
163
- }
164
- @for (entry of stateEntries(); track entry.key) {
165
- <span class="prism-a11y-tn__state">{{ entry.label }}</span>
123
+ <div class="aria-tree-line" [class.aria-tree-line--hidden]="node().hidden">
124
+ <span class="indent" [style.width.px]="depth() * 20">
125
+ @if (depth() > 0) {
126
+ {{ isLast() ? '└─' : '├─' }}
166
127
  }
128
+ </span>
129
+ @if (node().children.length) {
130
+ <button class="tree-toggle" (click)="toggleExpanded()">
131
+ {{ expanded() ? '▾' : '▸' }}
167
132
  </button>
168
-
169
- @if (expanded() && node().children.length) {
170
- @for (child of visibleChildren(); track $index) {
171
- <prism-a11y-tree-node [node]="child" [depth]="depth() + 1" />
172
- }
173
- @if (hiddenChildren().length) {
174
- <div class="prism-a11y-tn__hidden-group" [style.padding-left.px]="(depth() + 1) * 16 + 24">
175
- <span class="prism-a11y-tn__hidden-label">
176
- {{ hiddenChildren().length }} hidden element{{ hiddenChildren().length > 1 ? 's' : '' }} (aria-hidden)
177
- </span>
178
- </div>
179
- }
133
+ }
134
+ <span class="role">{{ node().role }}</span>
135
+ @if (node().name) {
136
+ <span class="name">"{{ node().name }}"</span>
137
+ } @for (entry of stateEntries(); track entry.key) {
138
+ <span class="attr">[{{ entry.label }}]</span>
180
139
  }
181
140
  </div>
182
- `, styles: ["\n :host { display: block; }\n\n .prism-a11y-tn__row {\n width: 100%;\n display: flex;\n align-items: center;\n padding: 3px 12px 3px 4px;\n gap: 0;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n font-family: var(--prism-font-mono, monospace);\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n transition: background 0.1s;\n white-space: nowrap;\n }\n .prism-a11y-tn__row:hover { background: rgba(255, 255, 255, 0.04); }\n .prism-a11y-tn__row--hidden { opacity: 0.4; }\n\n .prism-a11y-tn__indent { display: inline-block; flex-shrink: 0; }\n\n .prism-a11y-tn__chevron {\n display: inline-flex;\n width: 16px;\n justify-content: center;\n font-size: 10px;\n color: var(--prism-text-muted);\n flex-shrink: 0;\n }\n .prism-a11y-tn__chevron--leaf { opacity: 0.3; }\n\n .prism-a11y-tn__role {\n color: var(--prism-primary);\n font-weight: 600;\n }\n\n .prism-a11y-tn__name {\n color: var(--prism-text-2);\n margin-left: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 240px;\n }\n\n .prism-a11y-tn__state {\n display: inline-flex;\n align-items: center;\n margin-left: 6px;\n padding: 0 5px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.04em;\n background: color-mix(in srgb, #fbbf24 12%, transparent);\n color: #fbbf24;\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n }\n\n .prism-a11y-tn__hidden-group {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n\n .prism-a11y-tn__hidden-label {\n font-size: 11px;\n color: var(--prism-text-muted);\n font-style: italic;\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n }\n "] }]
183
- }], null, { node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }], depth: [{ type: i0.Input, args: [{ isSignal: true, alias: "depth", required: false }] }] }); })();
184
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeNodeComponent, { className: "A11yTreeNodeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 128 }); })();
141
+ @if (expanded() && node().children.length) { @for (child of node().children;
142
+ track $index; let last = $last) {
143
+ <prism-a11y-tree-node
144
+ [node]="child"
145
+ [depth]="depth() + 1"
146
+ [isLast]="last"
147
+ />
148
+ } }
149
+ `, styles: ["\n :host { display: block; }\n\n .aria-tree-line {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 2px 0;\n font-family: var(--font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--prism-text-2);\n }\n .aria-tree-line--hidden { opacity: 0.4; }\n\n .indent {\n color: var(--prism-text-ghost);\n opacity: 0.5;\n user-select: none;\n flex-shrink: 0;\n white-space: pre;\n font-size: 12px;\n text-align: right;\n }\n\n .tree-toggle {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 10px;\n color: var(--prism-text-muted);\n padding: 0;\n width: 12px;\n flex-shrink: 0;\n }\n\n .role { color: var(--prism-primary); font-weight: 600; }\n .name { color: var(--prism-text); }\n .attr { color: var(--prism-text-ghost); }\n "] }]
150
+ }], null, { node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }], depth: [{ type: i0.Input, args: [{ isSignal: true, alias: "depth", required: false }] }], isLast: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLast", required: false }] }] }); })();
151
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeNodeComponent, { className: "A11yTreeNodeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 86 }); })();
185
152
  export class A11yTreeComponent {
186
153
  rendererService = inject(PrismRendererService);
187
154
  treeService = inject(A11yTreeService);
188
155
  activeComponent = input(null, ...(ngDevMode ? [{ debugName: "activeComponent" }] : []));
189
- expandAll = signal(true, ...(ngDevMode ? [{ debugName: "expandAll" }] : []));
190
156
  tree = computed(() => {
191
157
  const root = this.rendererService.renderedElement();
192
158
  if (!root)
@@ -195,35 +161,24 @@ export class A11yTreeComponent {
195
161
  return this.treeService.buildTree(root, doc ? (id) => doc.getElementById(id) : undefined);
196
162
  }, ...(ngDevMode ? [{ debugName: "tree" }] : []));
197
163
  static ɵfac = function A11yTreeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || A11yTreeComponent)(); };
198
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yTreeComponent, selectors: [["prism-a11y-tree"]], inputs: { activeComponent: [1, "activeComponent"] }, decls: 3, vars: 1, consts: [[1, "prism-a11y-tree"], [1, "prism-a11y-tree__empty"], [1, "prism-a11y-tree__header"], [1, "prism-a11y-tree__expand-btn", 3, "click"], [1, "prism-a11y-tree__content"], [3, "node", "depth"]], template: function A11yTreeComponent_Template(rf, ctx) { if (rf & 1) {
199
- i0.ɵɵelementStart(0, "div", 0);
200
- i0.ɵɵconditionalCreate(1, A11yTreeComponent_Conditional_1_Template, 2, 0, "div", 1)(2, A11yTreeComponent_Conditional_2_Template, 7, 2);
201
- i0.ɵɵelementEnd();
164
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yTreeComponent, selectors: [["prism-a11y-tree"]], inputs: { activeComponent: [1, "activeComponent"] }, decls: 2, vars: 1, consts: [[1, "tree-empty"], [1, "aria-tree"], [3, "node", "depth", "isLast"]], template: function A11yTreeComponent_Template(rf, ctx) { if (rf & 1) {
165
+ i0.ɵɵconditionalCreate(0, A11yTreeComponent_Conditional_0_Template, 2, 0, "div", 0)(1, A11yTreeComponent_Conditional_1_Template, 2, 3, "div", 1);
202
166
  } if (rf & 2) {
203
- i0.ɵɵadvance();
204
- i0.ɵɵconditional(!ctx.rendererService.renderedElement() ? 1 : 2);
205
- } }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] { display: flex; flex-direction: column; height: 100%; }\n\n .prism-a11y-tree[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .prism-a11y-tree__empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n color: var(--prism-text-muted);\n font-size: 13px;\n }\n\n .prism-a11y-tree__header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n border-bottom: 1px solid var(--prism-border);\n font-size: 12px;\n color: var(--prism-text-muted);\n flex-shrink: 0;\n }\n\n .prism-a11y-tree__expand-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 11px;\n color: var(--prism-primary);\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n padding: 2px 6px;\n }\n .prism-a11y-tree__expand-btn[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n\n .prism-a11y-tree__content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n padding: 8px 4px;\n }"], changeDetection: 0 });
167
+ i0.ɵɵconditional(!ctx.rendererService.renderedElement() ? 0 : ctx.tree() ? 1 : -1);
168
+ } }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; overflow: auto; }\n\n .aria-tree[_ngcontent-%COMP%] {\n padding: 14px 20px;\n }\n\n .tree-empty[_ngcontent-%COMP%] {\n display: flex; align-items: center; justify-content: center;\n min-height: 100px; color: var(--prism-text-muted); font-size: 13px;\n }"], changeDetection: 0 });
206
169
  }
207
170
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yTreeComponent, [{
208
171
  type: Component,
209
172
  args: [{ selector: 'prism-a11y-tree', standalone: true, imports: [A11yTreeNodeComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
210
- <div class="prism-a11y-tree">
211
- @if (!rendererService.renderedElement()) {
212
- <div class="prism-a11y-tree__empty">Select a component to inspect the accessibility tree.</div>
213
- } @else {
214
- <div class="prism-a11y-tree__header">
215
- <span>Accessibility tree</span>
216
- <button class="prism-a11y-tree__expand-btn" (click)="expandAll.update(v => !v)">
217
- {{ expandAll() ? 'Collapse all' : 'Expand all' }}
218
- </button>
219
- </div>
220
- <div class="prism-a11y-tree__content">
221
- @if (tree()) {
222
- <prism-a11y-tree-node [node]="tree()!" [depth]="0" />
223
- }
224
- </div>
225
- }
173
+ @if (!rendererService.renderedElement()) {
174
+ <div class="tree-empty">
175
+ Select a component to inspect the accessibility tree.
176
+ </div>
177
+ } @else if (tree()) {
178
+ <div class="aria-tree">
179
+ <prism-a11y-tree-node [node]="tree()!" [depth]="0" [isLast]="true" />
226
180
  </div>
227
- `, styles: ["\n :host { display: flex; flex-direction: column; height: 100%; }\n\n .prism-a11y-tree {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .prism-a11y-tree__empty {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n color: var(--prism-text-muted);\n font-size: 13px;\n }\n\n .prism-a11y-tree__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n border-bottom: 1px solid var(--prism-border);\n font-size: 12px;\n color: var(--prism-text-muted);\n flex-shrink: 0;\n }\n\n .prism-a11y-tree__expand-btn {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 11px;\n color: var(--prism-primary);\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n padding: 2px 6px;\n }\n .prism-a11y-tree__expand-btn:hover { text-decoration: underline; }\n\n .prism-a11y-tree__content {\n flex: 1;\n overflow: auto;\n padding: 8px 4px;\n }\n "] }]
181
+ }
182
+ `, styles: ["\n :host { display: block; height: 100%; overflow: auto; }\n\n .aria-tree {\n padding: 14px 20px;\n }\n\n .tree-empty {\n display: flex; align-items: center; justify-content: center;\n min-height: 100px; color: var(--prism-text-muted); font-size: 13px;\n }\n "] }]
228
183
  }], null, { activeComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeComponent", required: false }] }] }); })();
229
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeComponent, { className: "A11yTreeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 230 }); })();
184
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeComponent, { className: "A11yTreeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 139 }); })();
@@ -1,14 +1,10 @@
1
- import type { Result } from 'axe-core';
2
1
  import { A11yAuditService } from './a11y-audit.service.js';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class A11yViolationsComponent {
5
4
  protected readonly auditService: A11yAuditService;
6
5
  protected readonly scoreResult: import("@angular/core").Signal<import("./a11y.types.js").A11yScoreResult | null>;
7
- protected readonly violations: import("@angular/core").Signal<Result[]>;
8
- protected readonly incomplete: import("@angular/core").Signal<import("axe-core").IncompleteResult[]>;
9
- protected readonly passes: import("@angular/core").Signal<Result[]>;
10
- protected readonly openSections: import("@angular/core").WritableSignal<Set<string>>;
11
- protected toggle(section: string): void;
6
+ protected readonly allResults: import("@angular/core").Signal<import("axe-core").Result[]>;
7
+ protected sevColor(impact: string | undefined): string;
12
8
  static ɵfac: i0.ɵɵFactoryDeclaration<A11yViolationsComponent, never>;
13
9
  static ɵcmp: i0.ɵɵComponentDeclaration<A11yViolationsComponent, "prism-a11y-violations", never, {}, {}, never, never, true, never>;
14
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-violations.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-violations.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;;AAgB3D,qBAwWa,uBAAuB;IAClC,SAAS,CAAC,QAAQ,CAAC,YAAY,mBAA4B;IAE3D,SAAS,CAAC,QAAQ,CAAC,WAAW,mFAAmD;IACjF,SAAS,CAAC,QAAQ,CAAC,UAAU,2CAE3B;IACF,SAAS,CAAC,QAAQ,CAAC,UAAU,wEAAiE;IAC9F,SAAS,CAAC,QAAQ,CAAC,MAAM,2CAA6D;IACtF,SAAS,CAAC,QAAQ,CAAC,YAAY,sDAAgD;IAE/E,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;yCAX5B,uBAAuB;2CAAvB,uBAAuB;CAmBnC"}
1
+ {"version":3,"file":"a11y-violations.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-violations.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;;AAqB3D,qBA0Ka,uBAAuB;IAClC,SAAS,CAAC,QAAQ,CAAC,YAAY,mBAA4B;IAE3D,SAAS,CAAC,QAAQ,CAAC,WAAW,mFAE5B;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,8DAU1B;IAEH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;yCAnB3C,uBAAuB;2CAAvB,uBAAuB;CAsBnC"}