[
  {
    "id": "oj-c.SelectSingle",
    "name": "SelectSingle",
    "memberof": "oj-c",
    "kind": "class",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "ojcomponent": true,
    "isvcomponent": true,
    "since": "14.0.0",
    "longname": "oj-c.SelectSingle",
    "pack": "oj-c",
    "classdesc": "<h3 id=\"selectSingleOverview-section\">\n  JET Select Single\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#selectSingleOverview-section\"></a>\n</h3>\n<p>Description: JET Select Single provides support for single-select and search filtering.</p>\n\n<p>A JET Select Single can be created with the following markup.</p>\n\n<pre class=\"prettyprint\"><code>\n&lt;oj-c-select-single data=\"[[dataProvider]]\" item-text=\"label\" label-hint=\"Select Single\">\n&lt;/oj-c-select-single>\n</code></pre>\n\n<h4>Data</h4>\n<p>The only way to provide data to JET Select Single is through a\n<a href=\"DataProvider.html\">DataProvider</a>. For cases with\na small set of fixed data, use an <a href=\"ArrayDataProvider.html\">ArrayDataProvider</a>.</p>\n\n<h3 id=\"diff-section\">\n  Differences between Select and Combobox components\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#diff-section\"></a>\n</h3>\n\n<p>\noj-c-select-* components and oj-combobox-* components may look and feel similar,\nbut these components are different and are intended for very different use cases.\n</p>\n\n<p>\nWhile oj-c-select-* components allow a user to filter the data in the dropdown,\nit is not possible to enter values that are not available in the data.\nThis makes oj-c-select-* components ideal for usecases where the user can only\nselect values that are available in the dropdown, but not provide custom\nvalues of their own.\n</p>\n\n<p>\nIn contrast, oj-combobox-* components allow a user to enter new values that are\nnot available in the data in addition to using the text field for filtering dropdown data.\nThis makes oj-combobox-* components ideal for usecases where the users can provide\ncustom values in addition to those that are already available in the dropdown data.\n</p>\n\n<p>\nApplication developers should consider the above differences when choosing between\nSelect and Combobox components.\nAdditionally, applications are advised to use oj-c-select-single instead of oj-select-single.\n</p>\n\n<h3 id=\"disableditems-section\">\n  Disabled Items\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#disableditems-section\"></a>\n</h3>\n\n<p>\nDisabled items are not supported in oj-c-select-* components; items that aren't selectable\nshould be removed rather than shown as disabled. Keep in mind disabled items usually don't pass\ncontrast and therefore people with low vision can't see them, so for accessibility reasons\nyou can't use disabled for \"meaningful content\".\n</p>\n\n<h3 id=\"validation-section\">\n  Validation and Messaging\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#validation-section\"></a>\n</h3>\n\n<p>\nFor components that support validators, any invalid values entered by the user are not pushed into the value\nif validation fails: the <a href=\"#valid\">valid property</a> will change but the original value will remain unchanged.\nThe same thing applies to required validation: if required is set to true and the user clears the field,\nvalid will change, but empty values will not be pushed so the original value remains unchanged.\n</p>\n<p>\nUse <a href=\"../jetCookbook.html?component=validationGroup&demo=requiredFieldValidation\">\n&lt;oj-validation-group></a> to handle tracking valid across multiple components.\n</p>\n\n<p>\nAn editable component runs validation (normal or deferred) based on the action performed on it\n(either by end-user or page author), and the state it was in when the action occurred. Examples\nof actions are - creating a component, user changing the value of the component by interacting\nwith it, the app setting a value programmatically, the app calling the validate() method etc. At\nthe time the action occurs, the component could already be showing errors, or can have a deferred\nerror or have no errors.\n</p>\n<p>\nThese factors also determine whether validation errors/messages get shown to the user immediately\nor get deferred. The following sections highlight the kinds of validation that are run and how\nmessages get handled.\n</p>\n\n<h4 id=\"normal-validation-section\">\n  Normal Validation\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#normal-validation-section\"></a>\n</h4>\nNormal validation is run in the following cases on the display value, using the converter and\nvalidators (this includes async-validators) set on the component (for components that support these properties),\nand validation errors are reported to user immediately.\n<ul>\n<li>When value changes as a result of user interaction all messages are cleared, including custom\nmessages added by the app, and full validation is run on the UI value. The steps performed are\noutlined below.\n<ol>\n<li>All messages are cleared and <code class=\"prettyprint\">messagesCustom</code> property is cleared</li>\n<li>If no converter is present then processing continues to next step. If a converter is\npresent, the UI value is first converted (i.e., parsed). If there is a parse error then\nthe messages are shown and processing returns.</li>\n<li>If there are no validators setup for the component then the value is set on the component.\nOtherwise all validators are run in sequence using the parsed value from the previous step. The\nimplicit required is run first if the component is marked required. When a validation error is\nencountered it is remembered and the next validator in the sequence is run.\n<ul><li>NOTE: The value is trimmed before required validation is run</li></ul>\n</li>\n<li>At the end of the validation run if there are errors, the messages are shown\nand processing returns. If there are async-validators, those errors are shown as soon as they\ncome in, and not until all validators, sync and async validators, are complete, does processing\nreturn, that is, value and valid are updated. If there are no errors, then the\n<code class=\"prettyprint\">value</code> property is updated and the formatted value displayed on the\nUI.</li>\n</ol>\n</li>\n<li>When the <code class=\"prettyprint\">validate</code> method is called by app, all messages are\ncleared and full validation run using the display value. See <code class=\"prettyprint\">validate</code>\nmethod on the sub-classes for details. Note: JET validation is designed to catch user input errors, and not invalid\ndata passed from the server; this should be caught on the server.</li>\n<li>When certain properties change through programmatic intervention by app, the component\ndetermines whether it needs to run normal validation based on the state the component is in.\nRefer to the <a href=\"#mixed-validation-section\">Mixed Validation</a> section below for details. </li>\n</ul>\n\n<h4 id=\"deferred-validation-section\">\n  Deferred Validation\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#deferred-validation-section\"></a>\n</h4>\nDeferred validation is run in the following cases on the component value using the implicit\nrequired validator if required is true, and validation errors are deferred, i.e., not shown to user immediately.\nRefer to the <a href=\"#deferred-messages-section\">Showing Deferred Messages</a> section to\nunderstand how deferred messages can be shown.\n<ul>\n <li>When a component is created and it is required deferred validation is run and no messages are cleared\n prior to running validation.\n Refer to the <a href=\"#deferred-validators-section\">Validators\n Participating in Deferred Validation</a> section for details.</li>\n <li>When the <code class=\"prettyprint\">value</code> property changes due to programmatic\n intervention deferred validation is run, after all messages and messagesCustom property are cleared.</li>\n <li>When the <code class=\"prettyprint\">reset</code> method is called, deferred validation is run\n  after all messages and messagesCustom property are cleared.</li>\n <li>When certain properties change through programmatic intervention by app, the component\n determines whether it needs to run deferred validation based on the state the component is in.\n Refer to the <a href=\"#mixed-validation-section\">Mixed Validation</a> section below for details.</li>\n</ul>\n\n<h4 id=\"mixed-validation-section\">\n  Mixed Validation\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#mixed-validation-section\"></a>\n</h4>\nEither deferred or normal validation is run in the following cases based on the state the\ncomponent is in and any validation errors encountered are either hidden or shown to user.\n<ul>\n <li>when disabled property changes. See <a href=\"#disabled\">disabled</a> property for details.</li>\n <li>when converter property changes (for components that support converters). See <a href=\"#converter\">converter</a> property for details.</li>\n <li>when required property changes. See <a href=\"#required\">required</a> property for details.</li>\n <li>when validators property changes (for components that support validators). See <a href=\"#validators\">validators</a> property for details.</li>\n</ul>\n\n<h3 id=\"deferred-messages-section\">\n  Showing Deferred Messages\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#deferred-messages-section\"></a>\n</h3>\nDeferred validation messages are displayed only when page author requests for it explicitly in\none of the following ways:\n<ul>\n<li>calls the <a href=\"#showMessages\"><code class=\"prettyprint\">showMessages</code></a> method on the component</li>\n</ul>\n\n<h3 id=\"deferred-validators-section\">\n  Validators Participating in Deferred Validation\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#deferred-validators-section\"></a>\n</h3>\nThe required validator is the only validator type that participates in deferred validation.\nThe required property needs to be set to true for the required validator to run.\n\n<h3 id=\"user-assistance-text-section\">\n  User Assistance Text\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#user-assistance-text-section\"></a>\n</h3>\n<p>\nUser assistive text provides guidance to help the user understand what data to enter or select.\n</p>\n<p>\nBy default all user assistance text shows inline.\nFor input components, it shows when the field takes focus. In other components\nit shows all the time. See the user-assistance-density property for other ways\nthe user assistance text can render, like in 'compact' mode, it will render as an icon on the label\nwhich when clicked will show the user assistance text in a notewindow.\n</p>\n<p>\nThe JET form component properties that are used for user assistance text are help.instruction,\nvalidator and converter hints (for components that support these properties), and help-hints.\nIn the Redwood theme for clarity only one user assistance text shows to the user.\nThe precedence rules are:\n<ul>\n<li>help.instruction shows;</li>\n<li>if no help.instruction, then validator hint shows;</li>\n<li>if no help.instruction or validator hint, then help-hints.definition shows;</li>\n<li>if no help.instruction, validator hint, or help-hints.definition, then converter hint shows.</li>\n<li>help-hints.source always shows along side the above.</li>\n</ul>\n</p>\n<p>For components that support validators or converters, sometimes a hint shows that you do not want to show. To not show it,\n set the display-options.validator-hint and/or display-options.converter-hint property to 'none'.\n</p>\n<p>The required and placeholder properties also can be used to guide the user.\nIn Redwood, a required field shows the word Required under the field\nwhen the field is empty and does not have focus.\nPlaceholder is shown when the field is empty and has focus.\n</p>\n\n<h3 id=\"touch-section\">\n  Touch End User Information\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#touch-section\"></a>\n</h3>\n\n<table class=\"keyboard-table\">\n  <thead>\n    <tr>\n      <th>Target</th>\n      <th>Gesture</th>\n      <th>Action</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>Tap</kbd></td>\n      <td> If the dropdown is not open, expand the dropdown list.\n      If hints, title or messages exist in a notewindow,\n       pop up the notewindow.</td>\n    </tr>\n    <tr>\n      <td>Arrow button</td>\n      <td><kbd>Tap</kbd></td>\n      <td> If the dropdown is not open, expand the dropdown list. Otherwise, close the dropdown list.</td>\n    </tr>\n    <tr>\n      <td>Option item</td>\n      <td><kbd>Tap</kbd></td>\n      <td> Tap on an option item in the dropdown list to select.</td>\n    </tr>\n  </tbody>\n</table>\n\n<h3 id=\"keyboard-section\">\n  Keyboard End User Information\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#keyboard-section\"></a>\n</h3>\n\n<table class=\"keyboard-table\">\n  <thead>\n    <tr>\n      <th>Target</th>\n      <th>Key</th>\n      <th>Action</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>Option item</td>\n      <td><kbd>Enter or Space</kbd></td>\n      <td> Select the highlighted choice from the dropdown and close the dropdown.</td>\n    </tr>\n    <tr>\n      <td>Option item</td>\n      <td><kbd>Tab</kbd></td>\n      <td> Select the highlighted choice from the dropdown and transfer focus to the next\n        tabbable element on the page.</td>\n    </tr>\n    <tr>\n      <td>Option item (when showing Add to list or Advanced search link)</td>\n      <td><kbd>Tab</kbd></td>\n      <td> Keeps the choice highlighted and transfer focus to the Add to list or Advanced search link.</td>\n    </tr>\n    <tr>\n      <td>Add to list or Advanced search link</td>\n      <td><kbd>Enter</kbd></td>\n      <td> Triggers the ojAddToListAction or the ojAdvancedSearchAction and closes the dropdown.</td>\n    </tr>\n    <tr>\n      <td>Add to list or Advanced search link</td>\n      <td><kbd>Tab</kbd></td>\n      <td> Select the highlighted choice from the dropdown and transfer focus to the next\n        tabbable element on the page.</td>\n    </tr>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>Esc</kbd></td>\n      <td> Collapse the dropdown list. If the dropdown is already closed, do nothing.</td>\n    </tr>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>Enter</kbd></td>\n      <td> If the selected value text has been deleted, clear the value and close the dropdown.\n        If filtering, select the highlighted choice from the dropdown and close the\n        dropdown.</td>\n    </tr>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>Tab</kbd></td>\n      <td> If the selected value text has been deleted, clear the value and transfer focus\n        to the next tabbable element on the page. If filtering, select the highlighted choice\n        from the dropdown and transfer focus to the next tabbable element on the page.</td>\n    </tr>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>UpArrow or DownArrow</kbd></td>\n      <td> If the dropdown is not open, expand the dropdown list.  Otherwise, transfer\n        focus into the dropdown list.</td>\n    </tr>\n    <tr>\n      <td>Dropdown</td>\n      <td><kbd>UpArrow or DownArrow</kbd></td>\n      <td> Highlight the option item in the dropdown list in the direction of the arrow.</td>\n    </tr>\n    <tr>\n      <td>Dropdown</td>\n      <td><kbd>Esc</kbd></td>\n      <td> Collapse the dropdown list.</td>\n    </tr>\n    <tr>\n      <td>Select</td>\n      <td><kbd>Tab In</kbd></td>\n      <td>Set focus to the Select. If hints, title or messages exist in a notewindow,\n       pop up the notewindow.</td>\n    </tr>\n  </tbody>\n</table>\n\n<h3 id=\"perf-section\">\n  Performance\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#perf-section\"></a>\n</h3>\n\n<h4>Page Load</h4>\n<p>If there is an initially selected value, setting the <a href=\"#valueItem\">valueItem</a> attribute initially can improve page load performance because the element will not have to fetch the selected data from the data provider.</p>\n<p>The dropdown data isn't fetched until the user opens the dropdown.</p>\n\n<h3 id=\"a11y-section\">\n  Accessibility\n  <a class=\"bookmarkable-link\" title=\"Bookmarkable Link\" href=\"#a11y-section\"></a>\n</h3>\n\n<p>\nFor accessibility, set the <a href=\"#labelHint\">label-hint</a> property.\nIf there is no visible label, then to make this accessible to screen reader users,\nset the <a href=\"#labelHint\">label-hint</a> and <a href=\"#labelEdge\">label-edge</a>='none'\nwhich renders an aria-label with the label-hint text.\n</p>\n\n<p>\nThe placeholder text is not read reliably by the screen reader. For accessibility reasons,\nyou need to associate the text to its JET form component using aria-describedby.\n</p>\n\n<p>\nDisabled content: JET supports an accessible luminosity contrast ratio,\nas specified in <a href=\"http://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\">WCAG 2.0 - Section 1.4.3 \"Contrast\"</a>,\nin the themes that are accessible.  (See the \"Theming\" chapter of the JET Developer Guide for more information on which\nthemes are accessible.)  Note that Section 1.4.3 says that text or images of text that are part of an inactive user\ninterface component have no contrast requirement.  Because disabled content may not meet the minimum contrast ratio\nrequired of enabled content, it cannot be used to convey meaningful information.\n</p>",
    "scope": "static",
    "tagWithoutBrackets": "oj-c-select-single",
    "tagWithBrackets": "<oj-c-select-single>",
    "domInterface": "CSelectSingleElement",
    "ojPageTitle": "&lt;oj-c-select-single>",
    "camelCaseName": "SelectSingle",
    "ojPageTitlePrefix": "Element: ",
    "ojtsvcomponent": true,
    "tstype": {
      "target": "Type",
      "value": "interface CSelectSingleElement<V extends string | number,D extends Record<string, any>> extends JetElement<SelectSingleElementSettableProperties<V,D>>"
    },
    "ojsignature": [
      {
        "target": "Type",
        "value": "interface CSelectSingleElement<V extends string | number,D extends Record<string, any>> extends JetElement<SelectSingleElementSettableProperties<V,D>>"
      }
    ],
    "tsdeprecated": [
      {
        "type": "supersedes",
        "since": "19.0.0",
        "value": [
          "oj-select-single",
          "oj-combobox-one"
        ]
      }
    ],
    "extension": {
      "catalog": {
        "category": "Forms"
      },
      "vbdt": {
        "module": "oj-c/select-single",
        "defaultColumns": 6,
        "minColumns": 2
      },
      "oracle": {
        "icon": "oj-ux-ico-select",
        "uxSpecs": [
          "select-single-items"
        ]
      }
    },
    "ojmodule": "select-single"
  },
  {
    "id": "oj-c.SelectSingle#addToList",
    "name": "addToList",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#addToList",
    "scope": "instance",
    "type": {
      "names": [
        "\"off\"",
        "\"on\""
      ]
    },
    "optional": true,
    "ojdisplayname": "Add to List",
    "ojshortdesc": "Specifies whether the add to list link is shown in the dropdown when the user filters.",
    "description": "<p>\nSpecifies whether the add to list link is shown in the dropdown when the user filters.\nIt is up to the application to show its own UI when the link is triggered.\n</p>\n<p>\nAdvanced search and Add to list should not be enabled at the same time. If both are on, advanced search will take precedence\nbecause its external UI could also potentially include the ability to add to list.\n</p>",
    "defaultvalue": "'off'"
  },
  {
    "id": "oj-c.SelectSingle#advancedSearch",
    "name": "advancedSearch",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#advancedSearch",
    "scope": "instance",
    "type": {
      "names": [
        "\"off\"",
        "\"on\""
      ]
    },
    "optional": true,
    "ojdisplayname": "Advanced Search",
    "ojshortdesc": "Specifies whether the advanced search link is shown in the dropdown when the user filters.",
    "description": "<p>\nSpecifies whether the advanced search link is shown in the dropdown when the user filters.\nIt is up to the application to show its own UI when the link is triggered.\n</p>\n<p>\nAdvanced search and Add to list should not be enabled at the same time. If both are on, advanced search will take precedence\nbecause its external UI could also potentially include the ability to add to list.\n</p>",
    "defaultvalue": "'off'"
  },
  {
    "id": "oj-c.SelectSingle#columnSpan",
    "name": "columnSpan",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#columnSpan",
    "scope": "instance",
    "type": {
      "names": [
        "number"
      ]
    },
    "optional": true,
    "ojdisplayname": "Column Span",
    "ojshortdesc": "Specifies how many columns this component should span.",
    "description": "Specifies how many columns this component should span.\nThis only takes effect when this component is a child of a form layout\nthat has direction 'row'.",
    "defaultvalue": 1
  },
  {
    "id": "oj-c.SelectSingle#containerReadonly",
    "name": "containerReadonly",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#containerReadonly",
    "scope": "instance",
    "type": {
      "names": [
        "boolean"
      ]
    },
    "optional": true,
    "ojdisplayname": "Container Readonly",
    "ojshortdesc": "Specifies whether an ancestor container, like oj-c-form-layout, is readonly.",
    "description": "Specifies whether an ancestor container, like oj-c-form-layout, is readonly.\nThis affects whether a readonly component renders in full or mixed readonly mode.\nThis is also currently used to determine if there is an ancestor container by checking if the value\nis not equal to undefined."
  },
  {
    "id": "oj-c.SelectSingle#data",
    "name": "data",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#data",
    "scope": "instance",
    "type": {
      "names": [
        "DataProvider|null"
      ]
    },
    "optional": true,
    "ojdisplayname": "Data",
    "ojshortdesc": "The data source for SelectSingle.",
    "description": "The data for the Select Single.",
    "defaultvalue": null,
    "tstype": [
      {
        "target": "Type",
        "value": "DataProvider<V, D>|null",
        "jsdocOverride": true,
        "module": {
          "DataProvider": "ojdataprovider"
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#disabled",
    "name": "disabled",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#disabled",
    "scope": "instance",
    "type": {
      "names": [
        "boolean"
      ]
    },
    "optional": true,
    "ojdisplayname": "Disabled",
    "ojshortdesc": "Specifies whether the component is disabled.",
    "description": "Whether the component is disabled. The default is false.\n\n<p>\nWhen the <code class=\"prettyprint\">disabled</code> property changes due to programmatic\nintervention, the component may clear messages and run validation in some cases. </br>\n<ul>\n<li>when a required component is initialized as disabled\n<code class=\"prettyprint\">value=\"{{currentValue}}\" required disabled</code>,\ndeferred validation is skipped.</li>\n<li>when a disabled component is enabled,\n <ul>\n <li>if component is invalid and showing messages then all component messages are cleared,\n and full validation run using the display value.\n  <ul>\n   <li>if there are validation errors, they are shown.</li>\n   <li>if no errors result from the validation, the <code class=\"prettyprint\">value</code>\n   property is updated. Page authors can listen to the <code class=\"prettyprint\">valueChanged</code>\n   event to clear custom errors.</li>\n  </ul>\n </li>\n\n <li>if component is valid and has no errors then deferred validation is run.\n   <ul>\n   <li>if there is a deferred validation error, then the valid property is updated. </li>\n   </ul>\n </li>\n <li>if component is invalid and deferred errors then component messages are cleared and\n deferred validation re-run.\n   <ul>\n   <li>if there is a deferred validation error, then the valid property is updated.</li>\n   </ul>\n </li>\n </ul>\n</li>\n<li>when enabled component is disabled then no validation is run and the component appears\ndisabled.</li>\n</ul>\n</p>",
    "defaultvalue": false
  },
  {
    "id": "oj-c.SelectSingle#displayOptions",
    "name": "displayOptions",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#displayOptions",
    "scope": "instance",
    "type": {
      "names": [
        "object"
      ]
    },
    "optional": true,
    "ojdisplayname": "Display Options",
    "description": "Display options for auxiliary content that determines whether or not it should be displayed.",
    "tstype": [
      {
        "target": "Type",
        "value": "oj-c.SelectSingle.DisplayOptionsProps",
        "jsdocOverride": true
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#help",
    "name": "help",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#help",
    "scope": "instance",
    "type": {
      "names": [
        "object"
      ]
    },
    "optional": true,
    "ojdisplayname": "Help",
    "description": "Form component help information.",
    "tstype": [
      {
        "target": "Type",
        "value": "oj-c.SelectSingle.Help",
        "jsdocOverride": true
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#helpHints",
    "name": "helpHints",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#helpHints",
    "scope": "instance",
    "type": {
      "names": [
        "object"
      ]
    },
    "optional": true,
    "ojdisplayname": "Help Hints",
    "description": "The helpHints object contains a definition property and a source property.",
    "tstype": [
      {
        "target": "Type",
        "value": "oj-c.SelectSingle.HelpHints",
        "jsdocOverride": true
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#itemText",
    "name": "itemText",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#itemText",
    "scope": "instance",
    "type": {
      "names": [
        "string|number|function"
      ]
    },
    "optional": false,
    "ojdisplayname": "Item Text",
    "ojshortdesc": "Specifies how to get the text string to render for a data item.",
    "description": "Specifies how to get the text string to render for a data item.\nThis attribute can be set to either:\n<ul>\n<li>a string that specifies the name of a top level data attribute to render as text, or</li>\n<li>a callback function that takes a properties object and returns the text string to\ndisplay</li>\n</ul>\n\n<p>This text will be rendered for the selected value of the component and for each data item\nin the dropdown.  When rendered for the dropdown items, default matching search term\nhighlighting will be applied.</p>",
    "tstype": [
      {
        "target": "Type",
        "value": "keyof D|(itemContext: ItemContext<V, D>) => string",
        "jsdocOverride": true,
        "module": {
          "ItemContext": "ojcommontypes"
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#labelEdge",
    "name": "labelEdge",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#labelEdge",
    "scope": "instance",
    "type": {
      "names": [
        "\"none\"",
        "\"start\"",
        "\"top\"",
        "\"inside\""
      ]
    },
    "optional": true,
    "ojdisplayname": "Label Edge",
    "ojshortdesc": "Specifies how the label is positioned for the component",
    "description": "Specifies how the label of the component is positioned when the label-hint\nattribute is set on the component.",
    "ojvalues": [
      {
        "name": "inside",
        "description": "The label floats over the input element, but moves up on focus or when the component has a value (default, if unspecified).",
        "displayName": "Inside",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "none",
        "description": "The component will not create a label, but instead set the aria-label property on the input element.",
        "displayName": "None",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "start",
        "description": "The label will be placed before the start of the component.",
        "displayName": "Start",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "top",
        "description": "The label will be placed on top of the component.",
        "displayName": "Top",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojvalueskeeporder": true
  },
  {
    "id": "oj-c.SelectSingle#labelHint",
    "name": "labelHint",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#labelHint",
    "scope": "instance",
    "type": {
      "names": [
        "string"
      ]
    },
    "optional": false,
    "ojdisplayname": "Label Hint",
    "ojshortdesc": "Represents a hint for rendering a label on the component.",
    "description": "Represents a hint for rendering a label on the component.\nThis is used in combination with the label-edge attribute to control how the label should be rendered."
  },
  {
    "id": "oj-c.SelectSingle#labelStartWidth",
    "name": "labelStartWidth",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#labelStartWidth",
    "scope": "instance",
    "type": {
      "names": [
        "number|string"
      ]
    },
    "optional": true,
    "ojdisplayname": "Label Start Width",
    "ojshortdesc": "The width of the label when labelEdge is 'start'",
    "description": "<p> The width of the label when labelEdge is 'start'.</p>\n<p> This attribute accepts values of type\n<code>0 | `--${string}` | `${number}%` | `${number}x` | `calc(${string})`</code></p>"
  },
  {
    "id": "oj-c.SelectSingle#labelWrapping",
    "name": "labelWrapping",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#labelWrapping",
    "scope": "instance",
    "type": {
      "names": [
        "\"truncate\"",
        "\"wrap\""
      ]
    },
    "optional": true,
    "ojdisplayname": "Label Wrapping",
    "ojshortdesc": "Should the labels wrap or truncate when there is not enough available space.",
    "description": "Should the labels wrap or truncate when there is not enough available space.",
    "tsdeprecated": [
      {
        "type": "deprecated",
        "since": "18.0.0",
        "description": "Label truncation for 'start' and 'top' aligned labels is no longer recommended by the Redwood Design System. The default for labelWrapping was 'wrap' and that is now the only suggested pattern by UX design for 'start' and 'top' aligned labels. 'inside' aligned labels are always truncated per UX design and are not affected by this property's value."
      }
    ],
    "ojvalues": [
      {
        "name": "truncate",
        "description": "Label will truncate if needed.",
        "displayName": "Truncate",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "wrap",
        "description": "Label will wrap if needed.",
        "displayName": "Wrap",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojvalueskeeporder": true
  },
  {
    "id": "oj-c.SelectSingle#matchBy",
    "name": "matchBy",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#matchBy",
    "scope": "instance",
    "type": {
      "names": [
        "Array<string>|null"
      ]
    },
    "optional": true,
    "ojdisplayname": "Match By",
    "ojshortdesc": "List of text filter matching behaviors to use when filtering.",
    "description": "The list of <a href=\"TextFilter.html#matchBy\">TextFilter.matchBy</a> behaviors to use\nwhen fetching data filtered by a user's typed search text, in order of descending priority\nwith the preferred behavior first.\nIf the preferred behavior is not supported by the DataProvider, then the component will\ncheck the next behavior, and so on, until it finds one that is supported.\nIf none of the specified behaviors are supported or if this property is not specified,\nthen the behavior will effectively be \"unknown\".",
    "defaultvalue": null
  },
  {
    "id": "oj-c.SelectSingle#maxWidth",
    "name": "maxWidth",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#maxWidth",
    "scope": "instance",
    "type": {
      "names": [
        "number|string"
      ]
    },
    "optional": true,
    "ojdisplayname": "Max Width",
    "ojshortdesc": "The max width of the control.",
    "description": "Specifies the component's max width.  If unset, the default max width is 100%.",
    "ojvalues": [
      {
        "name": "sm",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "md",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojvalueskeeporder": true,
    "tstype": [
      {
        "target": "Type",
        "value": "number|string|\"sm\"|\"md\"",
        "jsdocOverride": true
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#messagesCustom",
    "name": "messagesCustom",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#messagesCustom",
    "scope": "instance",
    "type": {
      "names": [
        "Array<object>"
      ]
    },
    "optional": true,
    "ojdisplayname": "Messages Custom",
    "ojwriteback": true,
    "ojshortdesc": "List of custom component messages",
    "description": "List of messages an app would add to the component when it has business/custom validation\nerrors that it wants the component to show. This allows the app to perform further validation\nbefore sending data to the server. When this option is set the message shows to the\nuser right away. To clear the custom message, set <code class=\"prettyprint\">messagesCustom</code>\nback to an empty array.<br/>\n<p>\nSee the <a href=\"#validation-section\">Validation and Messages</a> section\nfor details on when the component clears <code class=\"prettyprint\">messagesCustom</code>;\nfor example, when full validation is run.\n</p>",
    "defaultvalue": "[]",
    "tstype": [
      {
        "target": "Type",
        "value": "Array<oj-c.SelectSingle.ComponentMessageItem>",
        "jsdocOverride": true
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#placeholder",
    "name": "placeholder",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#placeholder",
    "scope": "instance",
    "type": {
      "names": [
        "string"
      ]
    },
    "optional": true,
    "ojdisplayname": "Placeholder",
    "description": "The placeholder text to set on the element."
  },
  {
    "id": "oj-c.SelectSingle#readonly",
    "name": "readonly",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#readonly",
    "scope": "instance",
    "type": {
      "names": [
        "boolean"
      ]
    },
    "optional": true,
    "ojdisplayname": "Readonly",
    "ojshortdesc": "Whether the component is readonly",
    "description": "<p>\nWhether the component is readonly. The readonly property sets or returns whether an element\nis readonly, or not. A readonly element cannot be modified. However, a user can tab to it,\nhighlight it, focus on it, and copy the text from it. If you want to prevent the user from\ninteracting with the element, use the disabled property instead.\n</p>\n<p>\nIf the property value is not set either directly on the component or inherited from\na parent form layout, then the property is treated as if its value were false.\n</p>"
  },
  {
    "id": "oj-c.SelectSingle#readonlyUserAssistanceShown",
    "name": "readonlyUserAssistanceShown",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#readonlyUserAssistanceShown",
    "scope": "instance",
    "type": {
      "names": [
        "\"none\"",
        "\"confirmationAndInfoMessages\""
      ]
    },
    "optional": true,
    "ojdisplayname": "ReadonlyUserAssistanceShown",
    "ojshortdesc": "Specifies which user assistance types should be shown when the component is readonly.",
    "description": "<p>\nSpecifies which user assistance types should be shown when the component is readonly.\n</p>",
    "defaultvalue": "'none'"
  },
  {
    "id": "oj-c.SelectSingle#required",
    "name": "required",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#required",
    "scope": "instance",
    "type": {
      "names": [
        "boolean"
      ]
    },
    "optional": true,
    "ojdisplayname": "Required",
    "ojshortdesc": "Specifies whether or not the component is required.",
    "description": "<p>\nThis property set to <code class=\"prettyprint\">false</code> implies that a value is not required to be provided by the user.\nThis is the default.\nThis property set to <code class=\"prettyprint\">true</code> implies that a value is required to be provided by the user.\n</p>\n<p>\nIn the Redwood theme, by default, a Required text is rendered inline when the field is empty.\nIf user-assistance-density is 'compact', it will show on the label as an icon.\n</p>\n<p>The Required error text is based on Redwood UX designs, and it is not recommended that\nit be changed.\nTo override the required error message,\nuse the <code class=\"prettyprint\">required-message-detail</code> attribute.\nThe component's label text is passed in as a token {label} and can be used in the message detail.\n</p>\n<p>When required is set to true, an implicit\nrequired validator is created, i.e.,\n<code class=\"prettyprint\">new RequiredValidator()</code>. The required validator is the only\nvalidator to run during initial render, and its error is not shown to the user at this time;\nthis is called deferred validation. The required validator also runs during normal validation;\nthis is when the errors are shown to the user.\nSee the <a href=\"#validation-section\">Validation and Messaging</a> section for details.\n</p>\n<p>\nWhen the <code class=\"prettyprint\">required</code> property changes due to programmatic intervention,\nthe component may clear component messages and run validation, based on the current state it's in. </br>\n\n<h4>Running Validation when required property changes</h4>\n<ul>\n<li>if component is valid when required is set to true, then it runs deferred validation on\nthe value property. If the field is empty, the valid state is invalidHidden. No errors are\nshown to the user.\n</li>\n<li>if component is valid when required is set from true to false, then no validation is run.\n</li>\n<li>if component is invalid and has deferred messages (invalidHidden) when required is set to false, then\ncomponent messages are cleared (messages-custom messages are not cleared)\nbut no deferred validation is run because required is false.\n</li>\n<li>if component is invalid and currently showing invalid messages (invalidShown) when required is changed\nto either true or false, then\ncomponent messages are cleared and normal validation is run using the current display value.\n<ul>\n  <li>if there are validation errors, then <code class=\"prettyprint\">value</code>\n  property is not updated and the error is shown.\n  </li>\n  <li>if no errors result from the validation, the <code class=\"prettyprint\">value</code>\n  property is updated; page author can listen to the <code class=\"prettyprint\">valueChanged</code>\n  event on the component to clear custom errors.</li>\n</ul>\n</li>\n</ul>\n\n<h4>Clearing Messages when required property changes</h4>\n<ul>\n<li>Only messages created by the component, like validation messages, are cleared when the required property changes.</li>\n<li><code class=\"prettyprint\">messagesCustom</code> property is not cleared.</li>\n</ul>\n\n</p>",
    "defaultvalue": false
  },
  {
    "id": "oj-c.SelectSingle#requiredMessageDetail",
    "name": "requiredMessageDetail",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#requiredMessageDetail",
    "scope": "instance",
    "type": {
      "names": [
        "string"
      ]
    },
    "optional": true,
    "ojdisplayname": "Required Message Detail",
    "ojshortdesc": "Overrides the default Required error message.",
    "description": "<p>\nThe component-specific message detail when the required validation fails.\nIf the component needs a required validation error message that is different from the default,\nset this property. It should be a translated string.\n</p>"
  },
  {
    "id": "oj-c.SelectSingle#textAlign",
    "name": "textAlign",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#textAlign",
    "scope": "instance",
    "type": {
      "names": [
        "\"end\"",
        "\"start\"",
        "\"right\""
      ]
    },
    "optional": true,
    "ojdisplayname": "Text Align",
    "description": "Specifies how the text is aligned within the text field",
    "ojvalues": [
      {
        "name": "start",
        "description": "Aligns text left when reading direction is ltr and right when reading direction is rtl (default, if unspecified).",
        "displayName": "Start",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "end",
        "description": "Aligns text right when reading direction is ltr and left when reading direction is rtl.",
        "displayName": "End",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "right",
        "description": "Aligns text right regardless of reading direction, often used for numbers.",
        "displayName": "Right",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojvalueskeeporder": true
  },
  {
    "id": "oj-c.SelectSingle#userAssistanceDensity",
    "name": "userAssistanceDensity",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#userAssistanceDensity",
    "scope": "instance",
    "type": {
      "names": [
        "\"compact\"",
        "\"reflow\"",
        "\"efficient\""
      ]
    },
    "optional": true,
    "ojdisplayname": "User Assistance Density",
    "ojshortdesc": "Specifies the density of the form component's user assistance presentation.",
    "description": "<p>\nSpecifies the density of the form component's user assistance presentation. It can be shown inline with\nreserved rows to prevent reflow if a user assistance text shows up, inline without reserved rows that would\nreflow if a user assistance text shows up, or it can be shown compactly in a popup instead.\n</p>\n<p>\nIf the property value is not set either directly on the component or inherited from\na parent form layout, then the property is treated as if its value were \"reflow\".\n</p>",
    "ojvalues": [
      {
        "name": "reflow",
        "description": "Messages, help, hints, and required are all shown inline under the field with no reserved space.",
        "displayName": "Reflow",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "efficient",
        "description": "Messages, help, hints, and required are all shown inline under the field with reserved space.",
        "displayName": "Efficient",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "compact",
        "description": "Messages, help, hints, and required will not be shown inline; they will show in a mode that keeps the screen more compact, like a popup for the messages, and a required icon to indicate Required.",
        "displayName": "Compact",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojvalueskeeporder": true
  },
  {
    "id": "oj-c.SelectSingle#value",
    "name": "value",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#value",
    "scope": "instance",
    "type": {
      "names": [
        "string|number|null"
      ]
    },
    "optional": true,
    "ojdisplayname": "Value",
    "ojwriteback": true,
    "ojshortdesc": "The value of the component.",
    "description": "The value of the component.\n\n<p>\nWhen the <code class=\"prettyprint\">value</code> property changes due to programmatic\nintervention, the component always clears all messages\nincluding <code class=\"prettyprint\">messagesCustom</code>, runs deferred validation, and\nalways refreshes the UI display value.</br>\n\n<h4>Running Validation</h4>\n<ul>\n<li>component always runs deferred validation; the\n<code class=\"prettyprint\">valid</code> property is updated with the result.</li>\n</ul>\n</p>",
    "defaultvalue": null,
    "tstype": [
      {
        "target": "Type",
        "value": "V|null",
        "jsdocOverride": true
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#valueItem",
    "name": "valueItem",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#valueItem",
    "scope": "instance",
    "type": {
      "names": [
        "object|null"
      ]
    },
    "optional": true,
    "ojdisplayname": "Value Item",
    "ojwriteback": true,
    "ojshortdesc": "The current value of the element and its associated data.",
    "description": "The <code class=\"prettyprint\">valueItem</code> is similar to the\n<code class=\"prettyprint\">value</code>, but is a an object that\ncontain both a key and data, and optional metadata.\nThe key will be set as the <code class=\"prettyprint\">value</code> of the element.\nThe <code class=\"prettyprint\">value</code> and <code class=\"prettyprint\">valueItem</code>\nare kept in sync, both during programmatic property sets as well as during interactive user\nselection.\nIf initially both are set, the selected value in the <code class=\"prettyprint\">value</code>\nattribute have precedence.\n<p>Note: If there is an initial selection, setting it via the\n<code class=\"prettyprint\">valueItem</code> attribute initially can improve page load\nperformance because the element will not have to fetch the selected data from the data\nprovider.</p>\n<p>If <code class=\"prettyprint\">valueItem</code> is not specified or the selected value is\nmissing, then the selected data will be fetched from the data provider.</p>\n\n<p>\nNote: Setting the initial <code class=\"prettyprint\">valueItem</code> will internally set\nthe component’s <code class=\"prettyprint\">value</code>, which will trigger a\n<code class=\"prettyprint\">valueChanged</code> event. It may not be possible to distinguish\nthis from an event triggered by user interaction. If you need to be notified only for\nselections caused by user interactions, consider using the <code class=\"prettyprint\">ojValueAction</code>\nevent instead. However, note that this event will also be triggered when the same value is selected again.\n</p>",
    "defaultvalue": null,
    "tstype": [
      {
        "target": "Type",
        "value": "ItemContext<V, D>|null",
        "jsdocOverride": true,
        "module": {
          "ItemContext": "ojcommontypes"
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#virtualKeyboard",
    "name": "virtualKeyboard",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#virtualKeyboard",
    "scope": "instance",
    "type": {
      "names": [
        "\"number\"",
        "\"search\"",
        "\"auto\"",
        "\"url\"",
        "\"text\"",
        "\"email\"",
        "\"tel\""
      ]
    },
    "optional": true,
    "ojdisplayname": "Virtual Keyboard",
    "ojshortdesc": "The type of virtual keyboard to display for entering a value on mobile browsers",
    "description": "The type of virtual keyboard to display for entering a value on mobile browsers. This attribute has no effect on desktop browsers.",
    "ojvalues": [
      {
        "name": "number",
        "description": "Use a mobile virtual keyboard for entering numbers. Note that on Android and Windows Mobile, the 'number' keyboard does not contain the minus sign. This value should not be used on fields that accept negative values.",
        "displayName": "Number",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "auto",
        "description": "The component will determine the best mobile virtual keyboard to use (default, if unspecified).",
        "displayName": "Auto",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "email",
        "description": "Use a mobile virtual keyboard for entering email addresses.",
        "displayName": "Email",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "search",
        "description": "Use a mobile virtual keyboard for entering search terms.",
        "displayName": "Search",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "tel",
        "description": "Use a mobile virtual keyboard for entering telephone numbers.",
        "displayName": "Tel",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "text",
        "description": "Use a mobile virtual keyboard for entering text.",
        "displayName": "Text",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "url",
        "description": "Use a mobile virtual keyboard for URL entry.",
        "displayName": "URL",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojvalueskeeporder": true,
    "defaultvalue": "'auto'"
  },
  {
    "id": "oj-c.SelectSingle#width",
    "name": "width",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#width",
    "scope": "instance",
    "type": {
      "names": [
        "number|string"
      ]
    },
    "optional": true,
    "ojdisplayname": "Width",
    "ojshortdesc": "The width of the control.",
    "description": "Specifies the component's width.  If unset, the default width is 100%.\nNote that by default max-width is 100%, which will override the width if the container is smaller than the width specified.",
    "ojvalues": [
      {
        "name": "sm",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "md",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojvalueskeeporder": true,
    "tstype": [
      {
        "target": "Type",
        "value": "number|string|\"sm\"|\"md\"",
        "jsdocOverride": true
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#valid",
    "name": "valid",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#valid",
    "scope": "instance",
    "type": {
      "names": [
        "\"pending\"",
        "\"valid\"",
        "\"invalidHidden\"",
        "\"invalidShown\""
      ]
    },
    "optional": true,
    "ojdisplayname": "Valid",
    "ojwriteback": true,
    "readonly": true,
    "ojshortdesc": "Specifies how the valid state of the component",
    "description": "<p>\nThe current valid state of the component. It is evaluated on initial render.\nIt is re-evaluated\n<ul>\n  <li>after each validator (validators or async-validators) is run (full or deferred)</li>\n  <li>when messagesCustom is updated,\n  since messagesCustom can be added by the app developer any time.</li>\n  <li>when showMessages() is called. Since showMessages() moves the\n  hidden messages into messages shown,\n  if the valid state was \"invalidHidden\" then it would become \"invalidShown\".</li>\n  <li>when the required property has changed. If a component is empty and has required\n  set, the valid state may be \"invalidHidden\" (if no invalid messages are being shown as well).\n  If required property is removed, the valid state would change to \"valid\".</li>\n</ul>\n</p>\n<p>\n Note: New valid states may be added to the list of valid values in future releases.\n Any new values will start with \"invalid\"\n if it is an invalid state, \"pending\" if it is pending state,\n and \"valid\" if it is a valid state.\n</p>",
    "ojvalues": [
      {
        "name": "valid",
        "description": "The component is valid",
        "displayName": "Valid",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "pending",
        "description": "The component is waiting for the validation state to be determined. The 'pending' state is set at the start of the convert/validate process.",
        "displayName": "Pending",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "invalidHidden",
        "description": "The component has invalid messages hidden and no invalid messages showing. An invalid message is one with severity 'error'.",
        "displayName": "Invalid Hidden",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "invalidShown",
        "description": "The component has invalid messages showing. An invalid message is one with severity 'error'.",
        "displayName": "Invalid Shown",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojvalueskeeporder": true
  },
  {
    "id": "oj-c.SelectSingle#blur",
    "name": "blur",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#blur",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "ojshortdesc": "Blurs the input field.",
    "description": "Blurs the input field.",
    "ojhidden": true
  },
  {
    "id": "oj-c.SelectSingle#focus",
    "name": "focus",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#focus",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "ojshortdesc": "Focuses the input field.",
    "description": "Focuses the input field.",
    "ojhidden": true
  },
  {
    "id": "oj-c.SelectSingle#showMessages",
    "name": "showMessages",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#showMessages",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "ojshortdesc": "Takes all deferred messages and shows them.",
    "description": "Takes all deferred messages and shows them.\nIt then updates the valid property;\ne.g., if the valid state was \"invalidHidden\" before showMessages(),\nthe valid state will become \"invalidShown\" after showMessages().\nIf there were no deferred messages this method simply returns."
  },
  {
    "id": "oj-c.SelectSingle#reset",
    "name": "reset",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#reset",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "ojshortdesc": "Resets the component by clearing all messages and updating the component's display value using the attribute value.",
    "description": "Resets the component by clearing all messages and messagesCustom attribute\nand updates the component's display value using the attribute value.\nUser entered values will be erased when this method is called."
  },
  {
    "id": "oj-c.SelectSingle#validate",
    "name": "validate",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#validate",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "Promise"
          ]
        },
        "description": "Promise resolves to \"valid\" if there were no converter parse errors and the component\npassed all validations. The Promise resolves to \"valid\" if the component is disabled or readonly.\nThe Promise resolves to \"invalid\" if there were converter\nparse errors or if there were validation errors."
      }
    ],
    "ojshortdesc": "If enabled, validates the component's display value using the converter and all validators registered on the component. The Promise resolves to 'valid' if there were no converter parse errors and the component passed all validations, or if the component is disabled or readonly.",
    "description": "If enabled, validates the component's display value (or null if display value is empty) using the converter and\nall validators registered on the component and updates the value\noption by performing the following steps.\n<ol>\n<li>All messages are cleared, including custom messages added by the app.</li>\n<li>\n If no converter is present then processing continues to next step. If a converter is present,\n the UI value is first converted (i.e., parsed). If there is a parse error then the messages are shown.</li>\n<li>\n If there are no validators setup for the component the value option is updated using the display value.\n Otherwise all validators are run in sequence using the parsed value from the previous step.\n The implicit required validator is run first if the component is marked required.\n When a validation error is encountered it is remembered and the next validator in the sequence is run.\n</li>\n<li>\n At the end of validation if there are errors, the messages are shown.\n If there were no errors, then the value option is updated.\n</li>\n</ol>\n<p>If the component is readonly or disabled, returns a Promise that resolves to 'valid'\nwithout doing any validation.</p>"
  },
  {
    "id": "oj-c.SelectSingle#_doAddToListAction",
    "name": "_doAddToListAction",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#_doAddToListAction",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "ojshortdesc": "This method imitates triggering the add to list link in the dropdown. This is used by the WebElement implementation of oj-c-select-single.\"",
    "description": "This method imitates triggering the add to list link in the dropdown. This is used by the WebElement implementation of oj-c-select-single.\"",
    "params": [
      {
        "name": "searchText",
        "description": "The search text to include in the event",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojhidden": true
  },
  {
    "id": "oj-c.SelectSingle#_doAdvancedSearchAction",
    "name": "_doAdvancedSearchAction",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#_doAdvancedSearchAction",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "ojshortdesc": "This method imitates triggering the advanced search link in the dropdown. This is used by the WebElement implementation of oj-c-select-single.",
    "description": "This method imitates triggering the advanced search link in the dropdown. This is used by the WebElement implementation of oj-c-select-single.",
    "params": [
      {
        "name": "searchText",
        "description": "The search text to include in the event",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ],
    "ojhidden": true
  },
  {
    "id": "oj-c.SelectSingle#_selectItemByValue",
    "name": "_selectItemByValue",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#_selectItemByValue",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "Promise"
          ]
        },
        "description": "A Promise that resolves once the operation is completed"
      }
    ],
    "ojshortdesc": "This method imitates an option selection from the dropdown by using the key of an item. This is used by the WebElement implementation of oj-c-select-single.",
    "description": "This method imitates an option selection from the dropdown by using the key of an item. This is used by the WebElement implementation of oj-c-select-single.",
    "params": [
      {
        "name": "value",
        "description": "The value to be selected",
        "type": {
          "names": [
            "any"
          ]
        }
      }
    ],
    "ojhidden": true
  },
  {
    "id": "oj-c.SelectSingle#UNSAFE_focusAndOpenDropdown",
    "name": "UNSAFE_focusAndOpenDropdown",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#UNSAFE_focusAndOpenDropdown",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "description": "This is an UNSAFE method that focuses the select component and opens the dropdown",
    "ojhidden": true
  },
  {
    "id": "oj-c.SelectSingle#setProperty",
    "name": "setProperty",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#setProperty",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "ojshortdesc": "Sets a property or a single subproperty for complex properties and notifies the component of the change, triggering a corresponding event.",
    "description": "Sets a property or a single subproperty for complex properties and notifies the component of the change, triggering a corresponding event.",
    "params": [
      {
        "name": "property",
        "description": "The property name to set. Supports dot notation for subproperty access.",
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "value",
        "description": "The new value to set the property to.",
        "type": {
          "names": [
            "any"
          ]
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#getProperty",
    "name": "getProperty",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#getProperty",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "any"
          ]
        }
      }
    ],
    "ojshortdesc": "Retrieves the value of a property or a subproperty.",
    "description": "Retrieves the value of a property or a subproperty.",
    "params": [
      {
        "name": "property",
        "description": "The property name to get. Supports dot notation for subproperty access.",
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#setProperties",
    "name": "setProperties",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "function",
    "longname": "oj-c.SelectSingle#setProperties",
    "scope": "instance",
    "returns": [
      {
        "type": {
          "names": [
            "void"
          ]
        }
      }
    ],
    "ojshortdesc": "Performs a batch set of properties.",
    "description": "Performs a batch set of properties.",
    "params": [
      {
        "name": "properties",
        "description": "An object containing the property and value pairs to set.",
        "type": {
          "names": [
            "object"
          ]
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#event:ojAddToListAction",
    "name": "ojAddToListAction",
    "kind": "event",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle#event:ojAddToListAction",
    "scope": "instance",
    "ojshortdesc": "Event triggered when the user clicks or presses Enter on the add to list link in the dropdown.",
    "ojdisplayname": "onOjAddToListAction",
    "description": "Event triggered when the user clicks or presses Enter on the add to list link in the\ndropdown.\nSet the <code class=\"prettyprint\">addToList</code> property to\n<code class=\"prettyprint\">'on'</code> to enable this feature.",
    "properties": [
      {
        "name": "searchText",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#event:ojAdvancedSearchAction",
    "name": "ojAdvancedSearchAction",
    "kind": "event",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle#event:ojAdvancedSearchAction",
    "scope": "instance",
    "ojshortdesc": "Event triggered when the user clicks or presses Enter on the advanced search link in the dropdown.",
    "ojdisplayname": "onOjAdvancedSearchAction",
    "description": "Event triggered when the user clicks or presses Enter on the advanced search link in the\ndropdown.\nSet the <code class=\"prettyprint\">advancedSearch</code> property to\n<code class=\"prettyprint\">'on'</code> to enable this feature.",
    "properties": [
      {
        "name": "searchText",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle#event:ojValueAction",
    "name": "ojValueAction",
    "kind": "event",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle#event:ojValueAction",
    "scope": "instance",
    "ojshortdesc": "Event triggered when a value is submitted by the user, even if the value is the same as the previous value.",
    "ojdisplayname": "onOjValueAction",
    "description": "<p style=\"background-color: RGB(var(--oj-palette-info-rgb-30)); border: 2px solid #ddd\"><strong>Note:</strong> The event detail contains the following properties: [oj-c.SelectSingle.ValueActionPayload]{@link oj-c.SelectSingle.ValueActionPayload}&lt;V, D></p>Event triggered when a value is submitted by the user, even if the value is the same as the previous value."
  },
  {
    "id": "oj-c.SelectSingle#collectionTemplate",
    "name": "collectionTemplate",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#collectionTemplate",
    "scope": "instance",
    "ojdisplayname": "collectionTemplate",
    "description": "<p style=\"background-color: RGB(var(--oj-palette-info-rgb-30)); border: 2px solid #ddd\"><strong>Note:</strong> When the template is executed for each item, it will have access to the binding context containing the following properties: [oj-c.SelectSingle.CollectionTemplateContext]{@link oj-c.SelectSingle.CollectionTemplateContext}</p><p>The <code class=\"prettyprint\">collectionTemplate</code> slot is used to specify the template\nfor rendering items in the dropdown.\nThe slot must be a &lt;template> element containing a child core-pack collection element (e.g. &lt;oj-c-table/> or &lt;oj-c-list-view/>).\n<p>When the template is executed, it will have access to the binding context\ncontaining the following properties:</p>\n<ul>\n  <li>$current - an object that contains information for the collection. (See the table\nbelow for a list of properties available on $current)</li>\n <li>alias - if the data-oj-as attribute was specified on the template, the value will be\nused to provide an application-named alias for $current.</li>\n</ul>\n<p>If no <code class=\"prettyprint\">collectionTemplate</code> is specified, the component will check whether an\n<code class=\"prettyprint\">itemTemplate</code> is specified. Otherwise, the component will\nrender based on the value of the <code class=\"prettyprint\">itemText</code> property.</p>\n<p>The collectionTemplate supports oj-c-table and oj-c-list-view.</p>",
    "ojshortdesc": "The collectionTemplate slot is used to specify the template for rendering the items in the dropdown.",
    "ojslot": true,
    "ojtemplateslotprops": "oj-c.SelectSingle.CollectionTemplateContext"
  },
  {
    "id": "oj-c.SelectSingle#itemTemplate",
    "name": "itemTemplate",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "kind": "member",
    "longname": "oj-c.SelectSingle#itemTemplate",
    "scope": "instance",
    "ojdisplayname": "itemTemplate",
    "description": "<p style=\"background-color: RGB(var(--oj-palette-info-rgb-30)); border: 2px solid #ddd\"><strong>Note:</strong> When the template is executed for each item, it will have access to the binding context containing the following properties: [oj-c.SelectSingle.ItemTemplateContext]{@link oj-c.SelectSingle.ItemTemplateContext}</p><p>The <code class=\"prettyprint\">itemTemplate</code> slot is used to specify the template\nfor rendering each item in the dropdown list.\nThe slot must be a &lt;template> element.\n<p>When the template is executed for each item, it will have access to the binding context\ncontaining the following properties:</p>\n<ul>\n  <li>$current - an object that contains information for the current item. (See the table\nbelow for a list of properties available on $current)</li>\n <li>alias - if the data-oj-as attribute was specified on the template, the value will be\nused to provide an application-named alias for $current.</li>\n</ul>\n<p>If no <code class=\"prettyprint\">itemTemplate</code> is specified, the component will\nrender based on the value of the <code class=\"prettyprint\">itemText</code> property.</p>",
    "ojshortdesc": "The itemTemplate slot is used to specify the template for rendering each item in the dropdown. See the Help documentation for more information.",
    "ojslot": true,
    "ojtemplateslotprops": "oj-c.SelectSingle.ItemTemplateContext"
  },
  {
    "id": "oj-c.SelectSingle.touchDoc",
    "name": "touchDoc",
    "kind": "member",
    "longname": "oj-c.SelectSingle.touchDoc",
    "description": "<table class=\"keyboard-table\">\n  <thead>\n    <tr>\n      <th>Target</th>\n      <th>Gesture</th>\n      <th>Action</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>Tap</kbd></td>\n      <td> If the dropdown is not open, expand the dropdown list.\n      If hints, title or messages exist in a notewindow,\n       pop up the notewindow.</td>\n    </tr>\n    <tr>\n      <td>Arrow button</td>\n      <td><kbd>Tap</kbd></td>\n      <td> If the dropdown is not open, expand the dropdown list. Otherwise, close the dropdown list.</td>\n    </tr>\n    <tr>\n      <td>Option item</td>\n      <td><kbd>Tap</kbd></td>\n      <td> Tap on an option item in the dropdown list to select.</td>\n    </tr>\n  </tbody>\n</table>",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "ojfragment": true
  },
  {
    "id": "oj-c.SelectSingle.keyboardDoc",
    "name": "keyboardDoc",
    "kind": "member",
    "longname": "oj-c.SelectSingle.keyboardDoc",
    "description": "<table class=\"keyboard-table\">\n  <thead>\n    <tr>\n      <th>Target</th>\n      <th>Key</th>\n      <th>Action</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>Option item</td>\n      <td><kbd>Enter or Space</kbd></td>\n      <td> Select the highlighted choice from the dropdown and close the dropdown.</td>\n    </tr>\n    <tr>\n      <td>Option item</td>\n      <td><kbd>Tab</kbd></td>\n      <td> Select the highlighted choice from the dropdown and transfer focus to the next\n        tabbable element on the page.</td>\n    </tr>\n    <tr>\n      <td>Option item (when showing Add to list or Advanced search link)</td>\n      <td><kbd>Tab</kbd></td>\n      <td> Keeps the choice highlighted and transfer focus to the Add to list or Advanced search link.</td>\n    </tr>\n    <tr>\n      <td>Add to list or Advanced search link</td>\n      <td><kbd>Enter</kbd></td>\n      <td> Triggers the ojAddToListAction or the ojAdvancedSearchAction and closes the dropdown.</td>\n    </tr>\n    <tr>\n      <td>Add to list or Advanced search link</td>\n      <td><kbd>Tab</kbd></td>\n      <td> Select the highlighted choice from the dropdown and transfer focus to the next\n        tabbable element on the page.</td>\n    </tr>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>Esc</kbd></td>\n      <td> Collapse the dropdown list. If the dropdown is already closed, do nothing.</td>\n    </tr>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>Enter</kbd></td>\n      <td> If the selected value text has been deleted, clear the value and close the dropdown.\n        If filtering, select the highlighted choice from the dropdown and close the\n        dropdown.</td>\n    </tr>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>Tab</kbd></td>\n      <td> If the selected value text has been deleted, clear the value and transfer focus\n        to the next tabbable element on the page. If filtering, select the highlighted choice\n        from the dropdown and transfer focus to the next tabbable element on the page.</td>\n    </tr>\n    <tr>\n      <td>Input field</td>\n      <td><kbd>UpArrow or DownArrow</kbd></td>\n      <td> If the dropdown is not open, expand the dropdown list.  Otherwise, transfer\n        focus into the dropdown list.</td>\n    </tr>\n    <tr>\n      <td>Dropdown</td>\n      <td><kbd>UpArrow or DownArrow</kbd></td>\n      <td> Highlight the option item in the dropdown list in the direction of the arrow.</td>\n    </tr>\n    <tr>\n      <td>Dropdown</td>\n      <td><kbd>Esc</kbd></td>\n      <td> Collapse the dropdown list.</td>\n    </tr>\n    <tr>\n      <td>Select</td>\n      <td><kbd>Tab In</kbd></td>\n      <td>Set focus to the Select. If hints, title or messages exist in a notewindow,\n       pop up the notewindow.</td>\n    </tr>\n  </tbody>\n</table>",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "ojfragment": true
  },
  {
    "id": "oj-c.SelectSingle.CollectionTemplateContext",
    "name": "CollectionTemplateContext",
    "kind": "typedef",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle.CollectionTemplateContext",
    "type": {
      "names": [
        "Object"
      ]
    },
    "scope": "static",
    "description": "",
    "tsgenerictype": {
      "target": "Type",
      "value": "<K extends string | number,D extends Record<string, any>>",
      "for": "genericTypeParameters"
    },
    "properties": [
      {
        "name": "data",
        "description": "A data provider that provide information including data and metadata to the collection.",
        "optional": true,
        "type": {
          "names": [
            "DataProvider|null"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "DataProvider<K, D>|null",
            "jsdocOverride": true,
            "for": "data",
            "module": {
              "DataProvider": "ojdataprovider"
            }
          }
        ]
      },
      {
        "name": "searchText",
        "description": "The text entered by the user for filtering the collection data. This can be used for highlighting the matches.",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "currentRowOverride",
        "description": "This property can be used to set the current focused row/item in the collection.",
        "optional": true,
        "type": {
          "names": [
            "object"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "{ rowKey: K; }",
            "jsdocOverride": true,
            "for": "currentRowOverride"
          }
        ]
      },
      {
        "name": "onCurrentRowChanged",
        "description": "A callback function to be called to let the select component know that the current row is changed by a user interaction.",
        "optional": false,
        "type": {
          "names": [
            "function"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "(detail: { rowKey?: K; }) => void",
            "jsdocOverride": true,
            "for": "onCurrentRowChanged"
          }
        ]
      },
      {
        "name": "selected",
        "description": "This property provides the selected row/item for the collection component.",
        "optional": false,
        "type": {
          "names": [
            "object"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "ImmutableKeySet<K>",
            "jsdocOverride": true,
            "for": "selected",
            "module": {
              "ImmutableKeySet": "ojkeyset"
            }
          }
        ]
      },
      {
        "name": "onRowAction",
        "description": "A callback function to be called to let the select component know when a user performs an action gesture on an item/row.",
        "optional": false,
        "type": {
          "names": [
            "function"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "(detail: { item: Item<K, D>; }) => void",
            "jsdocOverride": true,
            "for": "onRowAction",
            "module": {
              "Item": "ojdataprovider"
            }
          }
        ]
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle.DisplayOptionsProps",
    "name": "DisplayOptionsProps",
    "kind": "typedef",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle.DisplayOptionsProps",
    "type": {
      "names": [
        "Object"
      ]
    },
    "scope": "static",
    "description": "Display options for auxiliary content that determines whether or not it should be displayed.",
    "properties": [
      {
        "name": "messages",
        "description": "Display options for auxiliary message text.",
        "optional": true,
        "type": {
          "names": [
            "\"none\"",
            "\"display\""
          ]
        },
        "defaultvalue": "'display'"
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle.Help",
    "name": "Help",
    "kind": "typedef",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle.Help",
    "type": {
      "names": [
        "Object"
      ]
    },
    "scope": "static",
    "description": "Form component help information.",
    "properties": [
      {
        "name": "instruction",
        "description": "A type of user assistance text. User assistance text is used to provide guidance to\nhelp the user understand what data to enter or select.",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        },
        "defaultvalue": "''"
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle.HelpHints",
    "name": "HelpHints",
    "kind": "typedef",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle.HelpHints",
    "type": {
      "names": [
        "Object"
      ]
    },
    "scope": "static",
    "description": "The helpHints object contains a definition property and a source property.",
    "properties": [
      {
        "name": "definition",
        "description": "A type of user assistance text. User assistance text is used to provide guidance to help\nthe user understand what data to enter or select. help-hints could come from a help system.",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        },
        "defaultvalue": "''"
      },
      {
        "name": "source",
        "description": "Help source URL associated with the component.",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        },
        "defaultvalue": "''"
      },
      {
        "name": "sourceText",
        "description": "Custom text to be used for the source link.",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle.ItemTemplateContext",
    "name": "ItemTemplateContext",
    "kind": "typedef",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle.ItemTemplateContext",
    "type": {
      "names": [
        "Object"
      ]
    },
    "scope": "static",
    "description": "",
    "tsgenerictype": {
      "target": "Type",
      "value": "<K extends string | number,D extends Record<string, any>>",
      "for": "genericTypeParameters"
    },
    "properties": [
      {
        "name": "searchText",
        "description": "User-entered search text.\nThis property will be undefined for the default, unfiltered list.",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "item",
        "description": "Contains the data and metadata of the item.",
        "optional": false,
        "type": {
          "names": [
            "object"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "Item<K, D>",
            "jsdocOverride": true,
            "for": "item",
            "module": {
              "Item": "ojdataprovider"
            }
          }
        ]
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle.ComponentMessageItem",
    "name": "ComponentMessageItem",
    "kind": "typedef",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle.ComponentMessageItem",
    "type": {
      "names": [
        "Object"
      ]
    },
    "scope": "static",
    "description": "A type for a single component message",
    "properties": [
      {
        "name": "summary",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "detail",
        "optional": true,
        "type": {
          "names": [
            "string"
          ]
        }
      },
      {
        "name": "severity",
        "optional": true,
        "type": {
          "names": [
            "\"error\"",
            "\"confirmation\"",
            "\"info\"",
            "\"warning\""
          ]
        }
      }
    ]
  },
  {
    "id": "oj-c.SelectSingle.ValueActionPayload",
    "name": "ValueActionPayload",
    "kind": "typedef",
    "memberof": "oj-c.SelectSingle",
    "meta": {
      "filename": "select-single.tsx",
      "path": "web/components/oj-c/select-single"
    },
    "longname": "oj-c.SelectSingle.ValueActionPayload",
    "type": {
      "names": [
        "Object"
      ]
    },
    "scope": "static",
    "description": "Payload for the ojValueAction event",
    "tsgenerictype": {
      "target": "Type",
      "value": "<V,D>",
      "for": "genericTypeParameters"
    },
    "properties": [
      {
        "name": "itemContext",
        "optional": false,
        "type": {
          "names": [
            "object"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "ItemContext<V, D>|null",
            "jsdocOverride": true,
            "for": "itemContext",
            "module": {
              "ItemContext": "ojcommontypes"
            }
          }
        ]
      },
      {
        "name": "previousValue",
        "optional": false,
        "type": {
          "names": [
            "any"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "V|null",
            "jsdocOverride": true,
            "for": "previousValue"
          }
        ]
      },
      {
        "name": "value",
        "optional": false,
        "type": {
          "names": [
            "any"
          ]
        },
        "tstype": [
          {
            "target": "Type",
            "value": "V|null",
            "jsdocOverride": true,
            "for": "value"
          }
        ]
      }
    ]
  }
]