{"version":3,"sources":["webpack:///./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/button/splitbuttonview.js","webpack:///./node_modules/@ckeditor/ckeditor5-ui/src/componentfactory.js","webpack:///./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/dropdownpanelview.js","webpack:///./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/dropdownview.js","webpack:///./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"],"names":["SplitButtonView","locale","_this","Object","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1__","this","_super","call","bind","bindTemplate","set","children","createCollection","actionView","_createActionView","arrowView","_createArrowView","keystrokes","KeystrokeHandler","focusTracker","FocusTracker","setTemplate","tag","attributes","class","to","if","value","_this2","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_get_js__WEBPACK_IMPORTED_MODULE_3__","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6__","prototype","add","element","listenTo","evt","cancel","focusedElement","focus","ButtonView","extendTemplate","delegate","icon","dropdownArrowIcon","aria-haspopup","aria-expanded","String","View","ComponentFactory","editor","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_classCallCheck_js__WEBPACK_IMPORTED_MODULE_9__","_components","Map","names","_iterator","_step","regeneratorRuntime","wrap","_context","prev","next","_createForOfIteratorHelper","values","s","n","done","originalName","t0","e","f","finish","stop","name","callback","getNormalized","has","CKEditorError","get","toLowerCase","DropdownPanelView","concat","on","selectstart","preventDefault","length","first","lastChild","last","focusLast","DropdownView","buttonView","panelView","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_classCallCheck_js__WEBPACK_IMPORTED_MODULE_2__","id","aria-describedby","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_get_js__WEBPACK_IMPORTED_MODULE_4__","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_7__","isOpen","panelPosition","position","_getOptimalPosition","target","fitInViewport","positions","_panelPositions","closeDropdown","data","isEnabled","_DropdownView$default","defaultPanelPositions","south","north","southEast","southWest","northEast","northWest","southMiddleEast","southMiddleWest","northMiddleEast","northMiddleWest","uiLanguageDirection","buttonRect","panelRect","top","bottom","left","width","height","getOptimalPosition","DropdownButtonView","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_assertThisInitialized_js__WEBPACK_IMPORTED_MODULE_3__","IconView","content"],"mappings":"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","file":"js/chunk-34a455a1.c1c76e58.js","sourcesContent":["/**\n * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/dropdown/button/splitbuttonview\n */\n\nimport View from '../../view';\nimport ButtonView from '../../button/buttonview';\n\nimport KeystrokeHandler from '@ckeditor/ckeditor5-utils/src/keystrokehandler';\nimport FocusTracker from '@ckeditor/ckeditor5-utils/src/focustracker';\n\nimport dropdownArrowIcon from '../../../theme/icons/dropdown-arrow.svg';\n\nimport '../../../theme/components/dropdown/splitbutton.css';\n\n/**\n * The split button view class.\n *\n *\t\tconst view = new SplitButtonView();\n *\n *\t\tview.set( {\n *\t\t\tlabel: 'A button',\n *\t\t\tkeystroke: 'Ctrl+B',\n *\t\t\ttooltip: true\n *\t\t} );\n *\n *\t\tview.render();\n *\n *\t\tdocument.body.append( view.element );\n *\n * Also see the {@link module:ui/dropdown/utils~createDropdown `createDropdown()` util}.\n *\n * @implements module:ui/dropdown/button/dropdownbutton~DropdownButton\n * @extends module:ui/view~View\n */\nexport default class SplitButtonView extends View {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t// Implement the Button interface.\n\t\tthis.set( 'class' );\n\t\tthis.set( 'icon' );\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'isOn', false );\n\t\tthis.set( 'isToggleable', false );\n\t\tthis.set( 'isVisible', true );\n\t\tthis.set( 'keystroke' );\n\t\tthis.set( 'label' );\n\t\tthis.set( 'tabindex', -1 );\n\t\tthis.set( 'tooltip' );\n\t\tthis.set( 'tooltipPosition', 's' );\n\t\tthis.set( 'type', 'button' );\n\t\tthis.set( 'withText', false );\n\n\t\t/**\n\t\t * Collection of the child views inside of the split button {@link #element}.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:ui/viewcollection~ViewCollection}\n\t\t */\n\t\tthis.children = this.createCollection();\n\n\t\t/**\n\t\t * A main button of split button.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:ui/button/buttonview~ButtonView}\n\t\t */\n\t\tthis.actionView = this._createActionView();\n\n\t\t/**\n\t\t * A secondary button of split button that opens dropdown.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:ui/button/buttonview~ButtonView}\n\t\t */\n\t\tthis.arrowView = this._createArrowView();\n\n\t\t/**\n\t\t * Instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}. It manages\n\t\t * keystrokes of the split button:\n\t\t *\n\t\t * * moves focus to arrow view when action view is focused,\n\t\t * * moves focus to action view when arrow view is focused.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:utils/keystrokehandler~KeystrokeHandler}\n\t\t */\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\t/**\n\t\t * Tracks information about DOM focus in the dropdown.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:utils/focustracker~FocusTracker}\n\t\t */\n\t\tthis.focusTracker = new FocusTracker();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-splitbutton',\n\t\t\t\t\tbind.to( 'class' ),\n\t\t\t\t\tbind.if( 'isVisible', 'ck-hidden', value => !value ),\n\t\t\t\t\tthis.arrowView.bindTemplate.if( 'isOn', 'ck-splitbutton_open' )\n\t\t\t\t]\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\trender() {\n\t\tsuper.render();\n\n\t\tthis.children.add( this.actionView );\n\t\tthis.children.add( this.arrowView );\n\n\t\tthis.focusTracker.add( this.actionView.element );\n\t\tthis.focusTracker.add( this.arrowView.element );\n\n\t\tthis.keystrokes.listenTo( this.element );\n\n\t\t// Overrides toolbar focus cycling behavior.\n\t\tthis.keystrokes.set( 'arrowright', ( evt, cancel ) => {\n\t\t\tif ( this.focusTracker.focusedElement === this.actionView.element ) {\n\t\t\t\tthis.arrowView.focus();\n\n\t\t\t\tcancel();\n\t\t\t}\n\t\t} );\n\n\t\t// Overrides toolbar focus cycling behavior.\n\t\tthis.keystrokes.set( 'arrowleft', ( evt, cancel ) => {\n\t\t\tif ( this.focusTracker.focusedElement === this.arrowView.element ) {\n\t\t\t\tthis.actionView.focus();\n\n\t\t\t\tcancel();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Focuses the {@link #actionView#element} of the action part of split button.\n\t */\n\tfocus() {\n\t\tthis.actionView.focus();\n\t}\n\n\t/**\n\t * Creates a {@link module:ui/button/buttonview~ButtonView} instance as {@link #actionView} and binds it with main split button\n\t * attributes.\n\t *\n\t * @private\n\t * @returns {module:ui/button/buttonview~ButtonView}\n\t */\n\t_createActionView() {\n\t\tconst actionView = new ButtonView();\n\n\t\tactionView.bind(\n\t\t\t'icon',\n\t\t\t'isEnabled',\n\t\t\t'isOn',\n\t\t\t'isToggleable',\n\t\t\t'keystroke',\n\t\t\t'label',\n\t\t\t'tabindex',\n\t\t\t'tooltip',\n\t\t\t'tooltipPosition',\n\t\t\t'type',\n\t\t\t'withText'\n\t\t).to( this );\n\n\t\tactionView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-splitbutton__action'\n\t\t\t}\n\t\t} );\n\n\t\tactionView.delegate( 'execute' ).to( this );\n\n\t\treturn actionView;\n\t}\n\n\t/**\n\t * Creates a {@link module:ui/button/buttonview~ButtonView} instance as {@link #arrowView} and binds it with main split button\n\t * attributes.\n\t *\n\t * @private\n\t * @returns {module:ui/button/buttonview~ButtonView}\n\t */\n\t_createArrowView() {\n\t\tconst arrowView = new ButtonView();\n\t\tconst bind = arrowView.bindTemplate;\n\n\t\tarrowView.icon = dropdownArrowIcon;\n\n\t\tarrowView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-splitbutton__arrow',\n\t\t\t\t'aria-haspopup': true,\n\t\t\t\t'aria-expanded': bind.to( 'isOn', value => String( value ) )\n\t\t\t}\n\t\t} );\n\n\t\tarrowView.bind( 'isEnabled' ).to( this );\n\n\t\tarrowView.delegate( 'execute' ).to( this, 'open' );\n\n\t\treturn arrowView;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/componentfactory\n */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\n/**\n * A helper class implementing the UI component ({@link module:ui/view~View view}) factory.\n *\n * It allows functions producing specific UI components to be registered under their unique names\n * in the factory. A registered component can be then instantiated by providing its name.\n * Note that names are case insensitive.\n *\n *\t\t// The editor provides localization tools for the factory.\n *\t\tconst factory = new ComponentFactory( editor );\n *\n *\t\tfactory.add( 'foo', locale => new FooView( locale ) );\n *\t\tfactory.add( 'bar', locale => new BarView( locale ) );\n *\n *\t\t// An instance of FooView.\n *\t\tconst fooInstance = factory.create( 'foo' );\n *\n *\t\t// Names are case insensitive so this is also allowed:\n *\t\tconst barInstance = factory.create( 'Bar' );\n *\n * The {@link module:core/editor/editor~Editor#locale editor locale} is passed to the factory\n * function when {@link module:ui/componentfactory~ComponentFactory#create} is called.\n */\nexport default class ComponentFactory {\n\t/**\n\t * Creates an instance of the factory.\n\t *\n\t * @constructor\n\t * @param {module:core/editor/editor~Editor} editor The editor instance.\n\t */\n\tconstructor( editor ) {\n\t\t/**\n\t\t * The editor instance that the factory belongs to.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:core/editor/editor~Editor}\n\t\t */\n\t\tthis.editor = editor;\n\n\t\t/**\n\t\t * Registered component factories.\n\t\t *\n\t\t * @private\n\t\t * @member {Map}\n\t\t */\n\t\tthis._components = new Map();\n\t}\n\n\t/**\n\t * Returns an iterator of registered component names. Names are returned in lower case.\n\t *\n\t * @returns {Iterable.}\n\t */\n\t* names() {\n\t\tfor ( const value of this._components.values() ) {\n\t\t\tyield value.originalName;\n\t\t}\n\t}\n\n\t/**\n\t * Registers a component factory function that will be used by the\n\t * {@link #create create} method and called with the\n\t * {@link module:core/editor/editor~Editor#locale editor locale} as an argument,\n\t * allowing localization of the {@link module:ui/view~View view}.\n\t *\n\t * @param {String} name The name of the component.\n\t * @param {Function} callback The callback that returns the component.\n\t */\n\tadd( name, callback ) {\n\t\tthis._components.set( getNormalized( name ), { callback, originalName: name } );\n\t}\n\n\t/**\n\t * Creates an instance of a component registered in the factory under a specific name.\n\t *\n\t * When called, the {@link module:core/editor/editor~Editor#locale editor locale} is passed to\n\t * the previously {@link #add added} factory function, allowing localization of the\n\t * {@link module:ui/view~View view}.\n\t *\n\t * @param {String} name The name of the component.\n\t * @returns {module:ui/view~View} The instantiated component view.\n\t */\n\tcreate( name ) {\n\t\tif ( !this.has( name ) ) {\n\t\t\t/**\n\t\t\t * The required component is not registered in the component factory. Please make sure\n\t\t\t * the provided name is correct and the component has been correctly\n\t\t\t * {@link #add added} to the factory.\n\t\t\t *\n\t\t\t * @error componentfactory-item-missing\n\t\t\t * @param {String} name The name of the missing component.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'componentfactory-item-missing',\n\t\t\t\tthis,\n\t\t\t\t{ name }\n\t\t\t);\n\t\t}\n\n\t\treturn this._components.get( getNormalized( name ) ).callback( this.editor.locale );\n\t}\n\n\t/**\n\t * Checks if a component of a given name is registered in the factory.\n\t *\n\t * @param {String} name The name of the component.\n\t * @returns {Boolean}\n\t */\n\thas( name ) {\n\t\treturn this._components.has( getNormalized( name ) );\n\t}\n}\n\n//\n// Ensures that the component name used as the key in the internal map is in lower case.\n//\n// @private\n// @param {String} name\n// @returns {String}\nfunction getNormalized( name ) {\n\treturn String( name ).toLowerCase();\n}\n","/**\n * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/dropdown/dropdownpanelview\n */\n\nimport View from '../view';\n\n/**\n * The dropdown panel view class.\n *\n * See {@link module:ui/dropdown/dropdownview~DropdownView} to learn about the common usage.\n *\n * @extends module:ui/view~View\n */\nexport default class DropdownPanelView extends View {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t/**\n\t\t * Controls whether the panel is visible.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isVisible\n\t\t */\n\t\tthis.set( 'isVisible', false );\n\n\t\t/**\n\t\t * The position of the panel, relative to the parent.\n\t\t *\n\t\t * This property is reflected in the CSS class set to {@link #element} that controls\n\t\t * the position of the panel.\n\t\t *\n\t\t * @observable\n\t\t * @default 'se'\n\t\t * @member {'s'|'se'|'sw'|'sme'|'smw'|'n'|'ne'|'nw'|'nme'|'nmw'} #position\n\t\t */\n\t\tthis.set( 'position', 'se' );\n\n\t\t/**\n\t\t * Collection of the child views in this panel.\n\t\t *\n\t\t * A common child type is the {@link module:ui/list/listview~ListView} and {@link module:ui/toolbar/toolbarview~ToolbarView}.\n\t\t * See {@link module:ui/dropdown/utils~addListToDropdown} and\n\t\t * {@link module:ui/dropdown/utils~addToolbarToDropdown} to learn more about child views of dropdowns.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:ui/viewcollection~ViewCollection}\n\t\t */\n\t\tthis.children = this.createCollection();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-reset',\n\t\t\t\t\t'ck-dropdown__panel',\n\t\t\t\t\tbind.to( 'position', value => `ck-dropdown__panel_${ value }` ),\n\t\t\t\t\tbind.if( 'isVisible', 'ck-dropdown__panel-visible' )\n\t\t\t\t]\n\t\t\t},\n\n\t\t\tchildren: this.children,\n\n\t\t\ton: {\n\t\t\t\t// Drag and drop in the panel should not break the selection in the editor.\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/228\n\t\t\t\tselectstart: bind.to( evt => evt.preventDefault() )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Focuses the view element or first item in view collection on opening dropdown's panel.\n\t *\n\t * See also {@link module:ui/dropdown/dropdownpanelfocusable~DropdownPanelFocusable}.\n\t */\n\tfocus() {\n\t\tif ( this.children.length ) {\n\t\t\tthis.children.first.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Focuses the view element or last item in view collection on opening dropdown's panel.\n\t *\n\t * See also {@link module:ui/dropdown/dropdownpanelfocusable~DropdownPanelFocusable}.\n\t */\n\tfocusLast() {\n\t\tif ( this.children.length ) {\n\t\t\tconst lastChild = this.children.last;\n\n\t\t\tif ( typeof lastChild.focusLast === 'function' ) {\n\t\t\t\tlastChild.focusLast();\n\t\t\t} else {\n\t\t\t\tlastChild.focus();\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/dropdown/dropdownview\n */\n\nimport View from '../view';\nimport KeystrokeHandler from '@ckeditor/ckeditor5-utils/src/keystrokehandler';\n\nimport '../../theme/components/dropdown/dropdown.css';\n\nimport { getOptimalPosition } from '@ckeditor/ckeditor5-utils/src/dom/position';\n\n/**\n * The dropdown view class. It manages the dropdown button and dropdown panel.\n *\n * In most cases, the easiest way to create a dropdown is by using the {@link module:ui/dropdown/utils~createDropdown}\n * util:\n *\n *\t\tconst dropdown = createDropdown( locale );\n *\n *\t\t// Configure dropdown's button properties:\n *\t\tdropdown.buttonView.set( {\n *\t\t\tlabel: 'A dropdown',\n *\t\t\twithText: true\n *\t\t} );\n *\n *\t\tdropdown.render();\n *\n *\t\tdropdown.panelView.element.textContent = 'Content of the panel';\n *\n *\t\t// Will render a dropdown with a panel containing a \"Content of the panel\" text.\n *\t\tdocument.body.appendChild( dropdown.element );\n *\n * If you want to add a richer content to the dropdown panel, you can use the {@link module:ui/dropdown/utils~addListToDropdown}\n * and {@link module:ui/dropdown/utils~addToolbarToDropdown} helpers. See more examples in\n * {@link module:ui/dropdown/utils~createDropdown} documentation.\n *\n * If you want to create a completely custom dropdown, then you can compose it manually:\n *\n *\t\tconst button = new DropdownButtonView( locale );\n *\t\tconst panel = new DropdownPanelView( locale );\n *\t\tconst dropdown = new DropdownView( locale, button, panel );\n *\n *\t\tbutton.set( {\n *\t\t\tlabel: 'A dropdown',\n *\t\t\twithText: true\n *\t\t} );\n *\n *\t\tdropdown.render();\n *\n *\t\tpanel.element.textContent = 'Content of the panel';\n *\n *\t\t// Will render a dropdown with a panel containing a \"Content of the panel\" text.\n *\t\tdocument.body.appendChild( dropdown.element );\n *\n * However, dropdown created this way will contain little behavior. You will need to implement handlers for actions\n * such as {@link module:ui/bindings/clickoutsidehandler~clickOutsideHandler clicking outside an open dropdown}\n * (which should close it) and support for arrow keys inside the panel. Therefore, unless you really know what\n * you do and you really need to do it, it is recommended to use the {@link module:ui/dropdown/utils~createDropdown} helper.\n *\n * @extends module:ui/view~View\n */\nexport default class DropdownView extends View {\n\t/**\n\t * Creates an instance of the dropdown.\n\t *\n\t * Also see {@link #render}.\n\t *\n\t * @param {module:utils/locale~Locale} [locale] The localization services instance.\n\t * @param {module:ui/dropdown/button/dropdownbutton~DropdownButton} buttonView\n\t * @param {module:ui/dropdown/dropdownpanelview~DropdownPanelView} panelView\n\t */\n\tconstructor( locale, buttonView, panelView ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t/**\n\t\t * Button of the dropdown view. Clicking the button opens the {@link #panelView}.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:ui/button/buttonview~ButtonView} #buttonView\n\t\t */\n\t\tthis.buttonView = buttonView;\n\n\t\t/**\n\t\t * Panel of the dropdown. It opens when the {@link #buttonView} is\n\t\t * {@link module:ui/button/buttonview~ButtonView#event:execute executed} (i.e. clicked).\n\t\t *\n\t\t * Child views can be added to the panel's `children` collection:\n\t\t *\n\t\t *\t\tdropdown.panelView.children.add( childView );\n\t\t *\n\t\t * See {@link module:ui/dropdown/dropdownpanelview~DropdownPanelView#children} and\n\t\t * {@link module:ui/viewcollection~ViewCollection#add}.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:ui/dropdown/dropdownpanelview~DropdownPanelView} #panelView\n\t\t */\n\t\tthis.panelView = panelView;\n\n\t\t/**\n\t\t * Controls whether the dropdown view is open, i.e. shows or hides the {@link #panelView panel}.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isOpen\n\t\t */\n\t\tthis.set( 'isOpen', false );\n\n\t\t/**\n\t\t * Controls whether the dropdown is enabled, i.e. it can be clicked and execute an action.\n\t\t *\n\t\t * See {@link module:ui/button/buttonview~ButtonView#isEnabled}.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isEnabled\n\t\t */\n\t\tthis.set( 'isEnabled', true );\n\n\t\t/**\n\t\t * (Optional) The additional CSS class set on the dropdown {@link #element}.\n\t\t *\n\t\t * @observable\n\t\t * @member {String} #class\n\t\t */\n\t\tthis.set( 'class' );\n\n\t\t/**\n\t\t * (Optional) The `id` attribute of the dropdown (i.e. to pair with a `