From 19625470ee3d55ec24ac7e1c27e9927b97efb427 Mon Sep 17 00:00:00 2001 From: Alfonso Salces Date: Thu, 20 Apr 2023 15:33:07 +0200 Subject: [PATCH] MOBILE-4248 actionsmenu: Create actions menu component --- scripts/langindex.json | 1 + .../components/actionsmenu/actionsmenu.html | 9 ++++ .../components/actionsmenu/actionsmenu.ts | 45 +++++++++++++++++++ .../mod/data/components/components.module.ts | 3 ++ 4 files changed, 58 insertions(+) create mode 100644 src/addons/mod/data/components/actionsmenu/actionsmenu.html create mode 100644 src/addons/mod/data/components/actionsmenu/actionsmenu.ts diff --git a/scripts/langindex.json b/scripts/langindex.json index a52826bd3..1af7a1f3c 100644 --- a/scripts/langindex.json +++ b/scripts/langindex.json @@ -524,6 +524,7 @@ "addon.mod_choice.savemychoice": "choice", "addon.mod_choice.userchoosethisoption": "choice", "addon.mod_choice.yourselection": "choice", + "addon.mod_data.actions": "data", "addon.mod_data.addentries": "data", "addon.mod_data.advancedsearch": "data", "addon.mod_data.alttext": "data", diff --git a/src/addons/mod/data/components/actionsmenu/actionsmenu.html b/src/addons/mod/data/components/actionsmenu/actionsmenu.html new file mode 100644 index 000000000..177470dcd --- /dev/null +++ b/src/addons/mod/data/components/actionsmenu/actionsmenu.html @@ -0,0 +1,9 @@ + + + +

{{ item.text | translate }}

+
+ +
+
diff --git a/src/addons/mod/data/components/actionsmenu/actionsmenu.ts b/src/addons/mod/data/components/actionsmenu/actionsmenu.ts new file mode 100644 index 000000000..921a0f787 --- /dev/null +++ b/src/addons/mod/data/components/actionsmenu/actionsmenu.ts @@ -0,0 +1,45 @@ +// (C) Copyright 2015 Moodle Pty Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Component, Input } from '@angular/core'; +import { PopoverController } from '@singletons'; + +/** + * Component that displays the actionsmenu. + */ +@Component({ + selector: 'addon-mod-data-actionsmenu', + templateUrl: 'actionsmenu.html', +}) +export class AddonModDataActionsMenuComponent { + + @Input() items: AddonModDataActionsMenuItem[] = []; + + /** + * Execute item action and dismiss the popover. + * + * @param item item from which the action will be executed. + */ + async onItemClick(item: AddonModDataActionsMenuItem): Promise { + item.action(); + await PopoverController.dismiss(); + } + +} + +export interface AddonModDataActionsMenuItem { + text: string; + icon: string; + action: () => void; +}; diff --git a/src/addons/mod/data/components/components.module.ts b/src/addons/mod/data/components/components.module.ts index 36d2812b9..5d3021daf 100644 --- a/src/addons/mod/data/components/components.module.ts +++ b/src/addons/mod/data/components/components.module.ts @@ -18,11 +18,13 @@ import { CoreCourseComponentsModule } from '@features/course/components/componen import { AddonModDataIndexComponent } from './index'; import { AddonModDataSearchComponent } from './search/search'; import { CoreCompileHtmlComponentModule } from '@features/compile/components/compile-html/compile-html.module'; +import { AddonModDataActionsMenuComponent } from './actionsmenu/actionsmenu'; @NgModule({ declarations: [ AddonModDataIndexComponent, AddonModDataSearchComponent, + AddonModDataActionsMenuComponent, ], imports: [ CoreSharedModule, @@ -32,6 +34,7 @@ import { CoreCompileHtmlComponentModule } from '@features/compile/components/com exports: [ AddonModDataIndexComponent, AddonModDataSearchComponent, + AddonModDataActionsMenuComponent, ], }) export class AddonModDataComponentsModule {}