@smallpearl/ngx-helper 0.31.1 → 0.31.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/i18n/sp-mat-entity-crud/en.json +2 -0
- package/assets/i18n/sp-mat-entity-crud/zh-hant.json +14 -12
- package/fesm2022/smallpearl-ngx-helper-mat-context-menu.mjs +28 -10
- package/fesm2022/smallpearl-ngx-helper-mat-context-menu.mjs.map +1 -1
- package/fesm2022/smallpearl-ngx-helper-mat-entity-crud.mjs +184 -140
- package/fesm2022/smallpearl-ngx-helper-mat-entity-crud.mjs.map +1 -1
- package/mat-context-menu/src/mat-context-menu.component.d.ts +9 -2
- package/mat-entity-crud/src/form-view-host.component.d.ts +7 -5
- package/mat-entity-crud/src/mat-entity-crud-internal-types.d.ts +1 -1
- package/mat-entity-crud/src/mat-entity-crud.component.d.ts +8 -8
- package/package.json +5 -5
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
"save": "保存",
|
|
3
3
|
"edit": "編輯",
|
|
4
4
|
"delete": "刪除",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
5
|
+
"createNew": "新建",
|
|
6
|
+
"refresh": "刷新",
|
|
7
|
+
"newItem": "新建{{item}}",
|
|
8
|
+
"editItem": "編輯{{item}}",
|
|
9
|
+
"deleteItem": "刪除{{item}}",
|
|
10
|
+
"deleteItemConfirm": "確定要刪除這個{{item}}嗎?",
|
|
11
|
+
"deleteItemSuccess": "{{item}}刪除成功",
|
|
12
|
+
"deleteItemError": "{{item}}刪除失敗",
|
|
13
|
+
"saveSuccess": "{{item}}保存成功",
|
|
14
|
+
"saveError": "{{item}}保存失敗",
|
|
15
|
+
"createSuccess": "{{item}}創建成功",
|
|
16
|
+
"createError": "{{item}}創建失敗",
|
|
17
|
+
"updateSuccess": "{{item}}更新成功",
|
|
18
|
+
"updateError": "{{item}}更新失敗",
|
|
17
19
|
"loseChangesConfirm": "您有未保存的更改。確定要離開嗎?",
|
|
18
20
|
"cancel": "取消",
|
|
19
21
|
"confirm": "確認",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, EventEmitter, Component, ChangeDetectionStrategy, Output } from '@angular/core';
|
|
2
|
+
import { input, signal, EventEmitter, viewChild, Component, ChangeDetectionStrategy, Output } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/material/button';
|
|
4
4
|
import { MatButtonModule } from '@angular/material/button';
|
|
5
5
|
import * as i3 from '@angular/material/icon';
|
|
6
6
|
import { MatIconModule } from '@angular/material/icon';
|
|
7
7
|
import * as i4 from '@angular/material/menu';
|
|
8
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
8
|
+
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
9
9
|
import * as i1 from '@angular/router';
|
|
10
10
|
import { RouterModule } from '@angular/router';
|
|
11
11
|
import { HoverDropDownDirective } from '@smallpearl/ngx-helper/hover-dropdown';
|
|
@@ -13,9 +13,13 @@ import { HoverDropDownDirective } from '@smallpearl/ngx-helper/hover-dropdown';
|
|
|
13
13
|
class SPMatContextMenuComponent {
|
|
14
14
|
/**
|
|
15
15
|
* The menu items to display. Refer to ContextMenuItem doc for details
|
|
16
|
-
* on the menu items.
|
|
16
|
+
* on the menu items. This can be an array ofSPContextMenuItem objects or
|
|
17
|
+
* a function that returns an array of SPContextMenuItem objects.
|
|
18
|
+
* If it is a function, the function will be called with the contextData
|
|
19
|
+
* as the argument when the user clicks on the menu trigger button.
|
|
17
20
|
*/
|
|
18
21
|
menuItems = input.required();
|
|
22
|
+
_menuItems = signal([]);
|
|
19
23
|
/**
|
|
20
24
|
* Label to display for the context menu. If omitted will just show the
|
|
21
25
|
* menuIcon.
|
|
@@ -45,8 +49,22 @@ class SPMatContextMenuComponent {
|
|
|
45
49
|
* value.
|
|
46
50
|
*/
|
|
47
51
|
selected = new EventEmitter();
|
|
52
|
+
menuTrigger = viewChild(MatMenuTrigger);
|
|
48
53
|
constructor() { }
|
|
49
54
|
ngOnInit() { }
|
|
55
|
+
showMenu() {
|
|
56
|
+
const menuTrigger = this.menuTrigger();
|
|
57
|
+
const menuItems = this.menuItems();
|
|
58
|
+
if (typeof menuItems === 'function') {
|
|
59
|
+
this._menuItems.set(menuItems(this.contextData()));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this._menuItems.set(menuItems);
|
|
63
|
+
}
|
|
64
|
+
if (menuTrigger) {
|
|
65
|
+
menuTrigger.openMenu();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
50
68
|
onSelectMenuItem(item) {
|
|
51
69
|
if (!item.route) {
|
|
52
70
|
this.selected.emit(item?.role || item.label);
|
|
@@ -56,14 +74,14 @@ class SPMatContextMenuComponent {
|
|
|
56
74
|
return menuItem?.disable && menuItem.disable(this.contextData());
|
|
57
75
|
}
|
|
58
76
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: SPMatContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
-
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: SPMatContextMenuComponent, isStandalone: true, selector: "sp-mat-context-menu", inputs: { menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, menuIconName: { classPropertyName: "menuIconName", publicName: "menuIconName", isSignal: true, isRequired: false, transformFunction: null }, enableHover: { classPropertyName: "enableHover", publicName: "enableHover", isSignal: true, isRequired: false, transformFunction: null }, contextData: { classPropertyName: "contextData", publicName: "contextData", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, ngImport: i0, template: `
|
|
77
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.6", type: SPMatContextMenuComponent, isStandalone: true, selector: "sp-mat-context-menu", inputs: { menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, menuIconName: { classPropertyName: "menuIconName", publicName: "menuIconName", isSignal: true, isRequired: false, transformFunction: null }, enableHover: { classPropertyName: "enableHover", publicName: "enableHover", isSignal: true, isRequired: false, transformFunction: null }, contextData: { classPropertyName: "contextData", publicName: "contextData", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
60
78
|
<button
|
|
61
|
-
#menuTrigger
|
|
79
|
+
#menuTrigger
|
|
62
80
|
mat-icon-button
|
|
63
81
|
[matMenuTriggerFor]="contextMenu"
|
|
64
82
|
hoverDropDown
|
|
65
83
|
[menu]="contextMenu"
|
|
66
|
-
|
|
84
|
+
(click)="$event.stopImmediatePropagation(); showMenu()"
|
|
67
85
|
>
|
|
68
86
|
@if (menuIconName()) {
|
|
69
87
|
<mat-icon>{{ menuIconName() }}</mat-icon>
|
|
@@ -71,7 +89,7 @@ class SPMatContextMenuComponent {
|
|
|
71
89
|
{{ label() }}
|
|
72
90
|
</button>
|
|
73
91
|
<mat-menu #contextMenu="matMenu" [hasBackdrop]="hasBackdrop()">
|
|
74
|
-
@for (menuItem of
|
|
92
|
+
@for (menuItem of _menuItems(); track $index) {
|
|
75
93
|
@if (menuItem.role) {
|
|
76
94
|
<button
|
|
77
95
|
mat-menu-item
|
|
@@ -117,12 +135,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
117
135
|
selector: 'sp-mat-context-menu',
|
|
118
136
|
template: `
|
|
119
137
|
<button
|
|
120
|
-
#menuTrigger
|
|
138
|
+
#menuTrigger
|
|
121
139
|
mat-icon-button
|
|
122
140
|
[matMenuTriggerFor]="contextMenu"
|
|
123
141
|
hoverDropDown
|
|
124
142
|
[menu]="contextMenu"
|
|
125
|
-
|
|
143
|
+
(click)="$event.stopImmediatePropagation(); showMenu()"
|
|
126
144
|
>
|
|
127
145
|
@if (menuIconName()) {
|
|
128
146
|
<mat-icon>{{ menuIconName() }}</mat-icon>
|
|
@@ -130,7 +148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
130
148
|
{{ label() }}
|
|
131
149
|
</button>
|
|
132
150
|
<mat-menu #contextMenu="matMenu" [hasBackdrop]="hasBackdrop()">
|
|
133
|
-
@for (menuItem of
|
|
151
|
+
@for (menuItem of _menuItems(); track $index) {
|
|
134
152
|
@if (menuItem.role) {
|
|
135
153
|
<button
|
|
136
154
|
mat-menu-item
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smallpearl-ngx-helper-mat-context-menu.mjs","sources":["../../../../projects/smallpearl/ngx-helper/mat-context-menu/src/mat-context-menu.component.ts","../../../../projects/smallpearl/ngx-helper/mat-context-menu/smallpearl-ngx-helper-mat-context-menu.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RouterModule } from '@angular/router';\nimport { HoverDropDownDirective } from '@smallpearl/ngx-helper/hover-dropdown';\n\n/**\n * Describes each item in the context menu.\n */\nexport interface SPContextMenuItem {\n // Menu item label\n label: string;\n // Menu icon, A material icon\n icon?: string;\n // Angular route to navigate to when the menu item is selected.\n route?: string | string[];\n // Argument to the (selected) event when this menu item is selected\n // by the user and the corresponding ContextMenuItem does not have a\n // 'route' property value.\n role?: string;\n // Whether the menu item should be disabled\n disable?: (arg: any) => boolean;\n}\n\n@Component({\n imports: [\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n HoverDropDownDirective,\n ],\n selector: 'sp-mat-context-menu',\n template: `\n <button\n #menuTrigger
|
|
1
|
+
{"version":3,"file":"smallpearl-ngx-helper-mat-context-menu.mjs","sources":["../../../../projects/smallpearl/ngx-helper/mat-context-menu/src/mat-context-menu.component.ts","../../../../projects/smallpearl/ngx-helper/mat-context-menu/smallpearl-ngx-helper-mat-context-menu.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n input,\n OnInit,\n Output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { RouterModule } from '@angular/router';\nimport { HoverDropDownDirective } from '@smallpearl/ngx-helper/hover-dropdown';\n\n/**\n * Describes each item in the context menu.\n */\nexport interface SPContextMenuItem {\n // Menu item label\n label: string;\n // Menu icon, A material icon\n icon?: string;\n // Angular route to navigate to when the menu item is selected.\n route?: string | string[];\n // Argument to the (selected) event when this menu item is selected\n // by the user and the corresponding ContextMenuItem does not have a\n // 'route' property value.\n role?: string;\n // Whether the menu item should be disabled\n disable?: (arg: any) => boolean;\n}\n\n@Component({\n imports: [\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n HoverDropDownDirective,\n ],\n selector: 'sp-mat-context-menu',\n template: `\n <button\n #menuTrigger\n mat-icon-button\n [matMenuTriggerFor]=\"contextMenu\"\n hoverDropDown\n [menu]=\"contextMenu\"\n (click)=\"$event.stopImmediatePropagation(); showMenu()\"\n >\n @if (menuIconName()) {\n <mat-icon>{{ menuIconName() }}</mat-icon>\n }\n {{ label() }}\n </button>\n <mat-menu #contextMenu=\"matMenu\" [hasBackdrop]=\"hasBackdrop()\">\n @for (menuItem of _menuItems(); track $index) {\n @if (menuItem.role) {\n <button\n mat-menu-item\n [routerLink]=\"menuItem.route ? menuItem.route : undefined\"\n (click)=\"$event.preventDefault(); onSelectMenuItem(menuItem)\"\n [disabled]=\"itemDisabled(menuItem)\"\n >\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n {{ menuItem.label }}\n </button>\n } @else {\n <div style=\"padding: .2em 0.6em;\">\n <strong>{{ menuItem.label }}</strong>\n </div>\n }\n <!-- <button\n mat-menu-item\n [routerLink]=\"menuItem.route ? menuItem.route : undefined\"\n (click)=\"$event.preventDefault(); onSelectMenuItem(menuItem)\"\n [disabled]=\"itemDisabled(menuItem)\"\n >\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n {{ menuItem.label }}\n </button> -->\n }\n </mat-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SPMatContextMenuComponent implements OnInit {\n /**\n * The menu items to display. Refer to ContextMenuItem doc for details\n * on the menu items. This can be an array ofSPContextMenuItem objects or\n * a function that returns an array of SPContextMenuItem objects.\n * If it is a function, the function will be called with the contextData\n * as the argument when the user clicks on the menu trigger button.\n */\n menuItems = input.required<SPContextMenuItem[]|((contextData?: any) => SPContextMenuItem[])>();\n\n _menuItems = signal<SPContextMenuItem[]>([])\n /**\n * Label to display for the context menu. If omitted will just show the\n * menuIcon.\n */\n label = input<string>('');\n /**\n * Button icon. defaults to more_vert.\n */\n menuIconName = input<string>('more_vert');\n /**\n * By default the context menu is activated whenever the mouse cursor hovers\n * over the button. Set this to 'true' to disable this feature.\n */\n enableHover = input<boolean>(false);\n /**\n * Context data for menu item disabled callback\n */\n contextData = input<any>();\n /**\n * enable menu backdrop\n */\n hasBackdrop = input<boolean>(false);\n /**\n * Event generated when use selects an item in the context menu. This event\n * is generated only if the context menu item does not specify a route to\n * activate. The string event parameter is ContextMenuItem.role property\n * value.\n */\n @Output() selected = new EventEmitter<string>();\n\n menuTrigger = viewChild(MatMenuTrigger);\n\n constructor() {}\n\n ngOnInit() {}\n\n showMenu() {\n const menuTrigger = this.menuTrigger();\n const menuItems = this.menuItems();\n if (typeof menuItems === 'function') {\n this._menuItems.set(menuItems(this.contextData()));\n } else {\n this._menuItems.set(menuItems);\n }\n if (menuTrigger) {\n menuTrigger.openMenu();\n }\n }\n\n onSelectMenuItem(item: SPContextMenuItem) {\n if (!item.route) {\n this.selected.emit(item?.role || item.label);\n }\n }\n\n itemDisabled(menuItem: SPContextMenuItem) {\n return menuItem?.disable && menuItem.disable(this.contextData());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|