@ng-prism/core 22.6.0 → 22.7.0-beta.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.
- package/README.md +11 -9
- package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
- package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
- package/dist/app/canvas/canvas-bg.styles.js +1 -1
- package/dist/app/canvas/canvas-overlay-tokens.d.ts +12 -0
- package/dist/app/canvas/canvas-overlay-tokens.d.ts.map +1 -0
- package/dist/app/canvas/canvas-overlay-tokens.js +52 -0
- package/dist/app/canvas/prism-canvas-bg-pill.component.js +2 -2
- package/dist/app/canvas/prism-canvas-pin-row.component.js +2 -2
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts +2 -0
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-rulers.component.js +17 -12
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +3 -2
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +89 -97
- package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-template-popover.component.js +16 -7
- package/dist/app/component-head/head-metrics.d.ts +35 -19
- package/dist/app/component-head/head-metrics.d.ts.map +1 -1
- package/dist/app/component-head/head-metrics.js +57 -27
- package/dist/app/component-head/pipe-facts.d.ts +9 -0
- package/dist/app/component-head/pipe-facts.d.ts.map +1 -0
- package/dist/app/component-head/pipe-facts.js +15 -0
- package/dist/app/component-head/prism-component-head.component.d.ts +19 -22
- package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-component-head.component.js +80 -96
- package/dist/app/component-head/prism-head-gauge.component.d.ts +8 -12
- package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-gauge.component.js +51 -67
- package/dist/app/component-head/prism-head-info.component.d.ts +13 -2
- package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-info.component.js +57 -16
- package/dist/app/component-head/prism-stat.component.d.ts +4 -5
- package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-stat.component.js +16 -12
- package/dist/app/component-head/service-facts.d.ts +8 -0
- package/dist/app/component-head/service-facts.d.ts.map +1 -0
- package/dist/app/component-head/service-facts.js +11 -0
- package/dist/app/controls/boolean-control.component.js +2 -2
- package/dist/app/controls/json-control.component.js +2 -2
- package/dist/app/controls/union-control.component.js +4 -3
- package/dist/app/header/header-brand.d.ts +25 -0
- package/dist/app/header/header-brand.d.ts.map +1 -0
- package/dist/app/header/header-brand.js +10 -0
- package/dist/app/header/prism-header.component.d.ts +2 -2
- package/dist/app/header/prism-header.component.d.ts.map +1 -1
- package/dist/app/header/prism-header.component.js +73 -57
- package/dist/app/icons/icon-registry.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.js +4 -1
- package/dist/app/index.d.ts +12 -0
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +12 -1
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts +3 -0
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
- package/dist/app/layout-menu/prism-layout-menu.component.js +72 -58
- package/dist/app/overview/open-in-playground.d.ts +8 -0
- package/dist/app/overview/open-in-playground.d.ts.map +1 -1
- package/dist/app/overview/open-in-playground.js +13 -0
- package/dist/app/overview/overview-matrix.d.ts +10 -4
- package/dist/app/overview/overview-matrix.d.ts.map +1 -1
- package/dist/app/overview/overview-matrix.js +3 -3
- package/dist/app/overview/prism-overview-cell.component.d.ts +6 -2
- package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.js +35 -24
- package/dist/app/overview/prism-overview-matrix.component.js +46 -55
- package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +1 -4
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-header-badge.component.js +8 -19
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +2 -2
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +1 -0
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-overlay-host.component.js +4 -3
- package/dist/app/panels/a11y/a11y-panel.component.d.ts +4 -1
- package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.js +32 -54
- package/dist/app/panels/a11y/a11y-score.component.d.ts +8 -3
- package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.js +19 -35
- package/dist/app/panels/a11y/a11y-sr-overlay.component.js +2 -2
- package/dist/app/panels/a11y/a11y-sr.component.js +2 -2
- package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-summary.js +8 -1
- package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
- package/dist/app/panels/a11y/a11y-violations.component.d.ts +23 -2
- package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-violations.component.js +104 -89
- package/dist/app/panels/a11y/severity.d.ts +9 -0
- package/dist/app/panels/a11y/severity.d.ts.map +1 -0
- package/dist/app/panels/a11y/severity.js +12 -0
- package/dist/app/panels/controls/non-editable-input-types.d.ts +9 -1
- package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
- package/dist/app/panels/controls/non-editable-input-types.js +18 -0
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts +2 -1
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
- package/dist/app/panels/controls/prism-controls-panel.component.js +77 -59
- package/dist/app/panels/events/prism-events-panel.component.d.ts +2 -0
- package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
- package/dist/app/panels/events/prism-events-panel.component.js +20 -7
- package/dist/app/panels/events/prism-json-node.utils.d.ts +6 -0
- package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
- package/dist/app/panels/events/prism-json-node.utils.js +8 -0
- package/dist/app/panels/panel-host/addon-panels.d.ts +11 -0
- package/dist/app/panels/panel-host/addon-panels.d.ts.map +1 -0
- package/dist/app/panels/panel-host/addon-panels.js +12 -0
- package/dist/app/panels/panel-host/panel-badge.d.ts +22 -0
- package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
- package/dist/app/panels/panel-host/panel-badge.js +56 -11
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +4 -1
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
- package/dist/app/panels/panel-host/prism-panel-host.component.js +36 -70
- package/dist/app/renderer/composition.d.ts +20 -0
- package/dist/app/renderer/composition.d.ts.map +1 -0
- package/dist/app/renderer/composition.js +26 -0
- package/dist/app/renderer/input-bindings.d.ts +13 -1
- package/dist/app/renderer/input-bindings.d.ts.map +1 -1
- package/dist/app/renderer/input-bindings.js +22 -1
- package/dist/app/renderer/prism-renderer.component.d.ts +8 -1
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +40 -28
- package/dist/app/renderer/snippet-generator.d.ts +14 -2
- package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
- package/dist/app/renderer/snippet-generator.js +137 -82
- package/dist/app/services/navigation-item.d.ts +10 -0
- package/dist/app/services/navigation-item.d.ts.map +1 -0
- package/dist/app/services/navigation-item.js +20 -0
- package/dist/app/services/navigation-item.types.d.ts +8 -0
- package/dist/app/services/navigation-item.types.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.d.ts +12 -0
- package/dist/app/services/prism-layout.service.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.js +17 -7
- package/dist/app/services/prism-manifest.service.d.ts +4 -0
- package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
- package/dist/app/services/prism-manifest.service.js +4 -0
- package/dist/app/services/prism-navigation.service.d.ts +12 -0
- package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
- package/dist/app/services/prism-navigation.service.js +85 -19
- package/dist/app/services/prism-panel.service.d.ts +7 -3
- package/dist/app/services/prism-panel.service.d.ts.map +1 -1
- package/dist/app/services/prism-panel.service.js +13 -4
- package/dist/app/services/prism-renderer.service.d.ts +6 -0
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.js +40 -6
- package/dist/app/services/prism-search.service.d.ts +4 -0
- package/dist/app/services/prism-search.service.d.ts.map +1 -1
- package/dist/app/services/prism-search.service.js +29 -6
- package/dist/app/services/prism-theme.service.d.ts +11 -3
- package/dist/app/services/prism-theme.service.d.ts.map +1 -1
- package/dist/app/services/prism-theme.service.js +27 -19
- package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
- package/dist/app/services/prism-url-state.service.js +42 -4
- package/dist/app/shared/badge.types.d.ts +7 -0
- package/dist/app/shared/badge.types.d.ts.map +1 -0
- package/dist/app/shared/badge.types.js +9 -0
- package/dist/app/shared/brand-mark.d.ts +35 -0
- package/dist/app/shared/brand-mark.d.ts.map +1 -0
- package/dist/app/shared/brand-mark.js +52 -0
- package/dist/app/shared/metric-bar.d.ts +6 -0
- package/dist/app/shared/metric-bar.d.ts.map +1 -0
- package/dist/app/shared/metric-bar.js +7 -0
- package/dist/app/shared/prism-badge.component.d.ts +21 -0
- package/dist/app/shared/prism-badge.component.d.ts.map +1 -0
- package/dist/app/shared/prism-badge.component.js +68 -0
- package/dist/app/shared/prism-button.component.d.ts +12 -0
- package/dist/app/shared/prism-button.component.d.ts.map +1 -0
- package/dist/app/shared/prism-button.component.js +28 -0
- package/dist/app/shared/prism-icon-button.component.d.ts +17 -0
- package/dist/app/shared/prism-icon-button.component.d.ts.map +1 -0
- package/dist/app/shared/prism-icon-button.component.js +37 -0
- package/dist/app/shared/prism-list-row.component.d.ts +17 -0
- package/dist/app/shared/prism-list-row.component.d.ts.map +1 -0
- package/dist/app/shared/prism-list-row.component.js +57 -0
- package/dist/app/shared/prism-logo.component.d.ts +24 -0
- package/dist/app/shared/prism-logo.component.d.ts.map +1 -0
- package/dist/app/shared/prism-logo.component.js +77 -0
- package/dist/app/shared/prism-metric-badge.component.d.ts +9 -4
- package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
- package/dist/app/shared/prism-metric-badge.component.js +33 -12
- package/dist/app/shared/prism-metric-card.component.d.ts +30 -0
- package/dist/app/shared/prism-metric-card.component.d.ts.map +1 -0
- package/dist/app/shared/prism-metric-card.component.js +111 -0
- package/dist/app/shared/prism-panel-toolbar.component.d.ts +13 -0
- package/dist/app/shared/prism-panel-toolbar.component.d.ts.map +1 -0
- package/dist/app/shared/prism-panel-toolbar.component.js +28 -0
- package/dist/app/shared/prism-segmented.component.d.ts +25 -0
- package/dist/app/shared/prism-segmented.component.d.ts.map +1 -0
- package/dist/app/shared/prism-segmented.component.js +77 -0
- package/dist/app/shared/prism-tabs.component.d.ts +44 -0
- package/dist/app/shared/prism-tabs.component.d.ts.map +1 -0
- package/dist/app/shared/prism-tabs.component.js +134 -0
- package/dist/app/shared/roving-focus.d.ts +13 -0
- package/dist/app/shared/roving-focus.d.ts.map +1 -0
- package/dist/app/shared/roving-focus.js +34 -0
- package/dist/app/shell/prism-shell.component.d.ts +13 -0
- package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
- package/dist/app/shell/prism-shell.component.js +57 -28
- package/dist/app/shell/should-select-first.d.ts +17 -0
- package/dist/app/shell/should-select-first.d.ts.map +1 -0
- package/dist/app/shell/should-select-first.js +13 -0
- package/dist/app/sidebar/navigation-decorations.d.ts +23 -1
- package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
- package/dist/app/sidebar/navigation-decorations.js +33 -2
- package/dist/app/sidebar/prism-sidebar.component.d.ts +5 -15
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
- package/dist/app/sidebar/prism-sidebar.component.js +89 -77
- package/dist/app/theme/deprecated-tokens.d.ts +15 -0
- package/dist/app/theme/deprecated-tokens.d.ts.map +1 -0
- package/dist/app/theme/deprecated-tokens.js +22 -0
- package/dist/app/theme/favicon.d.ts +3 -0
- package/dist/app/theme/favicon.d.ts.map +1 -0
- package/dist/app/theme/favicon.js +3 -0
- package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
- package/dist/app/theme/prism-default-theme.js +116 -61
- package/dist/app/theme/resolve-theme-tokens.d.ts +29 -0
- package/dist/app/theme/resolve-theme-tokens.d.ts.map +1 -0
- package/dist/app/theme/resolve-theme-tokens.js +43 -0
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -7
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +31 -69
- package/dist/app/view-tab-bar/next-view-id.d.ts +7 -1
- package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
- package/dist/app/view-tab-bar/next-view-id.js +9 -1
- package/dist/app/view-tab-bar/panel-inputs.d.ts +28 -0
- package/dist/app/view-tab-bar/panel-inputs.d.ts.map +1 -0
- package/dist/app/view-tab-bar/panel-inputs.js +41 -0
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +2 -3
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
- package/dist/app/view-tab-bar/prism-view-panel-host.component.js +9 -9
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +6 -0
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +22 -29
- package/dist/builder/config-loader/deprecated-options.d.ts +4 -2
- package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -1
- package/dist/builder/config-loader/deprecated-options.js +13 -2
- package/dist/builder/manifest/composition-wrapper.generator.d.ts +14 -0
- package/dist/builder/manifest/composition-wrapper.generator.d.ts.map +1 -0
- package/dist/builder/manifest/composition-wrapper.generator.js +66 -0
- package/dist/builder/manifest/host-parser.d.ts +2 -0
- package/dist/builder/manifest/host-parser.d.ts.map +1 -1
- package/dist/builder/manifest/host-parser.js +9 -4
- package/dist/builder/manifest/manifest-imports.d.ts +34 -0
- package/dist/builder/manifest/manifest-imports.d.ts.map +1 -0
- package/dist/builder/manifest/manifest-imports.js +91 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts +13 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.js +135 -64
- package/dist/builder/manifest/selector-element.d.ts +16 -0
- package/dist/builder/manifest/selector-element.d.ts.map +1 -0
- package/dist/builder/manifest/selector-element.js +46 -0
- package/dist/builder/manifest/template-literal.d.ts +3 -0
- package/dist/builder/manifest/template-literal.d.ts.map +1 -0
- package/dist/builder/manifest/template-literal.js +4 -0
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
- package/dist/builder/plugin-runner/plugin-runner.js +29 -26
- package/dist/builder/scanner/api/angular-decorators.d.ts +84 -0
- package/dist/builder/scanner/api/angular-decorators.d.ts.map +1 -0
- package/dist/builder/scanner/api/angular-decorators.js +157 -0
- package/dist/builder/scanner/api/component-api.extractor.d.ts +13 -0
- package/dist/builder/scanner/api/component-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/api/component-api.extractor.js +104 -0
- package/dist/builder/scanner/api/doc-tags.d.ts +13 -0
- package/dist/builder/scanner/api/doc-tags.d.ts.map +1 -0
- package/dist/builder/scanner/api/doc-tags.js +101 -0
- package/dist/builder/scanner/api/export-index.d.ts +18 -0
- package/dist/builder/scanner/api/export-index.d.ts.map +1 -0
- package/dist/builder/scanner/api/export-index.js +22 -0
- package/dist/builder/scanner/api/member.extractor.d.ts +90 -0
- package/dist/builder/scanner/api/member.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/api/member.extractor.js +270 -0
- package/dist/builder/scanner/api/pipe-api.extractor.d.ts +12 -0
- package/dist/builder/scanner/api/pipe-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/api/pipe-api.extractor.js +52 -0
- package/dist/builder/scanner/api/service-api.extractor.d.ts +14 -0
- package/dist/builder/scanner/api/service-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/api/service-api.extractor.js +119 -0
- package/dist/builder/scanner/api/setup.reader.d.ts +26 -0
- package/dist/builder/scanner/api/setup.reader.d.ts.map +1 -0
- package/dist/builder/scanner/api/setup.reader.js +89 -0
- package/dist/builder/scanner/api/type-collector.d.ts +24 -0
- package/dist/builder/scanner/api/type-collector.d.ts.map +1 -0
- package/dist/builder/scanner/api/type-collector.js +211 -0
- package/dist/builder/scanner/ast-utils.d.ts +8 -0
- package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
- package/dist/builder/scanner/ast-utils.js +37 -1
- package/dist/builder/scanner/class-hierarchy.d.ts +5 -3
- package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -1
- package/dist/builder/scanner/class-hierarchy.js +12 -6
- package/dist/builder/scanner/component.scanner.d.ts +60 -6
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +209 -57
- package/dist/builder/scanner/composition/compose-template.d.ts +36 -0
- package/dist/builder/scanner/composition/compose-template.d.ts.map +1 -0
- package/dist/builder/scanner/composition/compose-template.js +187 -0
- package/dist/builder/scanner/composition/declarables.d.ts +54 -0
- package/dist/builder/scanner/composition/declarables.d.ts.map +1 -0
- package/dist/builder/scanner/composition/declarables.js +182 -0
- package/dist/builder/scanner/composition/match-declarables.d.ts +43 -0
- package/dist/builder/scanner/composition/match-declarables.d.ts.map +1 -0
- package/dist/builder/scanner/composition/match-declarables.js +131 -0
- package/dist/builder/scanner/composition/read-composition.d.ts +77 -0
- package/dist/builder/scanner/composition/read-composition.d.ts.map +1 -0
- package/dist/builder/scanner/composition/read-composition.js +302 -0
- package/dist/builder/scanner/composition/template-elements.d.ts +12 -0
- package/dist/builder/scanner/composition/template-elements.d.ts.map +1 -0
- package/dist/builder/scanner/composition/template-elements.js +41 -0
- package/dist/builder/scanner/index.d.ts +4 -0
- package/dist/builder/scanner/index.d.ts.map +1 -1
- package/dist/builder/scanner/index.js +2 -0
- package/dist/builder/scanner/input.extractor.d.ts +31 -2
- package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.js +52 -15
- package/dist/builder/scanner/pipe.scanner.d.ts +29 -0
- package/dist/builder/scanner/pipe.scanner.d.ts.map +1 -0
- package/dist/builder/scanner/pipe.scanner.js +65 -0
- package/dist/builder/scanner/scanner.d.ts +25 -1
- package/dist/builder/scanner/scanner.d.ts.map +1 -1
- package/dist/builder/scanner/scanner.js +60 -26
- package/dist/builder/scanner/service/angular-decorators.d.ts +80 -0
- package/dist/builder/scanner/service/angular-decorators.d.ts.map +1 -0
- package/dist/builder/scanner/service/angular-decorators.js +154 -0
- package/dist/builder/scanner/service/doc-tags.d.ts +13 -0
- package/dist/builder/scanner/service/doc-tags.d.ts.map +1 -0
- package/dist/builder/scanner/service/doc-tags.js +97 -0
- package/dist/builder/scanner/service/export-index.d.ts +18 -0
- package/dist/builder/scanner/service/export-index.d.ts.map +1 -0
- package/dist/builder/scanner/service/export-index.js +22 -0
- package/dist/builder/scanner/service/member.extractor.d.ts +65 -0
- package/dist/builder/scanner/service/member.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/service/member.extractor.js +216 -0
- package/dist/builder/scanner/service/pipe-api.extractor.d.ts +12 -0
- package/dist/builder/scanner/service/pipe-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/service/pipe-api.extractor.js +72 -0
- package/dist/builder/scanner/service/service-api.extractor.d.ts +14 -0
- package/dist/builder/scanner/service/service-api.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/service/service-api.extractor.js +119 -0
- package/dist/builder/scanner/service/setup.reader.d.ts +26 -0
- package/dist/builder/scanner/service/setup.reader.d.ts.map +1 -0
- package/dist/builder/scanner/service/setup.reader.js +89 -0
- package/dist/builder/scanner/service/type-collector.d.ts +23 -0
- package/dist/builder/scanner/service/type-collector.d.ts.map +1 -0
- package/dist/builder/scanner/service/type-collector.js +210 -0
- package/dist/builder/scanner/service.scanner.d.ts +26 -0
- package/dist/builder/scanner/service.scanner.d.ts.map +1 -0
- package/dist/builder/scanner/service.scanner.js +61 -0
- package/dist/builder/scanner/showcase-diagnostics.d.ts +60 -1
- package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -1
- package/dist/builder/scanner/showcase-diagnostics.js +114 -1
- package/dist/builder/shared/prism-pipeline.d.ts +6 -0
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
- package/dist/builder/shared/prism-pipeline.js +43 -5
- package/dist/decorator/index.d.ts +1 -1
- package/dist/decorator/index.d.ts.map +1 -1
- package/dist/decorator/showcase.types.d.ts +79 -9
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +6 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +4 -0
- package/dist/plugin/pipe.types.d.ts +36 -0
- package/dist/plugin/pipe.types.d.ts.map +1 -0
- package/dist/plugin/pipe.types.js +1 -0
- package/dist/plugin/plugin.types.d.ts +140 -3
- package/dist/plugin/plugin.types.d.ts.map +1 -1
- package/dist/plugin/service.types.d.ts +124 -0
- package/dist/plugin/service.types.d.ts.map +1 -0
- package/dist/plugin/service.types.js +1 -0
- package/dist/plugin/status.d.ts +27 -0
- package/dist/plugin/status.d.ts.map +1 -0
- package/dist/plugin/status.js +26 -0
- package/dist/shared/composition.d.ts +30 -0
- package/dist/shared/composition.d.ts.map +1 -0
- package/dist/shared/composition.js +29 -0
- package/dist/shared/pseudo-state.type.d.ts +2 -1
- package/dist/shared/pseudo-state.type.d.ts.map +1 -1
- package/dist/shared/void-elements.d.ts +3 -0
- package/dist/shared/void-elements.d.ts.map +1 -0
- package/dist/shared/void-elements.js +2 -0
- package/package.json +1 -1
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
import type { StatusTone } from '../../../plugin/status.js';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* The a11y score as a ring, drawn in the status tone of the grade rather than
|
|
5
|
+
* the brand gradient: a rated value takes its verdict's colour everywhere. The
|
|
6
|
+
* figure itself is set by the metric card around it.
|
|
7
|
+
*/
|
|
2
8
|
export declare class A11yScoreComponent {
|
|
3
9
|
readonly score: import("@angular/core").InputSignal<number>;
|
|
4
|
-
readonly
|
|
5
|
-
protected readonly gradientId: string;
|
|
10
|
+
readonly tone: import("@angular/core").InputSignal<StatusTone>;
|
|
6
11
|
protected readonly R = 54;
|
|
7
12
|
protected readonly CIRC: number;
|
|
8
13
|
protected readonly dashOffset: import("@angular/core").Signal<number>;
|
|
9
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<A11yScoreComponent, never>;
|
|
10
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<A11yScoreComponent, "prism-a11y-score", never, { "score": { "alias": "score"; "required": true; "isSignal": true; }; "
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<A11yScoreComponent, "prism-a11y-score", never, { "score": { "alias": "score"; "required": true; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
11
16
|
}
|
|
12
17
|
//# sourceMappingURL=a11y-score.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-score.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-score.component.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"a11y-score.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-score.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;;AAK5D;;;;GAIG;AACH,qBAQa,kBAAkB;IAC3B,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,IAAI,kDAA2B;IAExC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAK;IACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAiB;IAExC,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAAoG;yCAPxH,kBAAkB;2CAAlB,kBAAkB;CAQ9B"}
|
|
@@ -1,54 +1,38 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
function A11yScoreComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
4
|
-
i0.ɵɵdomElementStart(0, "div", 7)(1, "div", 8);
|
|
5
|
-
i0.ɵɵtext(2);
|
|
6
|
-
i0.ɵɵdomElementEnd();
|
|
7
|
-
i0.ɵɵdomElementStart(3, "div", 9);
|
|
8
|
-
i0.ɵɵtext(4, "/ 100");
|
|
9
|
-
i0.ɵɵdomElementEnd()();
|
|
10
|
-
} if (rf & 2) {
|
|
11
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
12
|
-
i0.ɵɵadvance(2);
|
|
13
|
-
i0.ɵɵtextInterpolate(ctx_r0.score());
|
|
14
|
-
} }
|
|
15
3
|
const R = 54;
|
|
16
4
|
const CIRCUMFERENCE = 2 * Math.PI * R;
|
|
17
|
-
|
|
5
|
+
/**
|
|
6
|
+
* The a11y score as a ring, drawn in the status tone of the grade rather than
|
|
7
|
+
* the brand gradient: a rated value takes its verdict's colour everywhere. The
|
|
8
|
+
* figure itself is set by the metric card around it.
|
|
9
|
+
*/
|
|
18
10
|
export class A11yScoreComponent {
|
|
19
11
|
score = input.required(/* @ts-ignore */
|
|
20
12
|
...(ngDevMode ? [{ debugName: "score" }] : /* istanbul ignore next */ []));
|
|
21
|
-
|
|
22
|
-
...(ngDevMode ? [{ debugName: "
|
|
23
|
-
gradientId = `prism-sg-${nextId++}`;
|
|
13
|
+
tone = input('ok', /* @ts-ignore */
|
|
14
|
+
...(ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []));
|
|
24
15
|
R = R;
|
|
25
16
|
CIRC = CIRCUMFERENCE;
|
|
26
|
-
dashOffset = computed(() => CIRCUMFERENCE - (this.score() / 100) * CIRCUMFERENCE, /* @ts-ignore */
|
|
17
|
+
dashOffset = computed(() => CIRCUMFERENCE - (Math.max(0, Math.min(100, this.score())) / 100) * CIRCUMFERENCE, /* @ts-ignore */
|
|
27
18
|
...(ngDevMode ? [{ debugName: "dashOffset" }] : /* istanbul ignore next */ []));
|
|
28
19
|
static ɵfac = function A11yScoreComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || A11yScoreComponent)(); };
|
|
29
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yScoreComponent, selectors: [["prism-a11y-score"]],
|
|
30
|
-
i0.ɵɵ
|
|
20
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yScoreComponent, selectors: [["prism-a11y-score"]], hostAttrs: ["aria-hidden", "true"], hostVars: 1, hostBindings: function A11yScoreComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
21
|
+
i0.ɵɵattribute("data-tone", ctx.tone());
|
|
22
|
+
} }, inputs: { score: [1, "score"], tone: [1, "tone"] }, decls: 3, vars: 4, consts: [["viewBox", "0 0 128 128"], ["cx", "64", "cy", "64", 1, "track"], ["cx", "64", "cy", "64", 1, "fill"]], template: function A11yScoreComponent_Template(rf, ctx) { if (rf & 1) {
|
|
31
23
|
i0.ɵɵnamespaceSVG();
|
|
32
|
-
i0.ɵɵdomElementStart(
|
|
33
|
-
i0.ɵɵdomElement(
|
|
34
|
-
i0.ɵɵdomElementEnd()();
|
|
35
|
-
i0.ɵɵdomElement(6, "circle", 5)(7, "circle", 6);
|
|
36
|
-
i0.ɵɵdomElementEnd();
|
|
37
|
-
i0.ɵɵconditionalCreate(8, A11yScoreComponent_Conditional_8_Template, 5, 1, "div", 7);
|
|
24
|
+
i0.ɵɵdomElementStart(0, "svg", 0);
|
|
25
|
+
i0.ɵɵdomElement(1, "circle", 1)(2, "circle", 2);
|
|
38
26
|
i0.ɵɵdomElementEnd();
|
|
39
27
|
} if (rf & 2) {
|
|
40
|
-
i0.ɵɵadvance(3);
|
|
41
|
-
i0.ɵɵdomProperty("id", ctx.gradientId);
|
|
42
|
-
i0.ɵɵadvance(3);
|
|
43
|
-
i0.ɵɵattribute("r", ctx.R);
|
|
44
28
|
i0.ɵɵadvance();
|
|
45
|
-
i0.ɵɵattribute("r", ctx.R)
|
|
29
|
+
i0.ɵɵattribute("r", ctx.R);
|
|
46
30
|
i0.ɵɵadvance();
|
|
47
|
-
i0.ɵɵ
|
|
48
|
-
} }, styles: ["[_nghost-%COMP%] {\n
|
|
31
|
+
i0.ɵɵattribute("r", ctx.R)("stroke-dasharray", ctx.CIRC)("stroke-dashoffset", ctx.dashOffset());
|
|
32
|
+
} }, styles: ["[_nghost-%COMP%] {\n --%NS%prism-score-tone: var(--%NS%prism-success);\n\n display: inline-flex;\n flex: none;\n width: 40px;\n height: 40px;\n}\n\n[data-tone='warn'][_nghost-%COMP%] {\n --%NS%prism-score-tone: var(--%NS%prism-warn);\n}\n\n[data-tone='danger'][_nghost-%COMP%] {\n --%NS%prism-score-tone: var(--%NS%prism-danger);\n}\n\nsvg[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\ncircle[_ngcontent-%COMP%] {\n fill: none;\n stroke-width: 14;\n}\n\n.track[_ngcontent-%COMP%] {\n stroke: var(--%NS%prism-input-bg);\n}\n\n.fill[_ngcontent-%COMP%] {\n stroke: var(--%NS%prism-score-tone);\n stroke-linecap: round;\n transition: stroke-dashoffset 0.5s ease;\n}"] });
|
|
49
33
|
}
|
|
50
34
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yScoreComponent, [{
|
|
51
35
|
type: Component,
|
|
52
|
-
args: [{ selector: 'prism-a11y-score', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
53
|
-
}], null, { score: [{ type: i0.Input, args: [{ isSignal: true, alias: "score", required: true }] }],
|
|
54
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yScoreComponent, { className: "A11yScoreComponent", filePath: "app/panels/a11y/a11y-score.component.ts", lineNumber:
|
|
36
|
+
args: [{ selector: 'prism-a11y-score', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: { '[attr.data-tone]': 'tone()', 'aria-hidden': 'true' }, template: "<svg viewBox=\"0 0 128 128\">\n <circle\n class=\"track\"\n cx=\"64\"\n cy=\"64\"\n [attr.r]=\"R\" />\n <circle\n class=\"fill\"\n cx=\"64\"\n cy=\"64\"\n [attr.r]=\"R\"\n [attr.stroke-dasharray]=\"CIRC\"\n [attr.stroke-dashoffset]=\"dashOffset()\" />\n</svg>\n", styles: [":host {\n --prism-score-tone: var(--prism-success);\n\n display: inline-flex;\n flex: none;\n width: 40px;\n height: 40px;\n}\n\n:host([data-tone='warn']) {\n --prism-score-tone: var(--prism-warn);\n}\n\n:host([data-tone='danger']) {\n --prism-score-tone: var(--prism-danger);\n}\n\nsvg {\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\ncircle {\n fill: none;\n stroke-width: 14;\n}\n\n.track {\n stroke: var(--prism-input-bg);\n}\n\n.fill {\n stroke: var(--prism-score-tone);\n stroke-linecap: round;\n transition: stroke-dashoffset 0.5s ease;\n}\n"] }]
|
|
37
|
+
}], null, { score: [{ type: i0.Input, args: [{ isSignal: true, alias: "score", required: true }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }] }); })();
|
|
38
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yScoreComponent, { className: "A11yScoreComponent", filePath: "app/panels/a11y/a11y-score.component.ts", lineNumber: 20 }); })();
|
|
@@ -100,10 +100,10 @@ export class A11ySrOverlayComponent {
|
|
|
100
100
|
i0.ɵɵconditionalCreate(0, A11ySrOverlayComponent_Conditional_0_Template, 2, 0);
|
|
101
101
|
} if (rf & 2) {
|
|
102
102
|
i0.ɵɵconditional(ctx.showOverlay() ? 0 : -1);
|
|
103
|
-
} }, styles: ["[_nghost-%COMP%] {\n position: absolute;\n inset: 0;\n z-index: 100;\n overflow: hidden;\n pointer-events: none;\n}\n\n.prism-a11y-sr-ov__focus[_ngcontent-%COMP%] {\n position: absolute;\n background:
|
|
103
|
+
} }, styles: ["[_nghost-%COMP%] {\n position: absolute;\n inset: 0;\n z-index: 100;\n overflow: hidden;\n pointer-events: none;\n}\n\n.prism-a11y-sr-ov__focus[_ngcontent-%COMP%] {\n position: absolute;\n background: color-mix(in srgb, var(--%NS%prism-primary-fill) 8%, transparent);\n border: 2px solid var(--%NS%prism-primary-fill);\n border-radius: 4px;\n box-shadow: 0 0 0 4px color-mix(in srgb, var(--%NS%prism-primary-fill) 12%, transparent);\n}\n\n.prism-a11y-sr-ov__badge[_ngcontent-%COMP%] {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n font-family: var(--%NS%prism-font-sans, system-ui, sans-serif);\n font-size: 9px;\n font-weight: 700;\n color: var(--%NS%prism-on-primary);\n background: var(--%NS%prism-primary-fill);\n border-radius: 9px;\n box-shadow:\n 0 0 0 1.5px var(--%NS%prism-on-primary),\n var(--%NS%prism-shadow-sm);\n}\n\n.prism-a11y-sr-ov__badge--active[_ngcontent-%COMP%] {\n background: var(--%NS%prism-primary-fill-hover);\n box-shadow:\n 0 0 0 2px var(--%NS%prism-on-primary),\n 0 0 0 4px color-mix(in srgb, var(--%NS%prism-primary-fill) 40%, transparent);\n}"] });
|
|
104
104
|
}
|
|
105
105
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11ySrOverlayComponent, [{
|
|
106
106
|
type: Component,
|
|
107
|
-
args: [{ selector: 'prism-a11y-sr-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (showOverlay()) {\n @for (badge of badges(); track badge.index) {\n @if (badge.isActive) {\n <div\n class=\"prism-a11y-sr-ov__focus\"\n [style.left.px]=\"badge.x\"\n [style.top.px]=\"badge.y\"\n [style.width.px]=\"badge.width\"\n [style.height.px]=\"badge.height\"></div>\n }\n <div\n class=\"prism-a11y-sr-ov__badge\"\n [class.prism-a11y-sr-ov__badge--active]=\"badge.isActive\"\n [style.left.px]=\"badge.x - 10\"\n [style.top.px]=\"badge.y - 10\">\n {{ badge.index }}\n </div>\n }\n}\n", styles: [":host {\n position: absolute;\n inset: 0;\n z-index: 100;\n overflow: hidden;\n pointer-events: none;\n}\n\n.prism-a11y-sr-ov__focus {\n position: absolute;\n background:
|
|
107
|
+
args: [{ selector: 'prism-a11y-sr-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (showOverlay()) {\n @for (badge of badges(); track badge.index) {\n @if (badge.isActive) {\n <div\n class=\"prism-a11y-sr-ov__focus\"\n [style.left.px]=\"badge.x\"\n [style.top.px]=\"badge.y\"\n [style.width.px]=\"badge.width\"\n [style.height.px]=\"badge.height\"></div>\n }\n <div\n class=\"prism-a11y-sr-ov__badge\"\n [class.prism-a11y-sr-ov__badge--active]=\"badge.isActive\"\n [style.left.px]=\"badge.x - 10\"\n [style.top.px]=\"badge.y - 10\">\n {{ badge.index }}\n </div>\n }\n}\n", styles: [":host {\n position: absolute;\n inset: 0;\n z-index: 100;\n overflow: hidden;\n pointer-events: none;\n}\n\n.prism-a11y-sr-ov__focus {\n position: absolute;\n background: color-mix(in srgb, var(--prism-primary-fill) 8%, transparent);\n border: 2px solid var(--prism-primary-fill);\n border-radius: 4px;\n box-shadow: 0 0 0 4px color-mix(in srgb, var(--prism-primary-fill) 12%, transparent);\n}\n\n.prism-a11y-sr-ov__badge {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n font-size: 9px;\n font-weight: 700;\n color: var(--prism-on-primary);\n background: var(--prism-primary-fill);\n border-radius: 9px;\n box-shadow:\n 0 0 0 1.5px var(--prism-on-primary),\n var(--prism-shadow-sm);\n}\n\n.prism-a11y-sr-ov__badge--active {\n background: var(--prism-primary-fill-hover);\n box-shadow:\n 0 0 0 2px var(--prism-on-primary),\n 0 0 0 4px color-mix(in srgb, var(--prism-primary-fill) 40%, transparent);\n}\n"] }]
|
|
108
108
|
}], () => [], null); })();
|
|
109
109
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11ySrOverlayComponent, { className: "A11ySrOverlayComponent", filePath: "app/panels/a11y/a11y-sr-overlay.component.ts", lineNumber: 23 }); })();
|
|
@@ -77,10 +77,10 @@ export class A11ySrComponent {
|
|
|
77
77
|
i0.ɵɵconditionalCreate(0, A11ySrComponent_Conditional_0_Template, 2, 0, "div", 0)(1, A11ySrComponent_Conditional_1_Template, 2, 0, "div", 0)(2, A11ySrComponent_Conditional_2_Template, 3, 0, "div", 1);
|
|
78
78
|
} if (rf & 2) {
|
|
79
79
|
i0.ɵɵconditional(!ctx.rendererService.renderedElement() ? 0 : !ctx.announcements().length ? 1 : 2);
|
|
80
|
-
} }, styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n.sr-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--%NS%prism-text-muted);\n}\n\n.sr-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 16px 20px;\n}\n\n.sr-line[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 56px 1fr;\n gap: 12px;\n padding: 10px 12px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 8px;\n}\n\n.sr-step[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 11px;\n font-weight: 600;\n color: var(--%NS%prism-text-
|
|
80
|
+
} }, styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n.sr-empty[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--%NS%prism-text-muted);\n}\n\n.sr-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 16px 20px;\n}\n\n.sr-line[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 56px 1fr;\n gap: 12px;\n padding: 10px 12px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 8px;\n}\n\n.sr-step[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 11px;\n font-weight: 600;\n color: var(--%NS%prism-text-muted);\n}\n\n.sr-text[_ngcontent-%COMP%] {\n font-size: 13px;\n line-height: 1.5;\n color: var(--%NS%prism-text);\n}\n\n.sr-name[_ngcontent-%COMP%] {\n font-style: normal;\n font-weight: 600;\n color: var(--%NS%prism-primary);\n}\n\n.sr-text[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n padding: 1px 5px;\n font-family: var(--%NS%font-mono);\n font-size: 11.5px;\n color: var(--%NS%prism-text-muted);\n background: var(--%NS%prism-input-bg);\n border-radius: var(--%NS%radius-xs);\n}"] });
|
|
81
81
|
}
|
|
82
82
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11ySrComponent, [{
|
|
83
83
|
type: Component,
|
|
84
|
-
args: [{ selector: 'prism-a11y-sr', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!rendererService.renderedElement()) {\n <div class=\"sr-empty\"> Select a component to simulate screen reader output. </div>\n} @else if (!announcements().length) {\n <div class=\"sr-empty\">No announced elements found.</div>\n} @else {\n <div class=\"sr-body\">\n @for (a of announcements(); track a.index) {\n <div class=\"sr-line\">\n <div class=\"sr-step\">VO \u00B7 {{ a.index }}</div>\n <div class=\"sr-text\">\n @if (a.name) {\n \"<span class=\"sr-name\">{{ a.name }}</span\n >\",\n }\n <code>{{ a.role }}</code>\n @if (a.states.length) {\n \u00B7 {{ a.states.join(', ') }}\n }\n </div>\n </div>\n }\n </div>\n}\n", styles: [":host {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n.sr-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--prism-text-muted);\n}\n\n.sr-body {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 16px 20px;\n}\n\n.sr-line {\n display: grid;\n grid-template-columns: 56px 1fr;\n gap: 12px;\n padding: 10px 12px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 8px;\n}\n\n.sr-step {\n font-family: var(--font-mono);\n font-size: 11px;\n font-weight: 600;\n color: var(--prism-text-
|
|
84
|
+
args: [{ selector: 'prism-a11y-sr', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!rendererService.renderedElement()) {\n <div class=\"sr-empty\"> Select a component to simulate screen reader output. </div>\n} @else if (!announcements().length) {\n <div class=\"sr-empty\">No announced elements found.</div>\n} @else {\n <div class=\"sr-body\">\n @for (a of announcements(); track a.index) {\n <div class=\"sr-line\">\n <div class=\"sr-step\">VO \u00B7 {{ a.index }}</div>\n <div class=\"sr-text\">\n @if (a.name) {\n \"<span class=\"sr-name\">{{ a.name }}</span\n >\",\n }\n <code>{{ a.role }}</code>\n @if (a.states.length) {\n \u00B7 {{ a.states.join(', ') }}\n }\n </div>\n </div>\n }\n </div>\n}\n", styles: [":host {\n display: block;\n height: 100%;\n overflow: auto;\n}\n\n.sr-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--prism-text-muted);\n}\n\n.sr-body {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 16px 20px;\n}\n\n.sr-line {\n display: grid;\n grid-template-columns: 56px 1fr;\n gap: 12px;\n padding: 10px 12px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 8px;\n}\n\n.sr-step {\n font-family: var(--font-mono);\n font-size: 11px;\n font-weight: 600;\n color: var(--prism-text-muted);\n}\n\n.sr-text {\n font-size: 13px;\n line-height: 1.5;\n color: var(--prism-text);\n}\n\n.sr-name {\n font-style: normal;\n font-weight: 600;\n color: var(--prism-primary);\n}\n\n.sr-text code {\n padding: 1px 5px;\n font-family: var(--font-mono);\n font-size: 11.5px;\n color: var(--prism-text-muted);\n background: var(--prism-input-bg);\n border-radius: var(--radius-xs);\n}\n"] }]
|
|
85
85
|
}], null, null); })();
|
|
86
86
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11ySrComponent, { className: "A11ySrComponent", filePath: "app/panels/a11y/a11y-sr.component.ts", lineNumber: 12 }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-summary.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-summary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"a11y-summary.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-summary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE1F;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CA2B/H"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { statusFor, thresholdFromTarget } from '../../../plugin/status.js';
|
|
1
2
|
/**
|
|
2
3
|
* A component's standing, derived with the same precedence
|
|
3
4
|
* `checkA11yThresholds` uses library-wide.
|
|
@@ -22,7 +23,13 @@ export function deriveA11ySummary(score, thresholds) {
|
|
|
22
23
|
const label = parts.length > 0 ? `A11y: ${parts.join(', ')}` : `A11y score ${score.score}`;
|
|
23
24
|
return { variant: 'danger', label };
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
+
// The score is graded like every other key figure: ok from the target,
|
|
27
|
+
// warn down to 0.75 of it, critical below that.
|
|
28
|
+
const scoreTone = statusFor(score.score, thresholdFromTarget(thresholds.score));
|
|
29
|
+
if (scoreTone === 'danger') {
|
|
30
|
+
return { variant: 'danger', label: `A11y score ${score.score}` };
|
|
31
|
+
}
|
|
32
|
+
if (score.moderate > thresholds.moderate || scoreTone === 'warn') {
|
|
26
33
|
return { variant: 'warn', label: `A11y score ${score.score}` };
|
|
27
34
|
}
|
|
28
35
|
return { variant: 'ok', label: `A11y score ${score.score}` };
|
|
@@ -133,11 +133,11 @@ export class A11yTreeNodeComponent {
|
|
|
133
133
|
i0.ɵɵrepeater(ctx.stateEntries());
|
|
134
134
|
i0.ɵɵadvance(2);
|
|
135
135
|
i0.ɵɵconditional(ctx.expanded() && ctx.node().children.length ? 9 : -1);
|
|
136
|
-
} }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.aria-tree-line[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 2px 0;\n font-family: var(--%NS%font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--%NS%prism-text-2);\n}\n\n.aria-tree-line--hidden[_ngcontent-%COMP%] {\n opacity: 0.4;\n}\n\n.indent[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--%NS%prism-text-ghost);\n text-align: right;\n white-space: pre;\n user-select: none;\n opacity: 0.5;\n}\n\n.tree-toggle[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 12px;\n padding: 0;\n font-size: 10px;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--%NS%prism-primary);\n}\n\n.name[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text);\n}\n\n.attr[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-
|
|
136
|
+
} }, dependencies: [A11yTreeNodeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.aria-tree-line[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 2px 0;\n font-family: var(--%NS%font-mono);\n font-size: 12.5px;\n line-height: 1.8;\n color: var(--%NS%prism-text-2);\n}\n\n.aria-tree-line--hidden[_ngcontent-%COMP%] {\n opacity: 0.4;\n}\n\n.indent[_ngcontent-%COMP%] {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--%NS%prism-text-ghost);\n text-align: right;\n white-space: pre;\n user-select: none;\n opacity: 0.5;\n}\n\n.tree-toggle[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 12px;\n padding: 0;\n font-size: 10px;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--%NS%prism-primary);\n}\n\n.name[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text);\n}\n\n.attr[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text-muted);\n}"] });
|
|
137
137
|
}
|
|
138
138
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yTreeNodeComponent, [{
|
|
139
139
|
type: Component,
|
|
140
|
-
args: [{ selector: 'prism-a11y-tree-node', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"aria-tree-line\"\n [class.aria-tree-line--hidden]=\"node().hidden\">\n <span\n class=\"indent\"\n [style.width.px]=\"depth() * 20\">\n @if (depth() > 0) {\n {{ isLast() ? '\u2514\u2500' : '\u251C\u2500' }}\n }\n </span>\n @if (node().children.length) {\n <button\n class=\"tree-toggle\"\n (click)=\"toggleExpanded()\">\n {{ expanded() ? '\u25BE' : '\u25B8' }}\n </button>\n }\n <span class=\"role\">{{ node().role }}</span>\n @if (node().name) {\n <span class=\"name\">\"{{ node().name }}\"</span>\n }\n @for (entry of stateEntries(); track entry.key) {\n <span class=\"attr\">[{{ entry.label }}]</span>\n }\n</div>\n@if (expanded() && node().children.length) {\n @for (child of node().children; track child.element; let last = $last) {\n <prism-a11y-tree-node\n [node]=\"child\"\n [depth]=\"depth() + 1\"\n [isLast]=\"last\" />\n }\n}\n", styles: [":host {\n display: block;\n}\n\n.aria-tree-line {\n display: flex;\n gap: 8px;\n align-items: center;\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\n.aria-tree-line--hidden {\n opacity: 0.4;\n}\n\n.indent {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--prism-text-ghost);\n text-align: right;\n white-space: pre;\n user-select: none;\n opacity: 0.5;\n}\n\n.tree-toggle {\n flex-shrink: 0;\n width: 12px;\n padding: 0;\n font-size: 10px;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.role {\n font-weight: 600;\n color: var(--prism-primary);\n}\n\n.name {\n color: var(--prism-text);\n}\n\n.attr {\n color: var(--prism-text-
|
|
140
|
+
args: [{ selector: 'prism-a11y-tree-node', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"aria-tree-line\"\n [class.aria-tree-line--hidden]=\"node().hidden\">\n <span\n class=\"indent\"\n [style.width.px]=\"depth() * 20\">\n @if (depth() > 0) {\n {{ isLast() ? '\u2514\u2500' : '\u251C\u2500' }}\n }\n </span>\n @if (node().children.length) {\n <button\n class=\"tree-toggle\"\n (click)=\"toggleExpanded()\">\n {{ expanded() ? '\u25BE' : '\u25B8' }}\n </button>\n }\n <span class=\"role\">{{ node().role }}</span>\n @if (node().name) {\n <span class=\"name\">\"{{ node().name }}\"</span>\n }\n @for (entry of stateEntries(); track entry.key) {\n <span class=\"attr\">[{{ entry.label }}]</span>\n }\n</div>\n@if (expanded() && node().children.length) {\n @for (child of node().children; track child.element; let last = $last) {\n <prism-a11y-tree-node\n [node]=\"child\"\n [depth]=\"depth() + 1\"\n [isLast]=\"last\" />\n }\n}\n", styles: [":host {\n display: block;\n}\n\n.aria-tree-line {\n display: flex;\n gap: 8px;\n align-items: center;\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\n.aria-tree-line--hidden {\n opacity: 0.4;\n}\n\n.indent {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--prism-text-ghost);\n text-align: right;\n white-space: pre;\n user-select: none;\n opacity: 0.5;\n}\n\n.tree-toggle {\n flex-shrink: 0;\n width: 12px;\n padding: 0;\n font-size: 10px;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.role {\n font-weight: 600;\n color: var(--prism-primary);\n}\n\n.name {\n color: var(--prism-text);\n}\n\n.attr {\n color: var(--prism-text-muted);\n}\n"] }]
|
|
141
141
|
}], () => [], { 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 }] }] }); })();
|
|
142
142
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yTreeNodeComponent, { className: "A11yTreeNodeComponent", filePath: "app/panels/a11y/a11y-tree.component.ts", lineNumber: 13 }); })();
|
|
143
143
|
export class A11yTreeComponent {
|
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
import { A11yAuditService } from './a11y-audit.service.js';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* The Violations view: the score as a small metric card with a ring in its
|
|
5
|
+
* grade's tone, the violations as list rows, most severe first, and the passed
|
|
6
|
+
* checks folded away below them.
|
|
7
|
+
*/
|
|
3
8
|
export declare class A11yViolationsComponent {
|
|
4
9
|
protected readonly auditService: A11yAuditService;
|
|
10
|
+
private readonly manifest;
|
|
11
|
+
private readonly config;
|
|
5
12
|
protected readonly scoreResult: import("@angular/core").Signal<import("./a11y.types.js").A11yScoreResult | null>;
|
|
6
|
-
|
|
7
|
-
|
|
13
|
+
private readonly thresholds;
|
|
14
|
+
/** The score's grade, by the rule every other a11y surface uses. */
|
|
15
|
+
protected readonly grade: import("@angular/core").Signal<"ok" | "warn" | "danger">;
|
|
16
|
+
protected readonly badgeTone: import("@angular/core").Signal<import("../../shared/badge.types.js").BadgeTone>;
|
|
17
|
+
protected readonly scoreTitle: import("@angular/core").Signal<string>;
|
|
18
|
+
protected readonly violations: import("@angular/core").Signal<{
|
|
19
|
+
badge: import("./severity.js").SeverityBadge;
|
|
20
|
+
description: string;
|
|
21
|
+
help: string;
|
|
22
|
+
helpUrl: string;
|
|
23
|
+
id: string;
|
|
24
|
+
impact?: import("axe-core").ImpactValue;
|
|
25
|
+
tags: import("axe-core").TagValue[];
|
|
26
|
+
nodes: import("axe-core").NodeResult[];
|
|
27
|
+
}[]>;
|
|
28
|
+
protected readonly passes: import("@angular/core").Signal<import("axe-core").Result[]>;
|
|
8
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<A11yViolationsComponent, never>;
|
|
9
30
|
static ɵcmp: i0.ɵɵComponentDeclaration<A11yViolationsComponent, "prism-a11y-violations", never, {}, {}, never, never, true, never>;
|
|
10
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-violations.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-violations.component.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"a11y-violations.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-violations.component.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;;AAc3D;;;;GAIG;AACH,qBAQa,uBAAuB;IAChC,SAAS,CAAC,QAAQ,CAAC,YAAY,mBAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,SAAS,CAAC,QAAQ,CAAC,WAAW,mFAAmD;IAEjF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAIxB;IAEH,oEAAoE;IACpE,SAAS,CAAC,QAAQ,CAAC,KAAK,2DAIrB;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,kFAA+C;IAE3E,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAQ1B;IAEH,SAAS,CAAC,QAAQ,CAAC,UAAU;;;;;;;;;SAO1B;IAEH,SAAS,CAAC,QAAQ,CAAC,MAAM,8DAA6D;yCAzC7E,uBAAuB;2CAAvB,uBAAuB;CA0CnC"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
|
|
2
|
+
import { toneForStatus } from '../../shared/badge.types.js';
|
|
3
|
+
import { PrismBadgeComponent } from '../../shared/prism-badge.component.js';
|
|
4
|
+
import { PrismListRowComponent } from '../../shared/prism-list-row.component.js';
|
|
5
|
+
import { PrismMetricCardComponent } from '../../shared/prism-metric-card.component.js';
|
|
6
|
+
import { PRISM_CONFIG, PRISM_MANIFEST } from '../../tokens/prism-tokens.js';
|
|
2
7
|
import { A11yAuditService } from './a11y-audit.service.js';
|
|
3
8
|
import { A11yScoreComponent } from './a11y-score.component.js';
|
|
9
|
+
import { deriveA11ySummary } from './a11y-summary.js';
|
|
10
|
+
import { resolveA11yThresholds } from './a11y-thresholds.js';
|
|
11
|
+
import { severityBadge } from './severity.js';
|
|
4
12
|
import * as i0 from "@angular/core";
|
|
5
|
-
const _forTrack0 = ($index, $item) => $item.id
|
|
13
|
+
const _forTrack0 = ($index, $item) => $item.id;
|
|
6
14
|
function A11yViolationsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
7
15
|
i0.ɵɵelementStart(0, "div", 0);
|
|
8
16
|
i0.ɵɵtext(1);
|
|
@@ -12,100 +20,89 @@ function A11yViolationsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
12
20
|
i0.ɵɵadvance();
|
|
13
21
|
i0.ɵɵtextInterpolate1(" Audit failed: ", ctx_r0.auditService.error(), " ");
|
|
14
22
|
} }
|
|
15
|
-
function
|
|
16
|
-
i0.ɵɵelementStart(0, "
|
|
17
|
-
i0.ɵɵelement(1, "
|
|
18
|
-
i0.ɵɵ
|
|
23
|
+
function A11yViolationsComponent_Conditional_1_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelementStart(0, "prism-list-row");
|
|
25
|
+
i0.ɵɵelement(1, "prism-badge", 8);
|
|
26
|
+
i0.ɵɵelementStart(2, "span", 9);
|
|
27
|
+
i0.ɵɵtext(3);
|
|
19
28
|
i0.ɵɵelementEnd();
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
i0.ɵɵadvance(2);
|
|
23
|
-
i0.ɵɵtextInterpolate1("", ctx_r0.scoreResult().critical, " critical");
|
|
24
|
-
} }
|
|
25
|
-
function A11yViolationsComponent_Conditional_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
-
i0.ɵɵelementStart(0, "span");
|
|
27
|
-
i0.ɵɵelement(1, "i", 12);
|
|
28
|
-
i0.ɵɵtext(2);
|
|
29
|
+
i0.ɵɵelementStart(4, "span", 10);
|
|
30
|
+
i0.ɵɵtext(5);
|
|
29
31
|
i0.ɵɵelementEnd();
|
|
32
|
+
i0.ɵɵelementStart(6, "span", 11);
|
|
33
|
+
i0.ɵɵtext(7);
|
|
34
|
+
i0.ɵɵelementEnd()();
|
|
30
35
|
} if (rf & 2) {
|
|
31
|
-
const
|
|
36
|
+
const item_r2 = ctx.$implicit;
|
|
37
|
+
i0.ɵɵadvance();
|
|
38
|
+
i0.ɵɵproperty("tone", item_r2.badge.tone)("variant", item_r2.badge.variant)("label", item_r2.badge.label);
|
|
39
|
+
i0.ɵɵadvance(2);
|
|
40
|
+
i0.ɵɵtextInterpolate(item_r2.help || item_r2.description);
|
|
32
41
|
i0.ɵɵadvance(2);
|
|
33
|
-
i0.ɵɵ
|
|
42
|
+
i0.ɵɵtextInterpolate(item_r2.description);
|
|
43
|
+
i0.ɵɵadvance(2);
|
|
44
|
+
i0.ɵɵtextInterpolate(item_r2.id);
|
|
34
45
|
} }
|
|
35
|
-
function
|
|
36
|
-
i0.ɵɵelementStart(0, "
|
|
37
|
-
i0.ɵɵtext(1);
|
|
46
|
+
function A11yViolationsComponent_Conditional_1_ForEmpty_6_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "div", 2);
|
|
48
|
+
i0.ɵɵtext(1, "No violations.");
|
|
38
49
|
i0.ɵɵelementEnd();
|
|
50
|
+
} }
|
|
51
|
+
function A11yViolationsComponent_Conditional_1_ForEmpty_6_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
i0.ɵɵconditionalCreate(0, A11yViolationsComponent_Conditional_1_ForEmpty_6_Conditional_0_Template, 2, 0, "div", 2);
|
|
39
53
|
} if (rf & 2) {
|
|
40
|
-
const
|
|
41
|
-
i0.ɵɵ
|
|
42
|
-
i0.ɵɵtextInterpolate(item_r2.help);
|
|
54
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
55
|
+
i0.ɵɵconditional(!ctx_r0.auditService.running() ? 0 : -1);
|
|
43
56
|
} }
|
|
44
|
-
function
|
|
45
|
-
i0.ɵɵelementStart(0, "
|
|
46
|
-
i0.ɵɵ
|
|
57
|
+
function A11yViolationsComponent_Conditional_1_Conditional_7_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
i0.ɵɵelementStart(0, "prism-list-row");
|
|
59
|
+
i0.ɵɵelement(1, "prism-badge", 13);
|
|
60
|
+
i0.ɵɵelementStart(2, "span", 9);
|
|
61
|
+
i0.ɵɵtext(3);
|
|
47
62
|
i0.ɵɵelementEnd();
|
|
48
|
-
i0.ɵɵelementStart(
|
|
63
|
+
i0.ɵɵelementStart(4, "span", 11);
|
|
49
64
|
i0.ɵɵtext(5);
|
|
50
|
-
i0.ɵɵelementEnd();
|
|
51
|
-
i0.ɵɵconditionalCreate(6, A11yViolationsComponent_Conditional_1_For_13_Conditional_6_Template, 2, 1, "span");
|
|
52
|
-
i0.ɵɵelementEnd();
|
|
53
|
-
i0.ɵɵelementStart(7, "span", 16);
|
|
54
|
-
i0.ɵɵtext(8);
|
|
55
65
|
i0.ɵɵelementEnd()();
|
|
56
66
|
} if (rf & 2) {
|
|
57
|
-
const
|
|
58
|
-
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
59
|
-
i0.ɵɵstyleProp("--%NS%sev-color", ctx_r0.sevColor(item_r2.impact));
|
|
60
|
-
i0.ɵɵadvance(2);
|
|
61
|
-
i0.ɵɵtextInterpolate(item_r2.impact ?? "pass");
|
|
67
|
+
const pass_r3 = ctx.$implicit;
|
|
62
68
|
i0.ɵɵadvance(3);
|
|
63
|
-
i0.ɵɵtextInterpolate(
|
|
64
|
-
i0.ɵɵadvance();
|
|
65
|
-
i0.ɵɵconditional(item_r2.help ? 6 : -1);
|
|
69
|
+
i0.ɵɵtextInterpolate(pass_r3.help || pass_r3.description);
|
|
66
70
|
i0.ɵɵadvance(2);
|
|
67
|
-
i0.ɵɵtextInterpolate(
|
|
71
|
+
i0.ɵɵtextInterpolate(pass_r3.id);
|
|
68
72
|
} }
|
|
69
|
-
function
|
|
70
|
-
i0.ɵɵelementStart(0, "
|
|
71
|
-
i0.ɵɵtext(
|
|
73
|
+
function A11yViolationsComponent_Conditional_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
i0.ɵɵelementStart(0, "details", 7)(1, "summary");
|
|
75
|
+
i0.ɵɵtext(2);
|
|
72
76
|
i0.ɵɵelementEnd();
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
i0.ɵɵ
|
|
77
|
+
i0.ɵɵelementStart(3, "div", 12);
|
|
78
|
+
i0.ɵɵrepeaterCreate(4, A11yViolationsComponent_Conditional_1_Conditional_7_For_5_Template, 6, 2, "prism-list-row", null, _forTrack0);
|
|
79
|
+
i0.ɵɵelementEnd()();
|
|
76
80
|
} if (rf & 2) {
|
|
77
81
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
78
|
-
i0.ɵɵ
|
|
82
|
+
i0.ɵɵadvance(2);
|
|
83
|
+
i0.ɵɵtextInterpolate2("", ctx_r0.passes().length, " passed ", ctx_r0.passes().length === 1 ? "check" : "checks");
|
|
84
|
+
i0.ɵɵadvance(2);
|
|
85
|
+
i0.ɵɵrepeater(ctx_r0.passes());
|
|
79
86
|
} }
|
|
80
87
|
function A11yViolationsComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
-
i0.ɵɵelementStart(0, "div", 3)(1, "
|
|
88
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "prism-metric-card", 4);
|
|
82
89
|
i0.ɵɵelement(2, "prism-a11y-score", 5);
|
|
83
|
-
i0.ɵɵelementStart(3, "div", 6);
|
|
84
|
-
i0.ɵɵtext(4, "axe-core audit");
|
|
85
90
|
i0.ɵɵelementEnd();
|
|
86
|
-
i0.ɵɵelementStart(
|
|
87
|
-
i0.ɵɵ
|
|
88
|
-
i0.ɵɵconditionalCreate(7, A11yViolationsComponent_Conditional_1_Conditional_7_Template,
|
|
89
|
-
i0.ɵɵelementStart(8, "span");
|
|
90
|
-
i0.ɵɵelement(9, "i", 8);
|
|
91
|
-
i0.ɵɵtext(10);
|
|
92
|
-
i0.ɵɵelementEnd()()();
|
|
93
|
-
i0.ɵɵelementStart(11, "div", 9);
|
|
94
|
-
i0.ɵɵrepeaterCreate(12, A11yViolationsComponent_Conditional_1_For_13_Template, 9, 6, "div", 10, _forTrack0, false, A11yViolationsComponent_Conditional_1_ForEmpty_14_Template, 1, 1);
|
|
91
|
+
i0.ɵɵelementStart(3, "div", 6);
|
|
92
|
+
i0.ɵɵrepeaterCreate(4, A11yViolationsComponent_Conditional_1_For_5_Template, 8, 6, "prism-list-row", null, _forTrack0, false, A11yViolationsComponent_Conditional_1_ForEmpty_6_Template, 1, 1);
|
|
93
|
+
i0.ɵɵconditionalCreate(7, A11yViolationsComponent_Conditional_1_Conditional_7_Template, 6, 2, "details", 7);
|
|
95
94
|
i0.ɵɵelementEnd()();
|
|
96
95
|
} if (rf & 2) {
|
|
97
96
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
98
97
|
i0.ɵɵclassProp("a11y-body--loading", ctx_r0.auditService.running());
|
|
99
|
-
i0.ɵɵadvance(2);
|
|
100
|
-
i0.ɵɵproperty("score", ctx_r0.scoreResult()?.score ?? 0);
|
|
101
|
-
i0.ɵɵadvance(4);
|
|
102
|
-
i0.ɵɵconditional(ctx_r0.scoreResult()?.critical ? 6 : -1);
|
|
103
98
|
i0.ɵɵadvance();
|
|
104
|
-
i0.ɵɵ
|
|
105
|
-
i0.ɵɵadvance(
|
|
106
|
-
i0.ɵɵ
|
|
99
|
+
i0.ɵɵproperty("value", "" + (ctx_r0.scoreResult()?.score ?? 0))("tone", ctx_r0.badgeTone())("title", ctx_r0.scoreTitle());
|
|
100
|
+
i0.ɵɵadvance();
|
|
101
|
+
i0.ɵɵproperty("score", ctx_r0.scoreResult()?.score ?? 0)("tone", ctx_r0.grade());
|
|
107
102
|
i0.ɵɵadvance(2);
|
|
108
|
-
i0.ɵɵrepeater(ctx_r0.
|
|
103
|
+
i0.ɵɵrepeater(ctx_r0.violations());
|
|
104
|
+
i0.ɵɵadvance(3);
|
|
105
|
+
i0.ɵɵconditional(ctx_r0.passes().length > 0 ? 7 : -1);
|
|
109
106
|
} }
|
|
110
107
|
function A11yViolationsComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
111
108
|
i0.ɵɵelementStart(0, "div", 2);
|
|
@@ -118,40 +115,58 @@ const IMPACT_ORDER = {
|
|
|
118
115
|
moderate: 2,
|
|
119
116
|
minor: 3
|
|
120
117
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
};
|
|
127
|
-
function sevColor(impact) {
|
|
128
|
-
return IMPACT_COLOR[impact ?? ''] ?? 'var(--prism-success)';
|
|
129
|
-
}
|
|
118
|
+
/**
|
|
119
|
+
* The Violations view: the score as a small metric card with a ring in its
|
|
120
|
+
* grade's tone, the violations as list rows, most severe first, and the passed
|
|
121
|
+
* checks folded away below them.
|
|
122
|
+
*/
|
|
130
123
|
export class A11yViolationsComponent {
|
|
131
124
|
auditService = inject(A11yAuditService);
|
|
125
|
+
manifest = inject(PRISM_MANIFEST);
|
|
126
|
+
config = inject(PRISM_CONFIG);
|
|
132
127
|
scoreResult = computed(() => this.auditService.scoreResult(), /* @ts-ignore */
|
|
133
128
|
...(ngDevMode ? [{ debugName: "scoreResult" }] : /* istanbul ignore next */ []));
|
|
134
|
-
|
|
129
|
+
thresholds = computed(() => {
|
|
130
|
+
const meta = this.manifest.meta?.['a11y'];
|
|
131
|
+
return resolveA11yThresholds({ ...meta?.thresholds, ...this.config.a11y?.thresholds });
|
|
132
|
+
}, /* @ts-ignore */
|
|
133
|
+
...(ngDevMode ? [{ debugName: "thresholds" }] : /* istanbul ignore next */ []));
|
|
134
|
+
/** The score's grade, by the rule every other a11y surface uses. */
|
|
135
|
+
grade = computed(() => {
|
|
136
|
+
const result = this.scoreResult();
|
|
137
|
+
return result ? deriveA11ySummary(result, this.thresholds()).variant : 'ok';
|
|
138
|
+
}, /* @ts-ignore */
|
|
139
|
+
...(ngDevMode ? [{ debugName: "grade" }] : /* istanbul ignore next */ []));
|
|
140
|
+
badgeTone = computed(() => toneForStatus(this.grade()), /* @ts-ignore */
|
|
141
|
+
...(ngDevMode ? [{ debugName: "badgeTone" }] : /* istanbul ignore next */ []));
|
|
142
|
+
scoreTitle = computed(() => {
|
|
143
|
+
const r = this.scoreResult();
|
|
144
|
+
if (!r)
|
|
145
|
+
return '';
|
|
146
|
+
return (`axe-core audit · target ${this.thresholds().score}\n` +
|
|
147
|
+
`${r.critical} critical · ${r.serious} serious · ${r.moderate} moderate · ${r.minor} minor · ${r.passes} passed`);
|
|
148
|
+
}, /* @ts-ignore */
|
|
149
|
+
...(ngDevMode ? [{ debugName: "scoreTitle" }] : /* istanbul ignore next */ []));
|
|
150
|
+
violations = computed(() => {
|
|
135
151
|
const results = this.auditService.results();
|
|
136
152
|
if (!results)
|
|
137
153
|
return [];
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
154
|
+
return [...results.violations]
|
|
155
|
+
.sort((a, b) => (IMPACT_ORDER[a.impact ?? ''] ?? 4) - (IMPACT_ORDER[b.impact ?? ''] ?? 4))
|
|
156
|
+
.map((v) => ({ ...v, badge: severityBadge(v.impact) }));
|
|
141
157
|
}, /* @ts-ignore */
|
|
142
|
-
...(ngDevMode ? [{ debugName: "
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
158
|
+
...(ngDevMode ? [{ debugName: "violations" }] : /* istanbul ignore next */ []));
|
|
159
|
+
passes = computed(() => this.auditService.results()?.passes ?? [], /* @ts-ignore */
|
|
160
|
+
...(ngDevMode ? [{ debugName: "passes" }] : /* istanbul ignore next */ []));
|
|
146
161
|
static ɵfac = function A11yViolationsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || A11yViolationsComponent)(); };
|
|
147
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yViolationsComponent, selectors: [["prism-a11y-violations"]], decls: 3, vars: 1, consts: [[1, "a11y-status", "a11y-status--error"], [1, "a11y-body", 3, "a11y-body--loading"], [1, "a11y-status"], [1, "a11y-body"], [1, "score-
|
|
148
|
-
i0.ɵɵconditionalCreate(0, A11yViolationsComponent_Conditional_0_Template, 2, 1, "div", 0)(1, A11yViolationsComponent_Conditional_1_Template,
|
|
162
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yViolationsComponent, selectors: [["prism-a11y-violations"]], decls: 3, vars: 1, consts: [[1, "a11y-status", "a11y-status--error"], [1, "a11y-body", 3, "a11y-body--loading"], [1, "a11y-status"], [1, "a11y-body"], ["label", "Score", "unit", "/ 100", 1, "a11y-score-card", 3, "value", "tone", "title"], ["metricVisual", "", 3, "score", "tone"], [1, "viol-list"], [1, "viol-passed"], ["rowBadge", "", 3, "tone", "variant", "label"], ["rowTitle", ""], ["rowDescription", ""], ["rowMeta", ""], [1, "viol-passed__list"], ["rowBadge", "", "tone", "success", "label", "Passed"]], template: function A11yViolationsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
163
|
+
i0.ɵɵconditionalCreate(0, A11yViolationsComponent_Conditional_0_Template, 2, 1, "div", 0)(1, A11yViolationsComponent_Conditional_1_Template, 8, 9, "div", 1)(2, A11yViolationsComponent_Conditional_2_Template, 2, 0, "div", 2);
|
|
149
164
|
} if (rf & 2) {
|
|
150
165
|
i0.ɵɵconditional(ctx.auditService.error() ? 0 : ctx.auditService.results() || ctx.auditService.running() ? 1 : 2);
|
|
151
|
-
} }, dependencies: [A11yScoreComponent], styles: ["[_nghost-%COMP%] {\n display:
|
|
166
|
+
} }, dependencies: [A11yScoreComponent, PrismBadgeComponent, PrismListRowComponent, PrismMetricCardComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.a11y-body[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 180px minmax(0, 1fr);\n gap: 12px;\n align-items: start;\n padding: 16px 18px;\n transition: opacity var(--%NS%dur-base);\n}\n\n.a11y-body--loading[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n.viol-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.viol-passed[_ngcontent-%COMP%] summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n padding: 6px 2px;\n font-size: 12px;\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n list-style: none;\n}\n\n.viol-passed[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]::-webkit-details-marker {\n display: none;\n}\n\n.viol-passed[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]::before {\n font-size: 10px;\n content: '\u25B8';\n transition: transform var(--%NS%dur-fast);\n}\n\n.viol-passed[open][_ngcontent-%COMP%] summary[_ngcontent-%COMP%]::before {\n transform: rotate(90deg);\n}\n\n.viol-passed[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text-2);\n}\n\n.viol-passed[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n.viol-passed__list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin-top: 4px;\n}\n\n.a11y-status[_ngcontent-%COMP%] {\n padding: 4px 2px;\n font-size: 12.5px;\n color: var(--%NS%prism-text-muted);\n}\n\n.a11y-status--error[_ngcontent-%COMP%] {\n padding: 16px 18px;\n color: var(--%NS%prism-danger);\n}\n\n@container (max-width: 560px) {\n .a11y-body[_ngcontent-%COMP%] {\n grid-template-columns: minmax(0, 1fr);\n }\n}"] });
|
|
152
167
|
}
|
|
153
168
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yViolationsComponent, [{
|
|
154
169
|
type: Component,
|
|
155
|
-
args: [{ selector: 'prism-a11y-violations', standalone: true, imports: [A11yScoreComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (auditService.error()) {\n <div class=\"a11y-status a11y-status--error\"> Audit failed: {{ auditService.error() }} </div>\n} @else if (auditService.results() || auditService.running()) {\n <div\n class=\"a11y-body\"\n [class.a11y-body--loading]=\"auditService.running()\">\n <
|
|
170
|
+
args: [{ selector: 'prism-a11y-violations', standalone: true, imports: [A11yScoreComponent, PrismBadgeComponent, PrismListRowComponent, PrismMetricCardComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (auditService.error()) {\n <div class=\"a11y-status a11y-status--error\"> Audit failed: {{ auditService.error() }} </div>\n} @else if (auditService.results() || auditService.running()) {\n <div\n class=\"a11y-body\"\n [class.a11y-body--loading]=\"auditService.running()\">\n <prism-metric-card\n class=\"a11y-score-card\"\n label=\"Score\"\n unit=\"/ 100\"\n [value]=\"'' + (scoreResult()?.score ?? 0)\"\n [tone]=\"badgeTone()\"\n [title]=\"scoreTitle()\">\n <prism-a11y-score\n metricVisual\n [score]=\"scoreResult()?.score ?? 0\"\n [tone]=\"grade()\" />\n </prism-metric-card>\n\n <div class=\"viol-list\">\n @for (item of violations(); track item.id) {\n <prism-list-row>\n <prism-badge\n rowBadge\n [tone]=\"item.badge.tone\"\n [variant]=\"item.badge.variant\"\n [label]=\"item.badge.label\" />\n <span rowTitle>{{ item.help || item.description }}</span>\n <span rowDescription>{{ item.description }}</span>\n <span rowMeta>{{ item.id }}</span>\n </prism-list-row>\n } @empty {\n @if (!auditService.running()) {\n <div class=\"a11y-status\">No violations.</div>\n }\n }\n\n @if (passes().length > 0) {\n <details class=\"viol-passed\">\n <summary>{{ passes().length }} passed {{ passes().length === 1 ? 'check' : 'checks' }}</summary>\n <div class=\"viol-passed__list\">\n @for (pass of passes(); track pass.id) {\n <prism-list-row>\n <prism-badge\n rowBadge\n tone=\"success\"\n label=\"Passed\" />\n <span rowTitle>{{ pass.help || pass.description }}</span>\n <span rowMeta>{{ pass.id }}</span>\n </prism-list-row>\n }\n </div>\n </details>\n }\n </div>\n </div>\n} @else {\n <div class=\"a11y-status\"> Select a component to run accessibility audit. </div>\n}\n", styles: [":host {\n display: block;\n}\n\n.a11y-body {\n display: grid;\n grid-template-columns: 180px minmax(0, 1fr);\n gap: 12px;\n align-items: start;\n padding: 16px 18px;\n transition: opacity var(--dur-base);\n}\n\n.a11y-body--loading {\n opacity: 0.6;\n}\n\n.viol-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.viol-passed summary {\n display: flex;\n gap: 6px;\n align-items: center;\n padding: 6px 2px;\n font-size: 12px;\n font-weight: 500;\n color: var(--prism-text-muted);\n cursor: pointer;\n list-style: none;\n}\n\n.viol-passed summary::-webkit-details-marker {\n display: none;\n}\n\n.viol-passed summary::before {\n font-size: 10px;\n content: '\u25B8';\n transition: transform var(--dur-fast);\n}\n\n.viol-passed[open] summary::before {\n transform: rotate(90deg);\n}\n\n.viol-passed summary:hover {\n color: var(--prism-text-2);\n}\n\n.viol-passed summary:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n.viol-passed__list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin-top: 4px;\n}\n\n.a11y-status {\n padding: 4px 2px;\n font-size: 12.5px;\n color: var(--prism-text-muted);\n}\n\n.a11y-status--error {\n padding: 16px 18px;\n color: var(--prism-danger);\n}\n\n@container (max-width: 560px) {\n .a11y-body {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n"] }]
|
|
156
171
|
}], null, null); })();
|
|
157
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yViolationsComponent, { className: "A11yViolationsComponent", filePath: "app/panels/a11y/a11y-violations.component.ts", lineNumber:
|
|
172
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yViolationsComponent, { className: "A11yViolationsComponent", filePath: "app/panels/a11y/a11y-violations.component.ts", lineNumber: 35 }); })();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BadgeTone } from '../../shared/badge.types.js';
|
|
2
|
+
export interface SeverityBadge {
|
|
3
|
+
label: string;
|
|
4
|
+
tone: BadgeTone;
|
|
5
|
+
variant: 'soft' | 'outline';
|
|
6
|
+
}
|
|
7
|
+
/** The badge of an axe impact level; an unknown impact reads as minor. */
|
|
8
|
+
export declare function severityBadge(impact: string | null | undefined): SeverityBadge;
|
|
9
|
+
//# sourceMappingURL=severity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"severity.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/severity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAWD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAE9E"}
|