Skip to content

UI.PopupWrapper

Name Mandatory Description Default Type
⬅️ Input The value that will be passed to the Widget shard(s) of the popup. Any
Output ➡️ The output of this shard will be its input. Any
MinWidth No The minimum width of the popup that should appear below or above the button. By default, it is always at least as wide as the button. none FloatNone
AboveOrBelow No Whether the location of the popup should be above or below the button. none PopupLocation
ID No An optional ID value to make the popup unique if the label text collides. none StringVar(String)None
Widget No The shard(s) to execute that should contain a widget that supports having this popup generated for it upon being clicked. none NoneShard[Shard]
Contents No The shards to execute and render inside the popup ui when the button is pressed. none NoneShard[Shard]

Wraps a button with a popup that can act as a drop-down menu or suggestion menu.

Examples

 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@wire(ui-wire {
  UI.Window(
    Title: "UI PopupWrapper"
    Position: @f2(0 0)
    Anchor: Anchor::Center
    Width: 700
    Height: 400
    Contents: {
      UI.CentralPanel({
        Once({
          asset/r0 | GFX.Texture = image
        })
        UI.PopupWrapper(
          MinWidth: 200.0
          Widget: {
            image | UI.ImageButton(
              Scale: @f2(0.1)
              Action: {
                "Message sent!" | Log
              }
            )
          }
          Contents: {
            UI.Button(
              Label: "Receive message"
              Action: {
                "Message received!" | Log
              }
            )
          }
        )
        UI.PopupWrapper(
          MinWidth: 300.0 ; Changes the minimum width of the popup to be 200.0 instead of the width of the button
          AboveOrBelow: PopupLocation::Above
          Widget: {
            UI.Button(
              Label: "Send message"
              Action: {
                "Message sent!" | Log
              }
            )
          }
          Contents: {
            image | UI.ImageButton(
              Scale: @f2(0.1)
              Action: {
                "Message received!" | Log
              }
            )
            UI.Button(
              Label: "Receive message"
              Action: {
                "Message received!" | Log
              }
            )
          }
        )
      })
    }
  )
} Looped: true)

{ui-behavior: ui-wire}


 

 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
46
47
48
49
50
51
@wire(ui-wire {
  UI.Window(
    Title: "UI PlotPopup Wrapper"
    Position: @f2(0 0)
    Anchor: Anchor::Center
    Width: 700
    Height: 400
    Contents: {
      UI.CentralPanel({
        UI.PopupWrapper(
          Widget: {
            UI.Button(
              Label: "Send message"
              Action: {
                "Message sent!" | Log
              }
            )
          }
          Contents: {
            UI.Button(
              Label: "Receive message"
              Action: {
                "Message received!" | Log
              }
            )
          }
        )
        UI.PopupWrapper(
          Widget: {
            UI.Button(
              Label: "Send message"
              Action: {
                "Message sent!" | Log
              }
            )
          }
          Contents: {
            UI.Button(
              Label: "Receive message"
              Action: {
                "Message received!" | Log
              }
            )
          }
        )
      })
    }
  )
} Looped: true)

{ui-behavior: ui-wire}