View Cursor

For enhancing user experience by providing visual feedback about interactive elements on a webpage we can use the "cursor" property. It allows us to change the appearance of the mouse pointer when hovering over specific views of the application's page, such as buttons, links, etc. This helps users intuitively understand the functionality and interactivity of these elements, making the interface more intuitive and accessible. Additionally, using appropriate cursor styles can indicate system states like loading or disabled actions, guiding users on how to interact with the application effectively.

Internally "cursor" property holds the values of the integer type and accepts the following values:

Value Name Description
0 "auto" Auto cursor
1 "default" Default cursor
2 "none" None cursor
3 "context-menu" Context menu cursor
4 "help" Help cursor
5 "pointer" Pointer cursor
6 "progress" Progress cursor
7 "wait" Wait cursor
8 "cell" Cell cursor
9 "crosshair" Crosshair cursor
10 "text" Text cursor
11 "vertical-text" Vertical text cursor
12 "alias" Alias cursor
13 "copy" Copy cursor
14 "move" Move cursor
15 "no-drop" No drop cursor
16 "not-allowed" Not allowed cursor
17 "e-resize" Resize cursor
18 "n-resize" Resize cursor
19 "ne-resize" Resize cursor
20 "nw-resize" Resize cursor
21 "s-resize" Resize cursor
22 "se-resize" Resize cursor
23 "sw-resize" Resize cursor
24 "w-resize" Resize cursor
25 "ew-resize" Resize cursor
26 "ns-resize" Resize cursor
27 "nesw-resize" Resize cursor
28 "nwse-resize" Resize cursor
29 "col-resize" Col resize cursor
30 "row-resize" Row resize cursor
31 "all-scroll" All scroll cursor
32 "zoom-in" Zoom in cursor
33 "zoom-out" Zoom out cursor
34 "grab" Grab cursor
35 "grabbing" Grabbing cursor

When setting cursor value in resource description file we use the name of the value.

Below is an example which demostrate all possible types of the cursors supported by the library. When hovering mouse over the text views cursor will be changed to specified type. The results may be different depending on your operating system and browser.

RUI

ListLayout {
    width = 100%,
    height = 100%,
    padding = 1em,
    gap = 0.3em,
    orientation = up-down,
    content = [
        TextView{width = 100%, cursor = "auto", text = "Auto cursor"},
        TextView{width = 100%, cursor = "default", text = "Default cursor"},
        TextView{width = 100%, cursor = "none", text = "None cursor"},
        TextView{width = 100%, cursor = "context-menu", text = "Context menu cursor"},
        TextView{width = 100%, cursor = "help", text = "Help cursor"},
        TextView{width = 100%, cursor = "pointer", text = "Pointer cursor"},
        TextView{width = 100%, cursor = "progress", text = "Progress cursor"},
        TextView{width = 100%, cursor = "wait", text = "Wait cursor"},
        TextView{width = 100%, cursor = "cell", text = "Cell cursor"},
        TextView{width = 100%, cursor = "crosshair", text = "Crosshair cursor"},
        TextView{width = 100%, cursor = "text", text = "Text cursor"},
        TextView{width = 100%, cursor = "vertical-text", text = "Vertical text cursor"},
        TextView{width = 100%, cursor = "alias", text = "Alias cursor"},
        TextView{width = 100%, cursor = "copy", text = "Copy cursor"},
        TextView{width = 100%, cursor = "move", text = "Move cursor"},
        TextView{width = 100%, cursor = "no-drop", text = "No drop cursor"},
        TextView{width = 100%, cursor = "not-allowed", text = "Not allowed cursor"},
        TextView{width = 100%, cursor = "e-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "n-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "ne-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "nw-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "s-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "se-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "sw-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "w-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "ew-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "ns-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "nesw-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "nwse-resize", text = "Resize cursor"},
        TextView{width = 100%, cursor = "col-resize", text = "Col resize cursor"},
        TextView{width = 100%, cursor = "row-resize", text = "Row resize cursor"},
        TextView{width = 100%, cursor = "all-scroll", text = "All scroll cursor"},
        TextView{width = 100%, cursor = "zoom-in", text = "Zoom in cursor"},
        TextView{width = 100%, cursor = "zoom-out", text = "Zoom out cursor"},
        TextView{width = 100%, cursor = "grab", text = "Grab cursor"},
        TextView{width = 100%, cursor = "grabbing", text = "Grabbing cursor"},
    ]
}

Go

view := rui.NewListLayout(session, rui.Params{
    rui.Width:       rui.Percent(100),
    rui.Height:      rui.Percent(100),
    rui.Padding:     rui.Em(1),
    rui.Gap:         rui.Em(0.3),
    rui.Orientation: rui.TopDownOrientation,
    rui.Content: []rui.View{
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 0, rui.Text: "Auto cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 1, rui.Text: "Default cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 2, rui.Text: "None cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 3, rui.Text: "Context menu cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 4, rui.Text: "Help cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 5, rui.Text: "Pointer cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 6, rui.Text: "Progress cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 7, rui.Text: "Wait cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 8, rui.Text: "Cell cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 9, rui.Text: "Crosshair cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 10, rui.Text: "Text cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 11, rui.Text: "Vertical text cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 12, rui.Text: "Alias cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 13, rui.Text: "Copy cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 14, rui.Text: "Move cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 15, rui.Text: "No drop cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 16, rui.Text: "Not allowed cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 17, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 18, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 19, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 20, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 21, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 22, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 23, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 24, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 25, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 26, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 27, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 28, rui.Text: "Resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 29, rui.Text: "Col resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 30, rui.Text: "Row resize cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 31, rui.Text: "All scroll cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 32, rui.Text: "Zoom in cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 33, rui.Text: "Zoom out cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 34, rui.Text: "Grab cursor"}),
        rui.NewTextView(session, rui.Params{rui.Width: rui.Percent(100), rui.Cursor: 35, rui.Text: "Grabbing cursor"}),
    },
})

Cursors example