diff options
Diffstat (limited to 'apps/files/src/models/Setting.js')
-rw-r--r-- | apps/files/src/models/Setting.js | 78 |
1 files changed, 41 insertions, 37 deletions
diff --git a/apps/files/src/models/Setting.js b/apps/files/src/models/Setting.js index 64c81ee5013..1db1d818e69 100644 --- a/apps/files/src/models/Setting.js +++ b/apps/files/src/models/Setting.js @@ -1,69 +1,73 @@ /** - * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev> - * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> - * - * @author Gary Kim <gary@garykim.dev> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later */ export default class Setting { - #close - #el - #name - #open + _close + _el + _name + _open + _order /** * Create a new files app setting * * @since 19.0.0 * @param {string} name the name of this setting + * @param {object} component the component * @param {Function} component.el function that returns an unmounted dom element to be added * @param {Function} [component.open] callback for when setting is added * @param {Function} [component.close] callback for when setting is closed + * @param {number} [component.order] the order of this setting, lower numbers are shown first */ - constructor(name, { el, open, close }) { - this.#name = name - this.#el = el - this.#open = open - this.#close = close - if (typeof this.#open !== 'function') { - this.#open = () => {} + constructor(name, { el, open, close, order }) { + this._name = name + this._el = el + this._open = open + this._close = close + this._order = order || 0 + + if (typeof this._open !== 'function') { + this._open = () => {} + } + + if (typeof this._close !== 'function') { + this._close = () => {} + } + + if (typeof this._el !== 'function') { + throw new Error('Setting must have an `el` function that returns a DOM element') } - if (typeof this.#close !== 'function') { - this.#close = () => {} + + if (typeof this._name !== 'string') { + throw new Error('Setting must have a `name` string') + } + + if (typeof this._order !== 'number') { + throw new Error('Setting must have an `order` number') } } get name() { - return this.#name + return this._name } get el() { - return this.#el + return this._el } get open() { - return this.#open + return this._open } get close() { - return this.#close + return this._close + } + + get order() { + return this._order } } |