ExamplesPlaygroundReference Source

coral-spectrum/coral-component-shell/src/scripts/ShellMenuBar.js

  1. /**
  2. * Copyright 2019 Adobe. All rights reserved.
  3. * This file is licensed to you under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License. You may obtain a copy
  5. * of the License at http://www.apache.org/licenses/LICENSE-2.0
  6. *
  7. * Unless required by applicable law or agreed to in writing, software distributed under
  8. * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
  9. * OF ANY KIND, either express or implied. See the License for the specific language
  10. * governing permissions and limitations under the License.
  11. */
  12.  
  13. import {BaseComponent} from '../../../coral-base-component';
  14. import {Collection} from '../../../coral-collection';
  15.  
  16. const CLASSNAME = '_coral-Shell-menubar';
  17.  
  18. /**
  19. @class Coral.Shell.MenuBar
  20. @classdesc A Shell MenuBar component
  21. @htmltag coral-shell-menubar
  22. @extends {HTMLElement}
  23. @extends {BaseComponent}
  24. */
  25. class ShellMenuBar extends BaseComponent(HTMLElement) {
  26. /** @ignore */
  27. constructor() {
  28. super();
  29.  
  30. this.setAttribute('role', 'list');
  31.  
  32. this.items._startHandlingItems(true);
  33. }
  34.  
  35. /**
  36. The item collection.
  37.  
  38. @type {Collection}
  39. @readonly
  40. */
  41. get items() {
  42. // Construct the collection on first request:
  43. if (!this._items) {
  44. this._items = new Collection({
  45. host: this,
  46. itemTagName: 'coral-shell-menubar-item'
  47. });
  48. }
  49.  
  50. return this._items;
  51. }
  52.  
  53. /** @ignore */
  54. render() {
  55. super.render();
  56.  
  57. this.classList.add(CLASSNAME);
  58. }
  59. }
  60.  
  61. export default ShellMenuBar;