Skip to content

Commit 3f7b5c2

Browse files
committed
Adopt badge design for all features dart-lang#3047 (dart-lang#3101)
1 parent 227e90a commit 3f7b5c2

File tree

6 files changed

+61
-14
lines changed

6 files changed

+61
-14
lines changed

lib/resources/styles.css

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -647,12 +647,14 @@ h1 .category {
647647
vertical-align: middle;
648648
}
649649

650+
/* The badge under a declaration for things like "const", "read-only", etc. and for the badges inline like Null safety*/
651+
/* See https://github.com/dart-lang/dartdoc/blob/master/lib/src/model/feature.dart */
650652
.feature {
651653
display: inline-block;
652-
background: white;
653-
border: 1px solid #0175c2;
654+
background: var(--main-bg-color);
655+
border: 1px solid var(--main-hyperlinks-color);
654656
border-radius: 20px;
655-
color: #0175c2;
657+
color: var(--main-hyperlinks-color);;
656658

657659
font-size: 12px;
658660
padding: 1px 6px;
@@ -796,14 +798,6 @@ td {
796798
padding: 0;
797799
}
798800

799-
li
800-
801-
/* The slug line under a declaration for things like "const", "read-only", etc. */
802-
.features {
803-
font-style: italic;
804-
color: #727272;
805-
}
806-
807801
.multi-line-signature {
808802
font-size: 17px;
809803
color: #727272;

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,28 @@ class _Renderer_Annotation extends RendererBase<Annotation> {
407407
getters: _invisibleGetters['ElementAnnotation']!);
408408
},
409409
),
410+
'cssClassName': Property(
411+
getValue: (CT_ c) => c.cssClassName,
412+
renderVariable:
413+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
414+
if (remainingNames.isEmpty) {
415+
return self.getValue(c).toString();
416+
}
417+
var name = remainingNames.first;
418+
var nextProperty =
419+
_Renderer_String.propertyMap().getValue(name);
420+
return nextProperty.renderVariable(
421+
self.getValue(c) as String,
422+
nextProperty,
423+
[...remainingNames.skip(1)]);
424+
},
425+
isNullValue: (CT_ c) => false,
426+
renderValue: (CT_ c, RendererBase<CT_> r,
427+
List<MustachioNode> ast, StringSink sink) {
428+
_render_String(c.cssClassName, ast, r.template, sink,
429+
parent: r);
430+
},
431+
),
410432
'hashCode': Property(
411433
getValue: (CT_ c) => c.hashCode,
412434
renderVariable: (CT_ c, Property<CT_> self,
@@ -5137,6 +5159,28 @@ class _Renderer_Feature extends RendererBase<Feature> {
51375159
CT_,
51385160
() => {
51395161
..._Renderer_Object.propertyMap<CT_>(),
5162+
'cssClassName': Property(
5163+
getValue: (CT_ c) => c.cssClassName,
5164+
renderVariable:
5165+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
5166+
if (remainingNames.isEmpty) {
5167+
return self.getValue(c).toString();
5168+
}
5169+
var name = remainingNames.first;
5170+
var nextProperty =
5171+
_Renderer_String.propertyMap().getValue(name);
5172+
return nextProperty.renderVariable(
5173+
self.getValue(c) as String,
5174+
nextProperty,
5175+
[...remainingNames.skip(1)]);
5176+
},
5177+
isNullValue: (CT_ c) => false,
5178+
renderValue: (CT_ c, RendererBase<CT_> r,
5179+
List<MustachioNode> ast, StringSink sink) {
5180+
_render_String(c.cssClassName, ast, r.template, sink,
5181+
parent: r);
5182+
},
5183+
),
51405184
'featurePrefix': Property(
51415185
getValue: (CT_ c) => c.featurePrefix,
51425186
renderVariable:
@@ -16009,6 +16053,7 @@ const _invisibleGetters = {
1600916053
'runtimeType'
1601016054
},
1601116055
'Feature': {
16056+
'cssClassName',
1601216057
'featurePrefix',
1601316058
'hashCode',
1601416059
'isPublic',

lib/src/model/annotation.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,7 @@ class Annotation extends Feature with ModelBuilder {
7474

7575
@override
7676
int get hashCode => annotation.hashCode;
77+
78+
@override
79+
String get cssClassName => '';
7780
}

lib/src/model/feature.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class Feature implements Privacy {
3131

3232
final String featurePrefix = '';
3333

34+
String get cssClassName => 'feature';
35+
3436
String get name => _name;
3537

3638
String get linkedName => name;

lib/src/render/model_element_renderer.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ abstract class ModelElementRenderer {
1717

1818
String renderFeatures(ModelElement modelElement) {
1919
var allFeatures = modelElement.features.toList()..sort(byFeatureOrdering);
20-
return allFeatures.map((f) => f.linkedNameWithParameters).join(', ');
20+
return allFeatures
21+
.map((f) =>
22+
'<span class="${f.cssClassName} ${f.linkedNameWithParameters}">${f.linkedNameWithParameters}</span>')
23+
.join();
2124
}
2225
}
2326

test/templates/enum_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ enum EnumWithDefaultConstructor { four, five, six }
244244
matches('<h2>Properties</h2>'),
245245
matches('<a href="../lib/E/ig1.html">ig1</a>'),
246246
matches('An instance getter.'),
247-
matches('<div class="features">read-only</div>'),
247+
matches('<span class="feature read-only">read-only</span>'),
248248
]));
249249
});
250250

@@ -255,7 +255,7 @@ enum EnumWithDefaultConstructor { four, five, six }
255255
matches('<h2>Properties</h2>'),
256256
matches('<a href="../lib/E/is1.html">is1</a>'),
257257
matches('An instance setter.'),
258-
matches('<div class="features">write-only</div>'),
258+
matches('<span class="feature write-only">write-only</span>'),
259259
]));
260260
});
261261

0 commit comments

Comments
 (0)