-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Expand file tree
/
Copy pathcollapse_button.dart
More file actions
45 lines (36 loc) · 1.04 KB
/
collapse_button.dart
File metadata and controls
45 lines (36 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Copyright 2025 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:jaspr/jaspr.dart';
import 'package:universal_web/web.dart' as web;
import '../button.dart';
@client
class CollapseButton extends StatefulComponent {
const CollapseButton({
this.classes = const [],
this.title,
});
final String? title;
final List<String> classes;
@override
State<CollapseButton> createState() => _CollapseButtonState();
}
class _CollapseButtonState extends State<CollapseButton> {
final buttonKey = GlobalNodeKey<web.HTMLButtonElement>();
void toggleCollapse() {
buttonKey.currentNode
?.closest('.code-block-wrapper')
?.classList
.toggle('collapsed');
}
@override
Component build(BuildContext _) {
return Button(
key: buttonKey,
classes: ['collapse-button', ...component.classes],
title: component.title,
icon: 'keyboard_arrow_up',
onClick: toggleCollapse,
);
}
}