UNPKG

@openproject/primer-view-components

Version:

ViewComponents of the Primer Design System for OpenProject

77 lines (76 loc) 3.05 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { controller, target, targets } from '@github/catalyst'; let SubHeaderElement = class SubHeaderElement extends HTMLElement { connectedCallback() { this.setupFilterInputClearButton(); } setupFilterInputClearButton() { this.waitForCondition(() => Boolean(this.filterInput), () => { this.toggleFilterInputClearButton(); }); } toggleFilterInputClearButton() { if (this.filterInput.value.length > 0) { this.filterInput.classList.remove('SubHeader-filterInput_hiddenClearButton'); } else { this.filterInput.classList.add('SubHeader-filterInput_hiddenClearButton'); } } expandFilterInput() { for (const item of this.hiddenItemsOnExpandedFilter) { item.classList.add('d-none'); } for (const item of this.shownItemsOnExpandedFilter) { item.classList.remove('d-none'); } this.classList.add('SubHeader--expandedSearch'); this.filterInput.focus(); } collapseFilterInput() { for (const item of this.hiddenItemsOnExpandedFilter) { item.classList.remove('d-none'); } for (const item of this.shownItemsOnExpandedFilter) { item.classList.add('d-none'); } this.classList.remove('SubHeader--expandedSearch'); } // Waits for condition to return true. If it returns false initially, this function creates a // MutationObserver that calls body() whenever the contents of the component change. waitForCondition(condition, body) { if (condition()) { body(); } else { const mutationObserver = new MutationObserver(() => { if (condition()) { body(); mutationObserver.disconnect(); } }); mutationObserver.observe(this, { childList: true, subtree: true }); } } }; __decorate([ target ], SubHeaderElement.prototype, "filterInput", void 0); __decorate([ targets ], SubHeaderElement.prototype, "hiddenItemsOnExpandedFilter", void 0); __decorate([ targets ], SubHeaderElement.prototype, "shownItemsOnExpandedFilter", void 0); SubHeaderElement = __decorate([ controller ], SubHeaderElement); if (!window.customElements.get('sub-header')) { window.SubHeaderElement = SubHeaderElement; window.customElements.define('sub-header', SubHeaderElement); }