# Option Sets

A few option sets come included with the Canvas template:

1. Page
2. Role
3. Inclusive "yes/no"

## Admin Options

## Admin Option Categories

## Navigation type

## Link Type

## Password Policy Requirement

## Bubble Pages&#x20;

* Display (text) - this is the page name
* Roles (List of Roles) - the user roles that are allowed to access this page
* Private? (yes/no) - "yes" means the page is private
  * If a user accesses a Page that is marked as Private, they will be redirected to the index page unless they are logged in to a User whose Role has been added to the Roles for this page

The Canvas Base Template comes with a number of pages. The two private pages are the `account` page, which can be accessed by Standard and App Admin users (but not logged out users), and the `admin` portal page, which can be accessed by by App Admin users.

## Role&#x20;

* Display (text) - this is the role name

By default, your app comes with two roles: `App Admin` and `Standard`.

To add a new role, create a new option in the option set for that role

* New option in Role option set (e.g. Account Admin or Sales)
* Add the new role to the Bubble Pages attribute Roles if they should have permission to access that page.
* Assign the Roles to Users, usually through one of these methods:&#x20;
  * Assign the new Role to users manually in the Bubble Editor's Data tab
  * Build the logic to let App Admins sign those Users up from the admin page
  * Build the logic to assign the new Role to the Users when they're signed up

## Inclusive "yes/no"

This is an option set that works similar to the Bubble "yes/no" data type, but adds a 3rd option that returns true for both yes and no. In short, it works as follows:

* *no* will return results where the field is "no"&#x20;
* *yes* will return results where the field is "yes"
* *yes OR no* will return all results&#x20;

For a more detailed explanation, read on.

When creating searches in Bubble, if you have a constraint on a yes/no field, it will always return either the "yes" options or the "no" options.

![Normal Bubble yes/no](/files/-M3xM3iYgQv8DaDZxeCl)

The above image shows how a search either includes Inactive users or Active users, but not both. Here's the search logic used to produce this result:

![Logic with normal Bubble yes/no (no inclusive yesno option)](/files/-M3xMXuY7doaq97d3_yZ)

&#x20;Here's how this will look when set up with the Inclusive / Exclusive option set.

![Option set yes/no/yesno](/files/-M3xRbYwRTvefSoUqUA4)

![Logic with normal Bubble yes/no (no inclusive yesno option)](/files/-M3xQWpvt5ahCo6GprqS)

For a demonstration of how to use this in a real app, check out the Dropdown Users on the admin page of the Canvas Base Template.

The performance of these searches seemed to be about the same in our tests. Please let us know if you notice anything different.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.airdev.co/canvas/3.0.0-1/canvas-functionality/reference/option-sets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
