diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2019-01-28 15:06:01 +0100 |
---|---|---|
committer | Christoph Wurst <christoph@winzerhof-wurst.at> | 2019-01-28 15:06:01 +0100 |
commit | 4921359e71474e8ec82c8ab7815f3256d9def7af (patch) | |
tree | 4196ff86ead157889cbe4ce3ed05123c98a2e95f /core/src | |
parent | cfdece7833ed407cfee63b73c9ae20fde848ffc3 (diff) | |
download | nextcloud-server-4921359e71474e8ec82c8ab7815f3256d9def7af.tar.gz nextcloud-server-4921359e71474e8ec82c8ab7815f3256d9def7af.zip |
Move OCA.Apps to the server bundle
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/OC/apps.js | 120 | ||||
-rw-r--r-- | core/src/OC/index.js | 6 | ||||
-rw-r--r-- | core/src/main.js | 6 |
3 files changed, 130 insertions, 2 deletions
diff --git a/core/src/OC/apps.js b/core/src/OC/apps.js new file mode 100644 index 00000000000..8802fc81c2a --- /dev/null +++ b/core/src/OC/apps.js @@ -0,0 +1,120 @@ +/** + * ownCloud - core + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2014 + */ + +import $ from 'jquery'; + +var dynamicSlideToggleEnabled = false; + +const Apps = { + enableDynamicSlideToggle: function () { + dynamicSlideToggleEnabled = true; + } +}; + +/** + * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings + * + * @param {Object} [$el] sidebar element to show, defaults to $('#app-sidebar') + */ +Apps.showAppSidebar = function ($el) { + var $appSidebar = $el || $('#app-sidebar'); + $appSidebar.removeClass('disappear') + .show('slide', {direction: 'right'}, 300); + $('#app-content').trigger(new $.Event('appresized')); +}; + +/** + * Shows the #app-sidebar and removes .with-app-sidebar from subsequent + * siblings + * + * @param {Object} [$el] sidebar element to hide, defaults to $('#app-sidebar') + */ +Apps.hideAppSidebar = function ($el) { + var $appSidebar = $el || $('#app-sidebar'); + $appSidebar.hide('slide', {direction: 'right'}, 300, + function () { + $appSidebar.addClass('disappear'); + }); + $('#app-content').trigger(new $.Event('appresized')); +}; + +/** + * Provides a way to slide down a target area through a button and slide it + * up if the user clicks somewhere else. Used for the news app settings and + * add new field. + * + * Usage: + * <button data-apps-slide-toggle=".slide-area">slide</button> + * <div class=".slide-area" class="hidden">I'm sliding up</div> + */ +export const registerAppsSlideToggle = () => { + var buttons = $('[data-apps-slide-toggle]'); + + if (buttons.length === 0) { + $('#app-navigation').addClass('without-app-settings'); + } + + $(document).click(function (event) { + + if (dynamicSlideToggleEnabled) { + buttons = $('[data-apps-slide-toggle]'); + } + + buttons.each(function (index, button) { + + var areaSelector = $(button).data('apps-slide-toggle'); + var area = $(areaSelector); + + function hideArea () { + area.slideUp(OC.menuSpeed * 4, function () { + area.trigger(new $.Event('hide')); + }); + area.removeClass('opened'); + $(button).removeClass('opened'); + } + + function showArea () { + area.slideDown(OC.menuSpeed * 4, function () { + area.trigger(new $.Event('show')); + }); + area.addClass('opened'); + $(button).addClass('opened'); + var input = $(areaSelector + ' [autofocus]'); + if (input.length === 1) { + input.focus(); + } + } + + // do nothing if the area is animated + if (!area.is(':animated')) { + + // button toggles the area + if ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) { + if (area.is(':visible')) { + hideArea(); + } else { + showArea(); + } + + // all other areas that have not been clicked but are open + // should be slid up + } else { + var closest = $(event.target).closest(areaSelector); + if (area.is(':visible') && closest[0] !== area[0]) { + hideArea(); + } + } + } + }); + + }); +}; + +export default Apps; diff --git a/core/src/OC/index.js b/core/src/OC/index.js index b785305c057..6ae1dc12c90 100644 --- a/core/src/OC/index.js +++ b/core/src/OC/index.js @@ -19,5 +19,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +import Apps from './apps' + /** @namespace OC */ -export default {}; +export default { + Apps, +}; diff --git a/core/src/main.js b/core/src/main.js index e7041e975f5..85e8200f10c 100644 --- a/core/src/main.js +++ b/core/src/main.js @@ -22,5 +22,9 @@ import '@babel/polyfill' import './globals' +import $ from 'jquery' +import {registerAppsSlideToggle} from './OC/apps' -import './OCP/index' +$(document).ready(function () { + registerAppsSlideToggle(); +}); |