@conciso/design-system-angular 2.6.0 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -5444,8 +5444,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
5444
5444
|
* `1`) macht die Ebene explizit, `.hero-image-caption-title` ist reine CSS-Klasse
|
|
5445
5445
|
* und trägt keine Heading-Semantik, das Styling bleibt in beiden Fällen identisch.
|
|
5446
5446
|
*
|
|
5447
|
-
* **Entscheidung 3 — `objectPosition` als Style-Binding,
|
|
5448
|
-
*
|
|
5447
|
+
* **Entscheidung 3 — `objectPosition` als Style-Binding, bewusste Ausnahme von
|
|
5448
|
+
* der Regel, dass Mockup-Inline-Styles nicht in den Wrapper wandern.** Der
|
|
5449
|
+
* Bildausschnitt ist eine Eigenschaft des konkreten
|
|
5449
5450
|
* Bildes (Motiv, Kopfposition), nicht der Seite — anders als z. B. eine
|
|
5450
5451
|
* Sektionsfläche, die vom Seitenkontext abhängt. `docs/index.html` setzt ihn
|
|
5451
5452
|
* deshalb an jedem Hero individuell direkt am `<img>` (z. B. `object-position:center
|
|
@@ -5590,12 +5591,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
5590
5591
|
* umgebendes `<cds-stoerer-set>` bleibt eine Kachel deshalb unsichtbar: Angular hängt
|
|
5591
5592
|
* projizierten Inhalt ohne passendes `<ng-content>`-Ziel nicht ins DOM.
|
|
5592
5593
|
*
|
|
5593
|
-
* **Entscheidung — Icon als projizierter Inhalt.** Wie
|
|
5594
|
-
*
|
|
5595
|
-
* Icon als projizierter Inhalt“) sind die Störer-Icons im Mockup wechselnde
|
|
5594
|
+
* **Entscheidung — Icon als projizierter Inhalt.** Wie bei `cds-icon-card` sind die
|
|
5595
|
+
* Störer-Icons im Mockup wechselnde
|
|
5596
5596
|
* Heroicons, keine DS-Bereichsglyphen aus der Registry — Inhalt, nicht Chrom. Deshalb
|
|
5597
5597
|
* Projektion über `<ng-content select="[cdsIcon]">` statt eines `icon`-Inputs.
|
|
5598
|
-
* Abweichend von
|
|
5598
|
+
* Abweichend von `cds-icon-card` trägt das projizierte `<svg>` die Klasse `stoerer-icon`
|
|
5599
5599
|
* selbst (zusätzlich zu `cdsIcon`, `viewBox`, `aria-hidden="true"`,
|
|
5600
5600
|
* `focusable="false"`): `.ep-card-icon` ist dort ein Container, der die Größe per
|
|
5601
5601
|
* Nachfahren-Selektor (`.ep-card-icon svg`) an ein unverändertes Kind durchreicht.
|
|
@@ -5718,8 +5718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
5718
5718
|
* `<cds-stoerer>`-Kacheln, das auf der Startseite oben rechts über dem Hero-Bild
|
|
5719
5719
|
* liegt. Der Positionsrahmen `.stoerer-hero` (umschließt Hero-Bild UND Set,
|
|
5720
5720
|
* `container-type:inline-size` für die Container-Query-Schwelle) ist bewusst NICHT
|
|
5721
|
-
* Teil dieser Komponente, sondern bleibt beim Konsumenten
|
|
5722
|
-
* `.scratch/angular-seitenbausteine/issues/03-stoerer.md`): er umschließt Hero UND
|
|
5721
|
+
* Teil dieser Komponente, sondern bleibt beim Konsumenten: er umschließt Hero UND
|
|
5723
5722
|
* Set gemeinsam, das könnte diese Komponente als internes Detail nicht leisten, ohne
|
|
5724
5723
|
* das Hero-Bild selbst zu kennen.
|
|
5725
5724
|
*
|
|
@@ -5741,8 +5740,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
5741
5740
|
* hat ausschließlich `<li>` als direkte Kinder (`ul.stoerer-list > *` → `["LI","LI"]`),
|
|
5742
5741
|
* `<cds-stoerer>` selbst taucht im gerenderten DOM nirgends auf — Angular hängt
|
|
5743
5742
|
* unprojizierten Content ohne passendes `<ng-content>`-Ziel gar nicht erst ein, exakt
|
|
5744
|
-
* wie bei `<cds-area-tab>` innerhalb von `<cds-area-tabs>`. Ein `items`-Array (die
|
|
5745
|
-
*
|
|
5743
|
+
* wie bei `<cds-area-tab>` innerhalb von `<cds-area-tabs>`. Ein `items`-Array (die
|
|
5744
|
+
* erwogene Alternative) hätte denselben DOM-Baum ergeben, aber den
|
|
5746
5745
|
* Konsumenten gezwungen, das projizierte Icon jeder Kachel in ein Datenobjekt
|
|
5747
5746
|
* umzuziehen; mit dieser Lösung bleibt die deklarative, Content-projizierende API
|
|
5748
5747
|
* erhalten.
|
|
@@ -5928,7 +5927,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
5928
5927
|
*
|
|
5929
5928
|
* **Entscheidung 1 — `href` entscheidet zwischen `<a>` und `<article>`.** Die
|
|
5930
5929
|
* Doku-Beispiele zeigen die Featured-Card ausschließlich als Link
|
|
5931
|
-
* (`a.card.card-elevated.card-featured`),
|
|
5930
|
+
* (`a.card.card-elevated.card-featured`), diese Komponente unterstützt aber ausdrücklich eine
|
|
5932
5931
|
* Variante ohne `<a>`. `.card-elevated` ist nach `CONTRIBUTING.md` §4 („Elevation =
|
|
5933
5932
|
* Interaktivität“) im CSS auf `a.card-elevated` gescoped — eine `<article>` bekäme
|
|
5934
5933
|
* den Schatten mit gesetzter Klasse ohnehin nicht. Die Komponente führt die Klasse
|
|
@@ -5975,9 +5974,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
5975
5974
|
*
|
|
5976
5975
|
* **Entscheidung 4 — kein CTA- und kein Meta-Input.** Die Doku-Vorlage zeigt
|
|
5977
5976
|
* zusätzlich einen Meta-Strip (Datum/Ort/Format) und einen `.card-cta-link`-Fuß;
|
|
5978
|
-
*
|
|
5979
|
-
* `pill`/`area`. Diese Komponente bildet exakt diese Fläche ab, ohne Inputs zu
|
|
5980
|
-
* erfinden
|
|
5977
|
+
* diese Komponente benennt als API aber nur `title`/`text`/`imageSrc`/`imageAlt`/`href`/
|
|
5978
|
+
* `pill`/`area`. Diese Komponente bildet exakt diese Fläche ab, ohne zusätzliche Inputs zu
|
|
5979
|
+
* erfinden — ein Meta-Strip oder ein CTA-Fuß wären
|
|
5981
5980
|
* eine spätere, eigene Erweiterung.
|
|
5982
5981
|
*
|
|
5983
5982
|
* Verwendungsguidance dieser Gruppe: siehe Card (`komponenten-cards-teaser-card--verwendung`).
|
|
@@ -6170,7 +6169,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6170
6169
|
*
|
|
6171
6170
|
* **Entscheidung 3 — kein `cdsIconCards`-Raster.** `.ep-cards` ist ein reines
|
|
6172
6171
|
* `display:grid` ohne Struktur oder Verhalten (dieselbe Begründung wie beim Verzicht
|
|
6173
|
-
* auf einen `layout-grid`-Wrapper
|
|
6172
|
+
* auf einen `layout-grid`-Wrapper). Konsumenten schreiben
|
|
6174
6173
|
* `<div class="ep-cards">` von Hand (siehe Story „Im Raster“).
|
|
6175
6174
|
*
|
|
6176
6175
|
* Verwendungsguidance dieser Gruppe: siehe Card (`komponenten-cards-teaser-card--verwendung`).
|
|
@@ -6471,7 +6470,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6471
6470
|
* bereits). Trotzdem baut diese Komponente die `.btn`-Klassen direkt zusammen
|
|
6472
6471
|
* (Präzedenzfall `download-cta.component.ts`), aus einem härteren Grund als dort:
|
|
6473
6472
|
* `cds-button` rendert IMMER ein `<button>` — sein Input-Vertrag
|
|
6474
|
-
* (`ButtonComponentInputs`) kennt kein `href` — und kann die
|
|
6473
|
+
* (`ButtonComponentInputs`) kennt kein `href` — und kann die hier nötige
|
|
6475
6474
|
* Verzweigung „`primaryHref` gesetzt → `<a>`“ strukturell gar nicht erfüllen. Ein
|
|
6476
6475
|
* projiziertes `<cds-button>` brächte hier also kein Custom-Element-Layoutproblem
|
|
6477
6476
|
* (kein Kindselektor an `.ep-cta-band` hängt von der DOM-Tiefe ab), sondern schlicht
|
|
@@ -6490,9 +6489,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6490
6489
|
* Farbe wie das Band darunter — unsichtbar. Eine zweite Aktion hätte deshalb
|
|
6491
6490
|
* zwangsläufig dieselbe Optik wie die erste getragen, keine Hierarchie, nur zwei
|
|
6492
6491
|
* gleich gewichtete Buttons. Das ist eine CSS-Lücke (kein kontrastsicherer
|
|
6493
|
-
* sekundärer On-Band-Stil),
|
|
6494
|
-
* `.scratch/angular-seitenbausteine/issues/16-css-luecke-zweite-aktion-auf-band.md`
|
|
6495
|
-
* — gemeldet, nicht in diesem Wrapper improvisiert. Solange sie besteht, trägt
|
|
6492
|
+
* sekundärer On-Band-Stil) — gemeldet, nicht in diesem Wrapper improvisiert. Solange sie besteht, trägt
|
|
6496
6493
|
* `cds-cta-band` nur eine Aktion; ein Konsument mit echtem Bedarf für eine zweite
|
|
6497
6494
|
* schreibt sie außerhalb der Komponente ins Band hinein (`<ng-content>` gibt es
|
|
6498
6495
|
* hier bewusst nicht, um genau das nicht als unterstützten Pfad zu suggerieren).
|
|
@@ -6682,12 +6679,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6682
6679
|
* :638–642`). Ungesetzt (Default) bleibt `<dt>` ohne zusätzliche Klasse, erbt also
|
|
6683
6680
|
* die umgebende Textfarbe — das deckt Kontexte ohne Bereichsbindung ab.
|
|
6684
6681
|
*
|
|
6685
|
-
* **Über die
|
|
6686
|
-
* API-Skizze
|
|
6682
|
+
* **Über die ursprüngliche API hinaus:** `area` stand nicht in der ursprünglichen
|
|
6683
|
+
* API-Skizze. Ergänzt, weil ohne ihn KEINES der 3 realen
|
|
6687
6684
|
* `.ep-facts`-Vorkommen originalgetreu nachgebaut werden könnte — anders als bei
|
|
6688
6685
|
* `cds-tier`s `area` (dort deckt die Einschränkung eine tatsächliche CSS-Lücke
|
|
6689
6686
|
* ab) fehlt hier keine CSS-Regel, nur ein API-Hook auf eine bereits vollständige
|
|
6690
|
-
* Klasse.
|
|
6687
|
+
* Klasse.
|
|
6691
6688
|
*/
|
|
6692
6689
|
class FactsComponent {
|
|
6693
6690
|
/** Fakten-Paare (`<dt>`/`<dd>`), in Darstellungsreihenfolge. */
|
|
@@ -6735,8 +6732,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6735
6732
|
* Nav-Einträge „Standard“ und „Gestreift“). Ausgezählt: außerhalb von `sec-table`
|
|
6736
6733
|
* selbst kommt `.tbl-wrap` nur zweimal vor, beide auf Beitragsseiten
|
|
6737
6734
|
* (`docs/index.html:8622`, `15080`) — keine der 24 Beispielseiten außerhalb von
|
|
6738
|
-
* Wissensbeiträgen setzt aktuell eine Tabelle ein.
|
|
6739
|
-
* Seitenbausteine-Serie.
|
|
6735
|
+
* Wissensbeiträgen setzt aktuell eine Tabelle ein.
|
|
6740
6736
|
*
|
|
6741
6737
|
* **Kein Daten-Input.** Eine `columns`/`rows`-API würde Zellinhalte auf Strings
|
|
6742
6738
|
* festlegen; die Beispielseiten setzen darin Badges, Links und `data-num`
|
|
@@ -6745,7 +6741,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6745
6741
|
* Hülle: `.tbl-wrap`, `.tbl`, `<caption>` und die Striped-Klasse.
|
|
6746
6742
|
*
|
|
6747
6743
|
* **`caption` ist Pflicht (`input.required<string>()`), abweichend von der
|
|
6748
|
-
*
|
|
6744
|
+
* ursprünglichen Skizze (dort `caption? = ''`).** Die eigene Doku dieser Komponente
|
|
6749
6745
|
* (`storybook-angular/src/docs/komponenten/tabelle.mdx:137`) nennt `<caption>`
|
|
6750
6746
|
* ausdrücklich „Pflicht, Screenreader lesen den Titel vor, bevor die Zellen
|
|
6751
6747
|
* vorgelesen werden“ und wiederholt das in den Dos (`tabelle.mdx:147`:
|
|
@@ -6779,7 +6775,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6779
6775
|
* fix (kein Tag-Wechsel wie bei `cdsIconCard`), aber `.tbl-wrap` bräuchte dann
|
|
6780
6776
|
* ein ZWEITES Element, das der Konsument von Hand um die Tabelle schreiben
|
|
6781
6777
|
* müsste (`<div class="tbl-wrap" tabindex="0" role="region" aria-label="…">
|
|
6782
|
-
* <table cdsTable>…`) — genau die beiden Aufgaben, die
|
|
6778
|
+
* <table cdsTable>…`) — genau die beiden Aufgaben, die am ehesten
|
|
6783
6779
|
* vergessen werden (fokussierbarer, benannter Scroll-Container), blieben dann
|
|
6784
6780
|
* beim Konsumenten statt bei der Komponente. Der Element-Selektor hält Wrap und
|
|
6785
6781
|
* Tabelle zusammen in einem Template.
|
|
@@ -6808,8 +6804,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6808
6804
|
* **`.tbl-sort` bleibt außen vor.** Die Klasse existiert
|
|
6809
6805
|
* (css/components.css:1477–1482), die Sortierlogik nicht — kein zugehöriges
|
|
6810
6806
|
* JS in `docs/main.js` für die Beispielseiten. Ein Wrapper, der nur den
|
|
6811
|
-
* Button-Look lieferte, täuschte Funktion vor, die es nicht gibt.
|
|
6812
|
-
* `.scratch/angular-seitenbausteine/issues/19-fehlende-sortierlogik-tbl-sort.md`.
|
|
6807
|
+
* Button-Look lieferte, täuschte Funktion vor, die es nicht gibt.
|
|
6813
6808
|
*/
|
|
6814
6809
|
class TableComponent {
|
|
6815
6810
|
/** Überschrift der Tabelle (`<caption>`, erstes Kind) — Pflicht, siehe Klassendoku. */
|
|
@@ -6870,8 +6865,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6870
6865
|
* Compare (`cds-compare`) — Wrapper um `.ep-compare*` aus css/components.css
|
|
6871
6866
|
* (css/components.css:1275–1294): die aufklappbare Vergleichstabelle für den zeilenweisen
|
|
6872
6867
|
* Direktvergleich mehrerer Pakete/Tarife (Doku-Site `sec-table`, Nav-Eintrag
|
|
6873
|
-
* „Vergleichstabelle (aufklappbar)“, `docs/index.html:5182–5204`)
|
|
6874
|
-
* Seitenbausteine-Serie, nach `cds-table` (Ticket 09).
|
|
6868
|
+
* „Vergleichstabelle (aufklappbar)“, `docs/index.html:5182–5204`), nach `cds-table`.
|
|
6875
6869
|
*
|
|
6876
6870
|
* **Mit Daten-Input, anders als `cds-table`.** `cds-table` projiziert `<thead>`/`<tbody>`
|
|
6877
6871
|
* unverändert per `<ng-content>`, weil seine Zellen Badges, Links und `data-num` tragen können
|
|
@@ -6894,7 +6888,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6894
6888
|
* (WCAG 1.4.1), der `.sr-only`-Text ist deshalb kein optionaler Zusatz, sondern fest verdrahtet,
|
|
6895
6889
|
* nicht per Input überschreibbar.
|
|
6896
6890
|
*
|
|
6897
|
-
* **`caption` ist Pflicht (`input.required<string>()`), abweichend von der
|
|
6891
|
+
* **`caption` ist Pflicht (`input.required<string>()`), abweichend von der ursprünglichen Skizze (dort
|
|
6898
6892
|
* kein Input dafür vorgesehen) — dieselbe Begründung wie bei `cds-table`.** Die eigene Doku
|
|
6899
6893
|
* (`storybook-angular/src/docs/komponenten/tabelle.mdx:91`) nennt `<caption class="sr-only">`
|
|
6900
6894
|
* ausdrücklich als Teil des Bauteils, und das einzige reale Vorkommen hat eine. Anders als bei
|
|
@@ -6903,7 +6897,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6903
6897
|
* direkt in die Tabelle springen, ohne den Summary-Text erneut vorgelesen zu bekommen.
|
|
6904
6898
|
*
|
|
6905
6899
|
* **`rowsLabel` (erste Kopfzelle, `<th scope="col">Funktion</th>` im Mockup) ist dagegen Beiwerk,
|
|
6906
|
-
* optional mit Default `''`.** Auch dafür sieht die
|
|
6900
|
+
* optional mit Default `''`.** Auch dafür sieht die ursprüngliche Skizze keinen Input vor. Den Text fest
|
|
6907
6901
|
* im Template zu verdrahten hieße, AI.Box-Copy in einen wiederverwendbaren Wrapper zu backen
|
|
6908
6902
|
* (ADR-0007 §2); ihn ganz wegzulassen wich ohne CSS-Befund vom einzigen Beleg ab, ohne dass die
|
|
6909
6903
|
* Doku das verlangt. Anders als `caption` ist die Kopfzelle nicht barrierefreiheitsrelevant
|
|
@@ -6911,8 +6905,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
6911
6905
|
* Ecke ohne eigenen Namen. Deshalb Beiwerk, kein Inhalt — das Beispielwort „Funktion“ steht in
|
|
6912
6906
|
* der Story, nicht in der Klasse.
|
|
6913
6907
|
*
|
|
6914
|
-
* **Natives `<details>`/`<summary>` bleibt erhalten, kein nachgebautes Disclosure**
|
|
6915
|
-
*
|
|
6908
|
+
* **Natives `<details>`/`<summary>` bleibt erhalten, kein nachgebautes Disclosure**
|
|
6909
|
+
* (analog `cds-faq`): Tastaturbedienung und Toggle-Verhalten kommen vom Browser, das CSS
|
|
6916
6910
|
* hängt direkt an `[open]` (`.ep-compare[open] .ep-compare-caret`). `<details class="ep-compare">`
|
|
6917
6911
|
* sitzt deshalb im TEMPLATE, nicht am Host — derselbe Grund wie bei `cds-table`s
|
|
6918
6912
|
* `.tbl-wrap`/`.tbl`: ein `<cds-compare>`-Host ist ein unbekanntes Custom Element, kein echtes
|
|
@@ -7082,14 +7076,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7082
7076
|
* Avatar (`div[cdsAvatar]`) — Wrapper um `.article-avatar` aus css/components.css
|
|
7083
7077
|
* (css/components.css:1520–1536): der Initialen-/Foto-Kreis im Meta-Strip eines
|
|
7084
7078
|
* Wissensbeitrags (`.article-meta-author`), in der Author-Card (`-lg`) und im
|
|
7085
|
-
* Team-Tile-Grid (`-xl`).
|
|
7079
|
+
* Team-Tile-Grid (`-xl`).
|
|
7086
7080
|
*
|
|
7087
7081
|
* **Attributselektor (ADR-0008), gemessen an der Geschwister-Kette.** Ausgezählt in
|
|
7088
7082
|
* `docs/index.html`: 8 der 11 Instanzen der Grundgröße sitzen als direkte, adjazente
|
|
7089
7083
|
* Geschwister in einer von 3 `.article-avatar-stack`-Kacheln (2 Avatare in Zeilen
|
|
7090
7084
|
* 8343–8344, je 3 in Zeilen 8373–8375 und 8404–8406) — genau dort greift
|
|
7091
7085
|
* `.article-avatar-stack .article-avatar + .article-avatar`
|
|
7092
|
-
* (css/components.css:1540–1541), eine Geschwister-Kette
|
|
7086
|
+
* (css/components.css:1540–1541), eine Geschwister-Kette.
|
|
7093
7087
|
* Ein Element-Selektor `cds-avatar`, der `.article-avatar` auf einem INNEREN Element
|
|
7094
7088
|
* rendert (wie `cds-facts` es mit `<dl>` tut, weil `<dl>` ein Custom Element nicht
|
|
7095
7089
|
* annehmen kann), würde diese Kette brechen: die beiden `.article-avatar`-Knoten
|
|
@@ -7117,7 +7111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7117
7111
|
* eigens erfundene Marker-Klasse; der Attributselektor liefert die Zielscheibe für
|
|
7118
7112
|
* beide Zwecke aus einer Hand, ohne dass der Konsument zwei Attribute schreiben muss.
|
|
7119
7113
|
*
|
|
7120
|
-
* **Initialen werden aus `name` abgeleitet, kein eigener Input
|
|
7114
|
+
* **Initialen werden aus `name` abgeleitet, kein eigener Input:**
|
|
7121
7115
|
* erstes Zeichen des ersten und des letzten durch Whitespace getrennten Worts, groß
|
|
7122
7116
|
* — ein einzelnes Wort liefert dessen erste zwei Zeichen. Zwei Inputs für dieselbe
|
|
7123
7117
|
* Information (Name UND Initialen) könnten auseinanderlaufen, sobald nur eines
|
|
@@ -7249,14 +7243,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7249
7243
|
/**
|
|
7250
7244
|
* ArticleHeader (`cds-article-header`) — Wrapper um `.article-header` aus
|
|
7251
7245
|
* css/components.css (css/components.css:1486–1490, 1508–1519): der zentrierte Kopf
|
|
7252
|
-
* eines Wissensbeitrags (Breadcrumb, optionale Pill, H1, Lead, Meta-Strip).
|
|
7253
|
-
*
|
|
7246
|
+
* eines Wissensbeitrags (Breadcrumb, optionale Pill, H1, Lead, Meta-Strip).
|
|
7247
|
+
* Hauptvorlage ist
|
|
7254
7248
|
* `storybook-angular/src/docs/seitenmuster/wissensbeitrag.mdx`, Abschnitt „Article
|
|
7255
|
-
* Header“ — dort steht das
|
|
7249
|
+
* Header“ — dort steht das verbindliche Markup samt Begründung,
|
|
7256
7250
|
* nicht nur das Mockup in `docs/index.html`.
|
|
7257
7251
|
*
|
|
7258
7252
|
* **Breadcrumb sitzt im Header — abweichend von der allgemeinen Navigationsregel,
|
|
7259
|
-
* bewusst der
|
|
7253
|
+
* bewusst der Hauptvorlage folgend.** `docs/index.html:2423` dokumentiert für
|
|
7260
7254
|
* Unterseiten allgemein, wörtlich: „Den Breadcrumb nicht in einen zentrierten
|
|
7261
7255
|
* `.article-header` einbetten, sonst wird er mittig ausgerichtet und bekommt einen
|
|
7262
7256
|
* abweichenden Abstand zur Nav“ (Tabellenzeile „Nicht“ der Breadcrumb-Doku) — und
|
|
@@ -7269,30 +7263,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7269
7263
|
* den Breadcrumb INNERHALB von `.article-header` zeigen: 5 kleine Referenz-Boxen in
|
|
7270
7264
|
* der Doku-Sektion selbst (`docs/index.html:7850`, `8304`, `8331`, `8361`, `8392` —
|
|
7271
7265
|
* ohne Topnav/Hero/Footer, reine Bauteil-Illustrationen) plus das Code-Beispiel in
|
|
7272
|
-
* `wissensbeitrag.mdx`.
|
|
7273
|
-
* Beispielseiten
|
|
7274
|
-
*
|
|
7275
|
-
* Befund
|
|
7276
|
-
* (`.scratch/angular-seitenbausteine/issues/20-breadcrumb-in-oder-vor-article-header.md`).
|
|
7266
|
+
* `wissensbeitrag.mdx`. Diese Komponente folgt bewusst dieser Doku, nicht den
|
|
7267
|
+
* Beispielseiten (Breadcrumb als Input, im Header), und dokumentiert den
|
|
7268
|
+
* Widerspruch als eigenen Befund.
|
|
7277
7269
|
* Konsumenten, die der allgemeinen Regel folgen wollen (wie die beiden echten
|
|
7278
7270
|
* Beispielseiten), lassen `breadcrumb` leer und setzen die Leiste selbst davor
|
|
7279
7271
|
* (siehe Story „Ohne Breadcrumb“).
|
|
7280
7272
|
*
|
|
7281
|
-
* **Letzter Breadcrumb-Eintrag immer ohne Link, mit `aria-current="page"
|
|
7282
|
-
*
|
|
7273
|
+
* **Letzter Breadcrumb-Eintrag immer ohne Link, mit `aria-current="page"`.** Die
|
|
7274
|
+
* beiden Wissensbeitrag-Inline-Beispiele
|
|
7283
7275
|
* (`docs/index.html:7850–7856`, `wissensbeitrag.mdx`) zeigen dafür nur 2 Einträge,
|
|
7284
7276
|
* BEIDE als `<a>`, ohne `aria-current` — eine zur Kürze vereinfachte Doku-Skizze,
|
|
7285
7277
|
* kein vollständiges Barrierefreiheits-Beispiel. Das volle, korrekte Muster (Trenner
|
|
7286
7278
|
* dekorativ, letzter Eintrag `<span aria-current="page">` ohne Link) steht an
|
|
7287
7279
|
* anderer Stelle exakt so vor (`docs/index.html:2406–2412` allgemeine
|
|
7288
|
-
* Breadcrumb-Doku, `docs/index.html:11023–11030` Stellenanzeige)
|
|
7289
|
-
*
|
|
7290
|
-
*
|
|
7291
|
-
* gesetzten `href`.
|
|
7280
|
+
* Breadcrumb-Doku, `docs/index.html:11023–11030` Stellenanzeige) — die Komponente
|
|
7281
|
+
* folgt deshalb diesem Muster für den letzten Array-Eintrag, unabhängig von einem
|
|
7282
|
+
* dort eventuell gesetzten `href`.
|
|
7292
7283
|
*
|
|
7293
7284
|
* **Keine bereichsgefärbte Breadcrumb-Verlinkung (`.t-{area}`).** Die
|
|
7294
7285
|
* Inline-Beispiele färben ihren zweiten (dort letzten) Eintrag mit `.t-ki`/`.t-es`/
|
|
7295
|
-
* `.t-wo`;
|
|
7286
|
+
* `.t-wo`; die API sieht dafür aber kein Feld vor (`{label, href?}`, kein
|
|
7296
7287
|
* `area` pro Eintrag), und eine Zuordnung „Bereichsfarbe auf den vorletzten
|
|
7297
7288
|
* Eintrag“ wäre geraten, nicht aus der Doku ableitbar — zumal der gefärbte Eintrag
|
|
7298
7289
|
* dort ein Link ist, kein `aria-current`-Element, also nicht deckungsgleich mit dem
|
|
@@ -7310,7 +7301,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7310
7301
|
* **Pille rendert nur, wenn `area` UND `pill` gesetzt sind — kein erfundener
|
|
7311
7302
|
* Default.** `PillComponent.area` ist als `CdsArea` mit einem eigenen Default
|
|
7312
7303
|
* (`'ki'`) typisiert; diese Komponente führt `area` dagegen als `CdsArea | undefined`
|
|
7313
|
-
* (
|
|
7304
|
+
* (kein eigener Default vorgegeben). Ein erster Entwurf reichte
|
|
7314
7305
|
* `area()` per `as CdsArea`-Cast durch, damit ein `undefined`-Binding
|
|
7315
7306
|
* `cds-pill`s eigenen Default überschreiben kann — eine Typ-Lüge, um einen Fall
|
|
7316
7307
|
* abzudecken, der beim Nachzählen gar nicht vorkommt: **alle 9** `.pill`-Vorkommen
|
|
@@ -7339,8 +7330,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7339
7330
|
* (`stoerer.component.ts:formattedDate`, inkl. manuellem Aufbau der
|
|
7340
7331
|
* `Date`-Komponenten gegen den UTC-Mitternacht-Fallstrick von `new Date(iso)`).
|
|
7341
7332
|
* Diese Komponente tut das NICHT: `date` liefert nur den maschinenlesbaren
|
|
7342
|
-
* `datetime`-Wert, `dateLabel` die sichtbare Schreibweise —
|
|
7343
|
-
*
|
|
7333
|
+
* `datetime`-Wert, `dateLabel` die sichtbare Schreibweise — bewusst als zwei
|
|
7334
|
+
* getrennte Inputs. Begründung der Abweichung: Erstens deckt
|
|
7344
7335
|
* sich das mit jeder realen Instanz (6 von 6 `.article-meta-date`-Vorkommen tragen
|
|
7345
7336
|
* einen redaktionell gesetzten Text wie „13. Mai 2026“, keinen von
|
|
7346
7337
|
* `Intl.DateTimeFormat` erzeugten) — anders als der Störer, dessen Kacheln NUR ein
|
|
@@ -7352,22 +7343,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7352
7343
|
* ISO-Form, nicht geraten formatiert) — in der Story „Interaktiv“ als Warnfall extra
|
|
7353
7344
|
* benannt, damit niemand das versehentlich auf eine Produktionsseite bringt.
|
|
7354
7345
|
*
|
|
7355
|
-
* **Meta-Strip nur, wenn es etwas zu zeigen gibt.** `authorName`/`date` sind
|
|
7356
|
-
*
|
|
7346
|
+
* **Meta-Strip nur, wenn es etwas zu zeigen gibt.** `authorName`/`date` sind bewusst
|
|
7347
|
+
* Beiwerk (Default `''`); ausgezählt haben alle 6 realen
|
|
7357
7348
|
* `.article-meta`-Vorkommen sowohl Autor als auch Datum, eine Stellenanzeige
|
|
7358
7349
|
* (`docs/index.html:11035`) nutzt `.article-header` dagegen KOMPLETT OHNE
|
|
7359
7350
|
* `.article-meta` (dort ein `<dl>` aus Job-Fakten statt Autor/Datum) — dieser
|
|
7360
|
-
* abweichenden Verwendung folgt diese Komponente nicht (
|
|
7361
|
-
*
|
|
7351
|
+
* abweichenden Verwendung folgt diese Komponente nicht (dafür ist in der API kein
|
|
7352
|
+
* Feld vorgesehen), sie belegt aber, dass ein leerer Meta-Strip ein realer Fall ist.
|
|
7362
7353
|
* `.article-meta` (und darin `.article-meta-author`/`.article-meta-sep`) rendern
|
|
7363
7354
|
* deshalb nur, wenn `authorName()` bzw. `date()` tatsächlich etwas liefern; der
|
|
7364
7355
|
* Trenner nur, wenn beide Seiten vorhanden sind.
|
|
7365
7356
|
*
|
|
7366
|
-
* **Avatar projiziert über `[cdsAvatar]`, PLUS `cds-avatar-stack`.**
|
|
7367
|
-
*
|
|
7357
|
+
* **Avatar projiziert über `[cdsAvatar]`, PLUS `cds-avatar-stack`.** Der
|
|
7358
|
+
* ursprüngliche Entwurf nennt nur `<ng-content select="[cdsAvatar]">`; ergänzt um den
|
|
7368
7359
|
* Tag-Selektor `cds-avatar-stack`, weil `AvatarStackComponent` (siehe dort) ein
|
|
7369
7360
|
* Element-Selektor ist, kein `[cdsAvatar]`-Attribut trägt und sonst nicht in den
|
|
7370
|
-
* Meta-Strip projiziert werden könnte — nötig für die
|
|
7361
|
+
* Meta-Strip projiziert werden könnte — nötig für die Story
|
|
7371
7362
|
* „Mehrere Autor:innen“.
|
|
7372
7363
|
*
|
|
7373
7364
|
* **Host als Block.** `.article-header` sitzt am Host und setzt nur
|
|
@@ -7522,8 +7513,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7522
7513
|
/**
|
|
7523
7514
|
* ArticleToc (`cds-article-toc`) — Wrapper um `.article-toc*` aus css/components.css
|
|
7524
7515
|
* (css/components.css:1577–1589): das aufklappbare Inhaltsverzeichnis am Anfang eines
|
|
7525
|
-
* Wissensbeitrags.
|
|
7526
|
-
* Ausgezählt: genau 2 reale Vorkommen, beide mit 5 Einträgen und identischem
|
|
7516
|
+
* Wissensbeitrags. Ausgezählt: genau 2 reale Vorkommen, beide mit 5 Einträgen und identischem
|
|
7527
7517
|
* sichtbarem Text „Inhalt“ plus identischem `aria-label`
|
|
7528
7518
|
* (`docs/index.html:7948–7960`, Doku-Sektion mit Platzhalter-Hrefs `#gt-article-toc`;
|
|
7529
7519
|
* `docs/index.html:15049–15061`, reale Beispielseite Wissensbeitrag · KI mit echten
|
|
@@ -7540,8 +7530,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7540
7530
|
* zielt auf `p`, nicht auf `details` — ein `<cds-article-toc>`-Host zwischen
|
|
7541
7531
|
* `.article-body` und dem `<details>` bricht deshalb keine Selektorkette.
|
|
7542
7532
|
*
|
|
7543
|
-
* **Natives `<details>`/`<summary>`, kein nachgebautes Disclosure
|
|
7544
|
-
*
|
|
7533
|
+
* **Natives `<details>`/`<summary>`, kein nachgebautes Disclosure:** Tastaturbedienung
|
|
7534
|
+
* (Enter/Space auf `<summary>`) und
|
|
7545
7535
|
* Toggle-Zustand kommen vollständig vom Browser, das CSS hängt direkt an `[open]`
|
|
7546
7536
|
* (`.article-toc[open] .article-toc-caret`, css/components.css:1583). `<details
|
|
7547
7537
|
* class="article-toc">` sitzt deshalb im TEMPLATE, nicht am Host — derselbe Grund
|
|
@@ -7554,8 +7544,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7554
7544
|
* Form (natives `<details>`, SVG-Caret, `[open]`-Rotation über
|
|
7555
7545
|
* `transition:transform`), aber nicht die Aufgabe: `cds-compare` trägt eine
|
|
7556
7546
|
* Vergleichstabelle mit `columns`/`rows`/`toggled`-Output, dieses Bauteil trägt
|
|
7557
|
-
* eine reine Link-Liste ohne Output (
|
|
7558
|
-
* Bauteil bewusst keinen `toggled`
|
|
7547
|
+
* eine reine Link-Liste ohne Output (die API sieht für dieses
|
|
7548
|
+
* Bauteil bewusst keinen `toggled` vor). Zwei gleiche Stellen sind ein
|
|
7559
7549
|
* Zufall, kein Muster — eine gemeinsame Basisklasse für zwei Vorkommen hätte nur
|
|
7560
7550
|
* das `<details>`+Caret-Skelett gebündelt und dabei entweder Verhalten
|
|
7561
7551
|
* vereinheitlicht (ein erzwungener `toggled`-Output ohne Zweck hier) oder so viel
|
|
@@ -7649,8 +7639,7 @@ let uid = 0;
|
|
|
7649
7639
|
* ArticleCallout (`cds-article-callout`) — Wrapper um `.article-callout*` aus
|
|
7650
7640
|
* css/components.css (css/components.css:1591–1600): der bereichsgetönte
|
|
7651
7641
|
* Aside-Block für Praxis-Beispiele und „In der Realität“-Einschübe im Lauftext
|
|
7652
|
-
* eines Wissensbeitrags.
|
|
7653
|
-
* („Artikel-Körper“). Ausgezählt: 5 reale Vorkommen, je eines pro Bereich in der
|
|
7642
|
+
* eines Wissensbeitrags. Ausgezählt: 5 reale Vorkommen, je eines pro Bereich in der
|
|
7654
7643
|
* Doku-Sektion (`docs/index.html:8086–8115`, co/ki/es/wo) plus eines in der realen
|
|
7655
7644
|
* Beispielseite Wissensbeitrag · KI (`docs/index.html:15110–15114`).
|
|
7656
7645
|
*
|
|
@@ -7667,8 +7656,8 @@ let uid = 0;
|
|
|
7667
7656
|
* `.article-body` und dem `<aside>` bricht deshalb keine Selektorkette.
|
|
7668
7657
|
*
|
|
7669
7658
|
* **Projizierte Absätze bleiben direkte Kinder von `.article-callout`, kein
|
|
7670
|
-
* `<div>` um `<ng-content
|
|
7671
|
-
* Kindselektor, css/components.css:1600
|
|
7659
|
+
* `<div>` um `<ng-content>`:** `.article-callout > p` ist ein
|
|
7660
|
+
* Kindselektor, css/components.css:1600. `<ng-content>` selbst fügt kein
|
|
7672
7661
|
* DOM-Element ein — es verschiebt nur die vom Konsumenten geschriebenen
|
|
7673
7662
|
* `<p>`-Elemente an ihre Stelle direkt im `<aside>`, eine Ebene unter dem
|
|
7674
7663
|
* `<cds-article-callout>`-Host, aber ohne zusätzlichen Knoten dazwischen. Geprüft
|
|
@@ -7695,8 +7684,7 @@ let uid = 0;
|
|
|
7695
7684
|
* verloren, wenn kein bereichsspezifischer Override existiert (`co` und „kein
|
|
7696
7685
|
* `data-area`“ zeigen `--tx-primary` statt `--co-700`). Diese Komponente
|
|
7697
7686
|
* reproduziert exakt die Klassen und die Struktur des Mockups und zeigt deshalb
|
|
7698
|
-
* denselben, vorbestehenden Fehler wie rohes HTML
|
|
7699
|
-
* `.scratch/angular-seitenbausteine/issues/22-css-luecke-callout-eyebrow-spezifitaet.md`.
|
|
7687
|
+
* denselben, vorbestehenden Fehler wie rohes HTML.
|
|
7700
7688
|
*
|
|
7701
7689
|
* **`aria-labelledby` auf `<aside>`, sobald `eyebrow` gesetzt ist — Zusatz zum
|
|
7702
7690
|
* Mockup, keine CSS-Änderung.** `<aside>` hat implizit die Landmark-Rolle
|
|
@@ -7704,8 +7692,7 @@ let uid = 0;
|
|
|
7704
7692
|
* mehrere gleichnamige Landmarks ohne zugänglichen Namen. Gemessen mit
|
|
7705
7693
|
* axe-core an rohem Markup ohne Angular (zwei `<aside class="article-callout">`
|
|
7706
7694
|
* ohne Auszeichnung): `landmark-unique` schlägt fehl, unabhängig von dieser
|
|
7707
|
-
* Komponente — das Mockup selbst kennt diese Auszeichnung nicht
|
|
7708
|
-
* `.scratch/angular-seitenbausteine/issues/23-doku-luecke-callout-landmark-label.md`).
|
|
7695
|
+
* Komponente — das Mockup selbst kennt diese Auszeichnung nicht.
|
|
7709
7696
|
* Die Eyebrow ist bereits ein prägnanter, vom Redakteur gepflegter Kurztext
|
|
7710
7697
|
* genau für diesen Zweck (z. B. „In der Praxis“) — sie bekommt deshalb eine
|
|
7711
7698
|
* generierte `id`, auf die `aria-labelledby` zeigt, sobald sie existiert. Ohne
|
|
@@ -7767,8 +7754,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7767
7754
|
* ArticleFigure (`cds-article-figure`) — Wrapper um `.article-figure`/
|
|
7768
7755
|
* `.article-figcaption` aus css/components.css (css/components.css:1573–1575):
|
|
7769
7756
|
* das redaktionelle Inline-Bild mit optionaler Bildunterschrift im Lauftext eines
|
|
7770
|
-
* Wissensbeitrags.
|
|
7771
|
-
* Ausgezählt: 3 reale Vorkommen — Doku-Demo mit Caption
|
|
7757
|
+
* Wissensbeitrags. Ausgezählt: 3 reale Vorkommen — Doku-Demo mit Caption
|
|
7772
7758
|
* (`docs/index.html:8028–8031`), reales Body-Bild mit Caption in der Beispielseite
|
|
7773
7759
|
* Wissensbeitrag · KI (`docs/index.html:15115–15118`, identischer Bild- und
|
|
7774
7760
|
* Caption-Text wie die Doku-Demo) und ein dritter, captionsloser Sonderfall direkt
|
|
@@ -7796,11 +7782,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7796
7782
|
* identisches Bild wie Vorschaubild für Wiedererkennung“), sitzt außerhalb von
|
|
7797
7783
|
* `.article-body` und bekommt seine 720-px-Breite über ein
|
|
7798
7784
|
* Inline-`style="max-width:720px;margin:0 auto"` am Konsumenten, nicht über die
|
|
7799
|
-
* Komponente (
|
|
7800
|
-
*
|
|
7785
|
+
* Komponente (Mockup-Inline-Styles wandern bewusst nicht in den Wrapper). Die
|
|
7786
|
+
* API sieht dafür kein `loading`/`fetchpriority`-Input
|
|
7801
7787
|
* vor; dieses Bauteil deckt deshalb den (häufigeren, dokumentierten) In-Body-Fall
|
|
7802
7788
|
* ab. Für den Lead-Bild-Sonderfall bleibt `<figure class="article-figure">` roh
|
|
7803
|
-
* schreibbar oder — sofern die Semantik passt — `cds-hero-image`
|
|
7789
|
+
* schreibbar oder — sofern die Semantik passt — `cds-hero-image` zu
|
|
7804
7790
|
* prüfen.
|
|
7805
7791
|
*
|
|
7806
7792
|
* **`alt` und `caption` sind bewusst getrennte Pflicht-/Beiwerk-Inputs, keine
|
|
@@ -7850,12 +7836,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7850
7836
|
* ArticlePullquote (`cds-article-pullquote`) — Wrapper um `.article-pullquote` aus
|
|
7851
7837
|
* css/components.css (css/components.css:1608–1612): die typografische
|
|
7852
7838
|
* Hervorhebung eines Satzes aus dem eigenen Lauftext eines Wissensbeitrags.
|
|
7853
|
-
*
|
|
7854
|
-
* reale Vorkommen, wortgleich, beide `data-area="ki"` — Doku-Demo
|
|
7839
|
+
* Ausgezählt: 2 reale Vorkommen, wortgleich, beide `data-area="ki"` — Doku-Demo
|
|
7855
7840
|
* (`docs/index.html:8136`) und reale Beispielseite Wissensbeitrag · KI
|
|
7856
7841
|
* (`docs/index.html:15075`).
|
|
7857
7842
|
*
|
|
7858
|
-
* **Nicht `cds-blockquote` (`BlockquoteComponent`, `.bq`) —
|
|
7843
|
+
* **Nicht `cds-blockquote` (`BlockquoteComponent`, `.bq`) — im
|
|
7859
7844
|
* JSDoc beider Bauteile wechselseitig abgegrenzt.** Pull-Quote und Blockquote
|
|
7860
7845
|
* teilen die typografische Familie (Serif, bereichsgefärbter Linksakzent in
|
|
7861
7846
|
* `{area}-500`), aber nicht den Zweck, dokumentiert in `wissensbeitrag.mdx`,
|
|
@@ -7926,8 +7911,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7926
7911
|
/**
|
|
7927
7912
|
* AuthorCard (`div[cdsAuthorCard]`) — Wrapper um `.author-card` aus css/components.css
|
|
7928
7913
|
* (css/components.css:1602–1606): der Avatar-plus-Bio-Strip am Ende eines
|
|
7929
|
-
* Wissensbeitrags, einzeln oder mehrfach in `cds-author-card-group`.
|
|
7930
|
-
* letztes Ticket der Seitenbausteine-Serie. Ausgezählt: 17 reale Vorkommen in
|
|
7914
|
+
* Wissensbeitrags, einzeln oder mehrfach in `cds-author-card-group`. Ausgezählt: 17 reale Vorkommen in
|
|
7931
7915
|
* `docs/index.html` — 4 einzelstehend (2 Doku-Demos `docs/index.html:8193,8207`, 1
|
|
7932
7916
|
* Artikel-Demo `8424`, 1 reale Beispielseite `15179`) und 13 in fünf Gruppen (siehe
|
|
7933
7917
|
* `AuthorCardGroupComponent`).
|
|
@@ -7975,8 +7959,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7975
7959
|
* ausschließlich vom `area`-Input, den der Konsument direkt an das projizierte
|
|
7976
7960
|
* `[cdsAvatar]` bindet (siehe unten). Ein `area`-Input, der hier nur `data-area` ohne
|
|
7977
7961
|
* jede CSS-Wirkung setzt, wäre eine erfundene Konfiguration ohne Gegenwert — Befund
|
|
7978
|
-
* gemeldet, nicht im Wrapper geflickt (ADR-0001)
|
|
7979
|
-
* `.scratch/angular-seitenbausteine/issues/24-css-luecke-author-card-data-area.md`.
|
|
7962
|
+
* gemeldet, nicht im Wrapper geflickt (ADR-0001).
|
|
7980
7963
|
*
|
|
7981
7964
|
* **Avatar projiziert über `[cdsAvatar]`, wie bei `cds-article-header`.** Der
|
|
7982
7965
|
* Konsument setzt Größe (`size="lg"`, css/components.css:1527) und Bereich
|
|
@@ -7986,15 +7969,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
7986
7969
|
*
|
|
7987
7970
|
* **Eyebrow als `<h3>`, nur wenn gesetzt** (Beiwerk, Default `''`) — deckungsgleich
|
|
7988
7971
|
* mit allen 4 einzelstehenden realen Vorkommen: 2 tragen `<h3 class="author-card-eyebrow">`
|
|
7989
|
-
* (`docs/index.html:8196,8427`, „Über den Autor“/„Über die Autorin
|
|
7972
|
+
* (`docs/index.html:8196,8427`, „Über den Autor“/„Über die Autorin“:
|
|
7990
7973
|
* eine Ebene unter dem `<h2>` des Article-Body), die anderen 2 (Doku-Demos ohne
|
|
7991
7974
|
* umgebende Artikelstruktur) haben gar keinen. Innerhalb einer Gruppe trägt laut
|
|
7992
7975
|
* `wissensbeitrag.mdx` („Eyebrow-Konvention“) keine einzelne Karte mehr einen eigenen
|
|
7993
7976
|
* Eyebrow — die Gruppen-Überschrift ersetzt sie (siehe `AuthorCardGroupComponent`);
|
|
7994
7977
|
* Konsumenten lassen `eyebrow` dafür einfach leer.
|
|
7995
7978
|
*
|
|
7996
|
-
* **`roleLabel`, NICHT `role` wie
|
|
7997
|
-
* Freihand-Entscheid.**
|
|
7979
|
+
* **`roleLabel`, NICHT `role` wie in einem ersten Entwurf — gemessene Abweichung, kein
|
|
7980
|
+
* Freihand-Entscheid.** Der erste Entwurf setzte `role` wörtlich um
|
|
7998
7981
|
* (`role`-Input, mit `role="…"` als schlichtem Attribut in den Stories gesetzt, wie
|
|
7999
7982
|
* `name`/`bio`/`eyebrow`). Storybooks eingebauter a11y-Check (`aria-roles`) schlug
|
|
8000
7983
|
* darauf für JEDE Story mit echtem Rollentext fehl: `role` ist ein globales
|
|
@@ -8008,7 +7991,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
8008
7991
|
* (`grep -rn "readonly role" angular-lib/projects/design-system-angular/src/lib/`
|
|
8009
7992
|
* zeigt nur diese drei). Diese Komponente folgt demselben, bereits etablierten
|
|
8010
7993
|
* Muster statt die Kollision ein viertes Mal zu wiederholen — CSS-Klasse bleibt
|
|
8011
|
-
* unverändert `.author-card-role`, nur der Input-Name weicht vom
|
|
7994
|
+
* unverändert `.author-card-role`, nur der Input-Name weicht vom ursprünglichen Entwurf ab.
|
|
8012
7995
|
*/
|
|
8013
7996
|
class AuthorCardComponent {
|
|
8014
7997
|
/** Name (`.author-card-name`). */
|
|
@@ -8072,8 +8055,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
8072
8055
|
* AuthorCardGroup (`cds-author-card-group`) — Wrapper um `.author-card-group` aus
|
|
8073
8056
|
* css/components.css (css/components.css:1547–1563): bündelt mehrere `[cdsAuthorCard]`
|
|
8074
8057
|
* am Ende eines Wissensbeitrags, gestapelt (Default) oder als zweispaltiges Raster
|
|
8075
|
-
* (`is-grid`, css/components.css:1555).
|
|
8076
|
-
* Seitenbausteine-Serie. Ausgezählt: 5 reale Gruppen — 2 gestapelt in der
|
|
8058
|
+
* (`is-grid`, css/components.css:1555). Ausgezählt: 5 reale Gruppen — 2 gestapelt in der
|
|
8077
8059
|
* Artikel-Demo (`docs/index.html:8440,8465`, je 2 bzw. 3 Karten), 2 `is-grid`
|
|
8078
8060
|
* (Doku-Demo `9112`, reale Beispielseite Scrum-Training `13811`, je 4 Karten) und 0
|
|
8079
8061
|
* `is-grid`-Vorkommen im Wissensbeitrag selbst — `wissensbeitrag.mdx` verweist für
|
|
@@ -8180,7 +8162,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
|
|
|
8180
8162
|
* ausschließlich von hier re-exportiert — es gibt keine sekundären Entry-Points
|
|
8181
8163
|
* (siehe docs/adr/0004-verteilung-und-versionierung.md).
|
|
8182
8164
|
*
|
|
8183
|
-
* Vollständig umgezogen (
|
|
8165
|
+
* Vollständig umgezogen (siehe docs/adr/0002 und 0003): alle
|
|
8184
8166
|
* Komponenten leben hier in der Lib, storybook-angular enthält nur noch
|
|
8185
8167
|
* Stories und importiert ausschließlich von hier.
|
|
8186
8168
|
*/
|