@memberjunction/ng-simple-record-list 2.32.1 → 2.33.0

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/README.md ADDED
@@ -0,0 +1,108 @@
1
+ # @memberjunction/ng-simple-record-list
2
+
3
+ A lightweight, reusable Angular component for displaying, editing, creating, and deleting records in any MemberJunction entity.
4
+
5
+ ## Features
6
+
7
+ - Simple, streamlined UI for entity data
8
+ - Configurable columns display
9
+ - Automatic column detection from entity metadata
10
+ - Support for creating, editing, and deleting records
11
+ - Custom actions with dynamic icons and tooltips
12
+ - Confirmation dialogs for delete and custom actions
13
+ - Responsive design with loading indicators
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install @memberjunction/ng-simple-record-list
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ Import the module in your application:
24
+
25
+ ```typescript
26
+ import { SimpleRecordListModule } from '@memberjunction/ng-simple-record-list';
27
+
28
+ @NgModule({
29
+ imports: [
30
+ // ...
31
+ SimpleRecordListModule
32
+ ]
33
+ })
34
+ export class YourModule { }
35
+ ```
36
+
37
+ Basic implementation example:
38
+
39
+ ```html
40
+ <mj-simple-record-list
41
+ EntityName="Users"
42
+ SortBy="Name"
43
+ [Columns]="['Name', 'Email', 'IsActive']"
44
+ (RecordSelected)="handleRecordSelected($event)"
45
+ ></mj-simple-record-list>
46
+ ```
47
+
48
+ ## Input Properties
49
+
50
+ | Property | Type | Default | Description |
51
+ |----------|------|---------|-------------|
52
+ | EntityName | string | '' | Name of the entity to display records for |
53
+ | Columns | string[] | [] | List of columns to display (auto-detected if empty) |
54
+ | SortBy | string | '' | Name of the column to sort by |
55
+ | AllowDelete | boolean | true | Whether to show delete button |
56
+ | AllowNew | boolean | true | Whether to show new button |
57
+ | AllowEdit | boolean | true | Whether to show edit button |
58
+ | AllowCustomAction | boolean | false | Whether to show custom action button |
59
+ | CustomActionIcon | string | '' | Font Awesome class for custom action icon |
60
+ | CustomActionIconFunction | Function | null | Function to determine custom action icon based on record |
61
+ | CustomActionTooltip | string | '' | Tooltip text for custom action |
62
+ | CustomActionTooltipFunction | Function | null | Function to determine tooltip based on record |
63
+ | CustomActionDialogTitle | string | 'Confirm Action' | Title for custom action confirmation dialog |
64
+ | CustomActionDialogMessage | string | 'Are you sure...' | Message for custom action confirmation dialog |
65
+ | CustomActionDialogInfo | string | '' | Additional info for custom action dialog |
66
+ | EditSectionName | string | 'details' | Section name for entity form dialog |
67
+
68
+ ## Output Events
69
+
70
+ | Event | Type | Description |
71
+ |-------|------|-------------|
72
+ | RecordSelected | EventEmitter<BaseEntity> | Emitted when a record is selected |
73
+ | RecordEdited | EventEmitter<BaseEntity> | Emitted when a record is edited |
74
+ | RecordCreated | EventEmitter<BaseEntity> | Emitted when a record is created |
75
+ | CustomActionClicked | EventEmitter<BaseEntity> | Emitted when custom action is clicked |
76
+ | CustomActionConfirmed | EventEmitter<BaseEntity> | Emitted when custom action is confirmed |
77
+
78
+ ## Custom Actions Example
79
+
80
+ ```html
81
+ <mj-simple-record-list
82
+ EntityName="Users"
83
+ [Columns]="['Name', 'Email', 'IsActive']"
84
+ [AllowDelete]="false"
85
+ [AllowCustomAction]="true"
86
+ [CustomActionIconFunction]="getUserToggleIcon"
87
+ [CustomActionTooltipFunction]="getUserToggleTooltip"
88
+ [CustomActionDialogTitle]="'Toggle User Activation'"
89
+ [CustomActionDialogMessage]="'Are you sure you want to toggle activation for this user?'"
90
+ [CustomActionDialogInfo]="'Active users can log in to the system. Inactive users cannot log in.'"
91
+ (RecordSelected)="selectUser($event)"
92
+ (CustomActionConfirmed)="toggleUserActivation($event)"
93
+ ></mj-simple-record-list>
94
+ ```
95
+
96
+ Example of icon and tooltip functions:
97
+
98
+ ```typescript
99
+ public getUserToggleIcon(record: BaseEntity): string {
100
+ const user = record as UserEntity;
101
+ return user.IsActive ? 'fa-user-lock' : 'fa-user-check';
102
+ }
103
+
104
+ public getUserToggleTooltip(record: BaseEntity): string {
105
+ const user = record as UserEntity;
106
+ return user.IsActive ? 'Deactivate user' : 'Activate user';
107
+ }
108
+ ```
@@ -28,6 +28,42 @@ export declare class SimpleRecordListComponent implements OnInit {
28
28
  * If true, the edit button will be shown for each record.
29
29
  */
30
30
  AllowEdit: boolean;
31
+ /**
32
+ * If true, a custom action button will be shown for each record.
33
+ */
34
+ AllowCustomAction: boolean;
35
+ /**
36
+ * The CSS class for the custom action button icon (e.g. 'fa-user-lock')
37
+ */
38
+ CustomActionIcon: string;
39
+ /**
40
+ * A function that returns the appropriate icon based on the record
41
+ * Signature: (record: BaseEntity) => string
42
+ * If provided, overrides CustomActionIcon
43
+ */
44
+ CustomActionIconFunction: ((record: BaseEntity) => string) | null;
45
+ /**
46
+ * Tooltip text for the custom action button
47
+ */
48
+ CustomActionTooltip: string;
49
+ /**
50
+ * A function that returns the appropriate tooltip text based on the record
51
+ * Signature: (record: BaseEntity) => string
52
+ * If provided, overrides CustomActionTooltip
53
+ */
54
+ CustomActionTooltipFunction: ((record: BaseEntity) => string) | null;
55
+ /**
56
+ * Title for the custom action confirmation dialog
57
+ */
58
+ CustomActionDialogTitle: string;
59
+ /**
60
+ * Message for the custom action confirmation dialog
61
+ */
62
+ CustomActionDialogMessage: string;
63
+ /**
64
+ * Optional additional information for the custom action confirmation dialog
65
+ */
66
+ CustomActionDialogInfo: string;
31
67
  /**
32
68
  * If AllowEdit or AllowNew is true, this is the section name to display for editing a new or existing record.
33
69
  */
@@ -35,6 +71,8 @@ export declare class SimpleRecordListComponent implements OnInit {
35
71
  RecordSelected: EventEmitter<BaseEntity<unknown>>;
36
72
  RecordEdited: EventEmitter<BaseEntity<unknown>>;
37
73
  RecordCreated: EventEmitter<BaseEntity<unknown>>;
74
+ CustomActionClicked: EventEmitter<BaseEntity<unknown>>;
75
+ CustomActionConfirmed: EventEmitter<BaseEntity<unknown>>;
38
76
  isLoading: boolean;
39
77
  records: BaseEntity[];
40
78
  constructor(router: Router);
@@ -42,8 +80,20 @@ export declare class SimpleRecordListComponent implements OnInit {
42
80
  Refresh(): Promise<void>;
43
81
  selectRecord(event: MouseEvent | undefined, r: BaseEntity): void;
44
82
  deleteRecordDialogVisible: boolean;
83
+ customActionDialogVisible: boolean;
45
84
  deleteRecordItem: BaseEntity | null;
85
+ customActionItem: BaseEntity | undefined;
46
86
  deleteRecord(event: MouseEvent, r: BaseEntity): Promise<void>;
87
+ performCustomAction(event: MouseEvent, r: BaseEntity): Promise<void>;
88
+ /**
89
+ * Gets the custom action icon for a record, using the function if provided, otherwise the static icon
90
+ */
91
+ getCustomActionIcon(record: BaseEntity): string;
92
+ /**
93
+ * Gets the custom action tooltip for a record, using the function if provided, otherwise the static tooltip
94
+ */
95
+ getCustomActionTooltip(record: BaseEntity): string;
96
+ closeCustomActionDialog(result: 'Yes' | 'No'): Promise<void>;
47
97
  closeDeleteDialog(result: 'Yes' | 'No'): Promise<void>;
48
98
  editOrNewRecord: BaseEntity;
49
99
  showEditOrNewRecordForm: boolean;
@@ -53,6 +103,6 @@ export declare class SimpleRecordListComponent implements OnInit {
53
103
  onEditOrNewRecordFormClosed(result: 'Save' | 'Cancel'): Promise<void>;
54
104
  getRecordName(r: BaseEntity): string;
55
105
  static ɵfac: i0.ɵɵFactoryDeclaration<SimpleRecordListComponent, never>;
56
- static ɵcmp: i0.ɵɵComponentDeclaration<SimpleRecordListComponent, "mj-simple-record-list", never, { "EntityName": { "alias": "EntityName"; "required": false; }; "Columns": { "alias": "Columns"; "required": false; }; "SortBy": { "alias": "SortBy"; "required": false; }; "AllowDelete": { "alias": "AllowDelete"; "required": false; }; "AllowNew": { "alias": "AllowNew"; "required": false; }; "AllowEdit": { "alias": "AllowEdit"; "required": false; }; "EditSectionName": { "alias": "EditSectionName"; "required": false; }; }, { "RecordSelected": "RecordSelected"; "RecordEdited": "RecordEdited"; "RecordCreated": "RecordCreated"; }, never, never, false, never>;
106
+ static ɵcmp: i0.ɵɵComponentDeclaration<SimpleRecordListComponent, "mj-simple-record-list", never, { "EntityName": { "alias": "EntityName"; "required": false; }; "Columns": { "alias": "Columns"; "required": false; }; "SortBy": { "alias": "SortBy"; "required": false; }; "AllowDelete": { "alias": "AllowDelete"; "required": false; }; "AllowNew": { "alias": "AllowNew"; "required": false; }; "AllowEdit": { "alias": "AllowEdit"; "required": false; }; "AllowCustomAction": { "alias": "AllowCustomAction"; "required": false; }; "CustomActionIcon": { "alias": "CustomActionIcon"; "required": false; }; "CustomActionIconFunction": { "alias": "CustomActionIconFunction"; "required": false; }; "CustomActionTooltip": { "alias": "CustomActionTooltip"; "required": false; }; "CustomActionTooltipFunction": { "alias": "CustomActionTooltipFunction"; "required": false; }; "CustomActionDialogTitle": { "alias": "CustomActionDialogTitle"; "required": false; }; "CustomActionDialogMessage": { "alias": "CustomActionDialogMessage"; "required": false; }; "CustomActionDialogInfo": { "alias": "CustomActionDialogInfo"; "required": false; }; "EditSectionName": { "alias": "EditSectionName"; "required": false; }; }, { "RecordSelected": "RecordSelected"; "RecordEdited": "RecordEdited"; "RecordCreated": "RecordCreated"; "CustomActionClicked": "CustomActionClicked"; "CustomActionConfirmed": "CustomActionConfirmed"; }, never, never, false, never>;
57
107
  }
58
108
  //# sourceMappingURL=simple-record-list.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-record-list.component.d.ts","sourceRoot":"","sources":["../../../src/lib/simple-record-list/simple-record-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAS,YAAY,EAAU,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;;AAGzC,qBAKa,yBAA0B,YAAW,MAAM;IAqC1C,OAAO,CAAC,MAAM;IApC1B;;OAEG;IACM,UAAU,EAAE,MAAM,CAAM;IACjC;;OAEG;IACM,OAAO,EAAE,MAAM,EAAE,CAAM;IAChC;;OAEG;IACM,MAAM,EAAE,MAAM,CAAM;IAC7B;;OAEG;IACM,WAAW,EAAE,OAAO,CAAQ;IACrC;;OAEG;IACM,QAAQ,EAAE,OAAO,CAAQ;IAClC;;OAEG;IACM,SAAS,EAAE,OAAO,CAAQ;IACnC;;OAEG;IACM,eAAe,EAAE,MAAM,CAAa;IAEnC,cAAc,oCAAkC;IAChD,YAAY,oCAAkC;IAC9C,aAAa,oCAAkC;IAElD,SAAS,EAAE,OAAO,CAAS;IAC3B,OAAO,EAAE,UAAU,EAAE,CAAM;gBAEd,MAAM,EAAE,MAAM;IAGlC,QAAQ,IAAI,IAAI;IAIV,OAAO;IAoCN,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,CAAC,EAAE,UAAU;IAOzD,yBAAyB,EAAE,OAAO,CAAS;IAC3C,gBAAgB,EAAG,UAAU,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;IAQ7C,iBAAiB,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI;IAc5C,eAAe,EAAG,UAAU,CAAC;IAC7B,uBAAuB,EAAE,OAAO,CAAS;IACzC,UAAU,EAAE,KAAK,GAAG,MAAM,CAAS;IAC7B,eAAe;IAWf,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;IAQ3C,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAsB3D,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM;yCA3JhC,yBAAyB;2CAAzB,yBAAyB;CAgLrC"}
1
+ {"version":3,"file":"simple-record-list.component.d.ts","sourceRoot":"","sources":["../../../src/lib/simple-record-list/simple-record-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAS,YAAY,EAAU,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;;AAIzC,qBAKa,yBAA0B,YAAW,MAAM;IA2E1C,OAAO,CAAC,MAAM;IA1E1B;;OAEG;IACM,UAAU,EAAE,MAAM,CAAM;IACjC;;OAEG;IACM,OAAO,EAAE,MAAM,EAAE,CAAM;IAChC;;OAEG;IACM,MAAM,EAAE,MAAM,CAAM;IAC7B;;OAEG;IACM,WAAW,EAAE,OAAO,CAAQ;IACrC;;OAEG;IACM,QAAQ,EAAE,OAAO,CAAQ;IAClC;;OAEG;IACM,SAAS,EAAE,OAAO,CAAQ;IACnC;;OAEG;IACM,iBAAiB,EAAE,OAAO,CAAS;IAC5C;;OAEG;IACM,gBAAgB,EAAE,MAAM,CAAM;IACvC;;;;OAIG;IACM,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,CAAC,GAAG,IAAI,CAAQ;IAClF;;OAEG;IACM,mBAAmB,EAAE,MAAM,CAAM;IAC1C;;;;OAIG;IACM,2BAA2B,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,CAAC,GAAG,IAAI,CAAQ;IACrF;;OAEG;IACM,uBAAuB,EAAE,MAAM,CAAoB;IAC5D;;OAEG;IACM,yBAAyB,EAAE,MAAM,CAAmD;IAC7F;;OAEG;IACM,sBAAsB,EAAE,MAAM,CAAM;IAC7C;;OAEG;IACM,eAAe,EAAE,MAAM,CAAa;IAEnC,cAAc,oCAAkC;IAChD,YAAY,oCAAkC;IAC9C,aAAa,oCAAkC;IAC/C,mBAAmB,oCAAkC;IACrD,qBAAqB,oCAAkC;IAE1D,SAAS,EAAE,OAAO,CAAS;IAC3B,OAAO,EAAE,UAAU,EAAE,CAAM;gBAEd,MAAM,EAAE,MAAM;IAGlC,QAAQ,IAAI,IAAI;IAIV,OAAO;IAoCN,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,CAAC,EAAE,UAAU;IAOzD,yBAAyB,EAAE,OAAO,CAAS;IAC3C,yBAAyB,EAAE,OAAO,CAAS;IAC3C,gBAAgB,EAAG,UAAU,GAAG,IAAI,CAAC;IACrC,gBAAgB,EAAG,UAAU,GAAG,SAAS,CAAC;IAEpC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;IAQ7C,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;IAWjE;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAOtD;;OAEG;IACI,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAO5C,uBAAuB,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI;IAS5C,iBAAiB,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI;IAe5C,eAAe,EAAG,UAAU,CAAC;IAC7B,uBAAuB,EAAE,OAAO,CAAS;IACzC,UAAU,EAAE,KAAK,GAAG,MAAM,CAAS;IAC7B,eAAe;IAWf,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU;IAQ3C,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAsB3D,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM;yCA7OhC,yBAAyB;2CAAzB,yBAAyB;CAkQrC"}
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { Component, Input, EventEmitter, Output } from '@angular/core';
11
11
  import { Metadata, RunView } from '@memberjunction/core';
12
- import { SharedService } from '@memberjunction/ng-shared';
12
+ import { MJNotificationService } from '@memberjunction/ng-notifications';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/router";
15
15
  import * as i2 from "@angular/common";
@@ -42,42 +42,55 @@ function SimpleRecordListComponent_Conditional_2_th_5_Template(rf, ctx) { if (rf
42
42
  } }
43
43
  function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
44
44
  const _r6 = i0.ɵɵgetCurrentView();
45
- i0.ɵɵelementStart(0, "span", 15);
45
+ i0.ɵɵelementStart(0, "span", 16);
46
46
  i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_1_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const r_r5 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.editRecord($event, r_r5)); });
47
47
  i0.ɵɵelementEnd();
48
48
  } }
49
49
  function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
50
50
  const _r7 = i0.ɵɵgetCurrentView();
51
- i0.ɵɵelementStart(0, "span", 16);
52
- i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_2_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const r_r5 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.deleteRecord($event, r_r5)); });
51
+ i0.ɵɵelementStart(0, "span", 17);
52
+ i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_2_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const r_r5 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.performCustomAction($event, r_r5)); });
53
+ i0.ɵɵelementEnd();
54
+ } if (rf & 2) {
55
+ const r_r5 = i0.ɵɵnextContext(3).$implicit;
56
+ const ctx_r1 = i0.ɵɵnextContext(2);
57
+ i0.ɵɵclassMapInterpolate1("fa-solid ", ctx_r1.getCustomActionIcon(r_r5), " icon");
58
+ i0.ɵɵpropertyInterpolate("title", ctx_r1.getCustomActionTooltip(r_r5));
59
+ } }
60
+ function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
61
+ const _r8 = i0.ɵɵgetCurrentView();
62
+ i0.ɵɵelementStart(0, "span", 18);
63
+ i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_3_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r8); const r_r5 = i0.ɵɵnextContext(3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.deleteRecord($event, r_r5)); });
53
64
  i0.ɵɵelementEnd();
54
65
  } }
55
66
  function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
56
67
  i0.ɵɵelementStart(0, "span");
57
- i0.ɵɵtemplate(1, SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_1_Template, 1, 0, "span", 13)(2, SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_2_Template, 1, 0, "span", 14);
68
+ i0.ɵɵtemplate(1, SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_1_Template, 1, 0, "span", 13)(2, SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_2_Template, 1, 4, "span", 14)(3, SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Conditional_3_Template, 1, 0, "span", 15);
58
69
  i0.ɵɵelementEnd();
59
70
  } if (rf & 2) {
60
71
  const ctx_r1 = i0.ɵɵnextContext(4);
61
72
  i0.ɵɵadvance();
62
73
  i0.ɵɵconditional(ctx_r1.AllowEdit ? 1 : -1);
63
74
  i0.ɵɵadvance();
64
- i0.ɵɵconditional(ctx_r1.AllowDelete ? 2 : -1);
75
+ i0.ɵɵconditional(ctx_r1.AllowCustomAction ? 2 : -1);
76
+ i0.ɵɵadvance();
77
+ i0.ɵɵconditional(ctx_r1.AllowDelete ? 3 : -1);
65
78
  } }
66
79
  function SimpleRecordListComponent_Conditional_2_tr_7_td_1_Template(rf, ctx) { if (rf & 1) {
67
80
  i0.ɵɵelementStart(0, "td")(1, "span");
68
81
  i0.ɵɵtext(2);
69
82
  i0.ɵɵelementEnd();
70
- i0.ɵɵtemplate(3, SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Template, 3, 2, "span");
83
+ i0.ɵɵtemplate(3, SimpleRecordListComponent_Conditional_2_tr_7_td_1_Conditional_3_Template, 4, 3, "span");
71
84
  i0.ɵɵelementEnd();
72
85
  } if (rf & 2) {
73
- const c_r8 = ctx.$implicit;
74
- const i_r9 = ctx.index;
86
+ const c_r9 = ctx.$implicit;
87
+ const i_r10 = ctx.index;
75
88
  const r_r5 = i0.ɵɵnextContext().$implicit;
76
89
  const ctx_r1 = i0.ɵɵnextContext(2);
77
90
  i0.ɵɵadvance(2);
78
- i0.ɵɵtextInterpolate(r_r5.Get(c_r8));
91
+ i0.ɵɵtextInterpolate(r_r5.Get(c_r9));
79
92
  i0.ɵɵadvance();
80
- i0.ɵɵconditional(i_r9 === 0 && (ctx_r1.AllowDelete || ctx_r1.AllowEdit) ? 3 : -1);
93
+ i0.ɵɵconditional(i_r10 === 0 && (ctx_r1.AllowDelete || ctx_r1.AllowEdit) ? 3 : -1);
81
94
  } }
82
95
  function SimpleRecordListComponent_Conditional_2_tr_7_Template(rf, ctx) { if (rf & 1) {
83
96
  const _r4 = i0.ɵɵgetCurrentView();
@@ -109,27 +122,27 @@ function SimpleRecordListComponent_Conditional_2_Template(rf, ctx) { if (rf & 1)
109
122
  i0.ɵɵproperty("ngForOf", ctx_r1.records);
110
123
  } }
111
124
  function SimpleRecordListComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
112
- const _r10 = i0.ɵɵgetCurrentView();
113
- i0.ɵɵelementStart(0, "mj-entity-form-dialog", 17, 0);
114
- i0.ɵɵlistener("DialogClosed", function SimpleRecordListComponent_Conditional_3_Template_mj_entity_form_dialog_DialogClosed_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onEditOrNewRecordFormClosed($event)); });
125
+ const _r11 = i0.ɵɵgetCurrentView();
126
+ i0.ɵɵelementStart(0, "mj-entity-form-dialog", 19, 0);
127
+ i0.ɵɵlistener("DialogClosed", function SimpleRecordListComponent_Conditional_3_Template_mj_entity_form_dialog_DialogClosed_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onEditOrNewRecordFormClosed($event)); });
115
128
  i0.ɵɵelementEnd();
116
129
  } if (rf & 2) {
117
130
  const ctx_r1 = i0.ɵɵnextContext();
118
131
  i0.ɵɵproperty("Record", ctx_r1.editOrNewRecord)("SectionName", ctx_r1.EditSectionName)("Visible", ctx_r1.showEditOrNewRecordForm)("AutoRevertOnCancel", true)("HandleSave", true)("Width", 550)("Height", 450);
119
132
  } }
120
133
  function SimpleRecordListComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
121
- const _r11 = i0.ɵɵgetCurrentView();
122
- i0.ɵɵelementStart(0, "kendo-dialog", 18);
123
- i0.ɵɵlistener("close", function SimpleRecordListComponent_Conditional_4_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDeleteDialog("No")); });
134
+ const _r12 = i0.ɵɵgetCurrentView();
135
+ i0.ɵɵelementStart(0, "kendo-dialog", 20);
136
+ i0.ɵɵlistener("close", function SimpleRecordListComponent_Conditional_4_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDeleteDialog("No")); });
124
137
  i0.ɵɵelementStart(1, "div");
125
138
  i0.ɵɵtext(2);
126
139
  i0.ɵɵelementEnd();
127
- i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button", 19);
128
- i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDeleteDialog("Yes")); });
140
+ i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button", 21);
141
+ i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDeleteDialog("Yes")); });
129
142
  i0.ɵɵtext(5, "Yes");
130
143
  i0.ɵɵelementEnd();
131
144
  i0.ɵɵelementStart(6, "button", 10);
132
- i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_4_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDeleteDialog("No")); });
145
+ i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_4_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDeleteDialog("No")); });
133
146
  i0.ɵɵtext(7, "No");
134
147
  i0.ɵɵelementEnd()()();
135
148
  } if (rf & 2) {
@@ -138,6 +151,39 @@ function SimpleRecordListComponent_Conditional_4_Template(rf, ctx) { if (rf & 1)
138
151
  i0.ɵɵadvance(2);
139
152
  i0.ɵɵtextInterpolate1(" Are you sure you want to delete '", ctx_r1.getRecordName(ctx_r1.deleteRecordItem), "'? ");
140
153
  } }
154
+ function SimpleRecordListComponent_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
155
+ i0.ɵɵelementStart(0, "p");
156
+ i0.ɵɵtext(1);
157
+ i0.ɵɵelementEnd();
158
+ } if (rf & 2) {
159
+ const ctx_r1 = i0.ɵɵnextContext(2);
160
+ i0.ɵɵadvance();
161
+ i0.ɵɵtextInterpolate(ctx_r1.CustomActionDialogInfo);
162
+ } }
163
+ function SimpleRecordListComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
164
+ const _r13 = i0.ɵɵgetCurrentView();
165
+ i0.ɵɵelementStart(0, "kendo-dialog", 20);
166
+ i0.ɵɵlistener("close", function SimpleRecordListComponent_Conditional_5_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeCustomActionDialog("No")); });
167
+ i0.ɵɵelementStart(1, "div");
168
+ i0.ɵɵtext(2);
169
+ i0.ɵɵtemplate(3, SimpleRecordListComponent_Conditional_5_Conditional_3_Template, 2, 1, "p");
170
+ i0.ɵɵelementEnd();
171
+ i0.ɵɵelementStart(4, "kendo-dialog-actions")(5, "button", 21);
172
+ i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_5_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeCustomActionDialog("Yes")); });
173
+ i0.ɵɵtext(6, "Yes");
174
+ i0.ɵɵelementEnd();
175
+ i0.ɵɵelementStart(7, "button", 10);
176
+ i0.ɵɵlistener("click", function SimpleRecordListComponent_Conditional_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeCustomActionDialog("No")); });
177
+ i0.ɵɵtext(8, "No");
178
+ i0.ɵɵelementEnd()()();
179
+ } if (rf & 2) {
180
+ const ctx_r1 = i0.ɵɵnextContext();
181
+ i0.ɵɵproperty("title", ctx_r1.CustomActionDialogTitle)("width", 450)("height", 200);
182
+ i0.ɵɵadvance(2);
183
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.CustomActionDialogMessage.replace("{{recordName}}", ctx_r1.getRecordName(ctx_r1.customActionItem)), " ");
184
+ i0.ɵɵadvance();
185
+ i0.ɵɵconditional(ctx_r1.CustomActionDialogInfo ? 3 : -1);
186
+ } }
141
187
  export class SimpleRecordListComponent {
142
188
  constructor(router) {
143
189
  this.router = router;
@@ -165,6 +211,42 @@ export class SimpleRecordListComponent {
165
211
  * If true, the edit button will be shown for each record.
166
212
  */
167
213
  this.AllowEdit = true;
214
+ /**
215
+ * If true, a custom action button will be shown for each record.
216
+ */
217
+ this.AllowCustomAction = false;
218
+ /**
219
+ * The CSS class for the custom action button icon (e.g. 'fa-user-lock')
220
+ */
221
+ this.CustomActionIcon = '';
222
+ /**
223
+ * A function that returns the appropriate icon based on the record
224
+ * Signature: (record: BaseEntity) => string
225
+ * If provided, overrides CustomActionIcon
226
+ */
227
+ this.CustomActionIconFunction = null;
228
+ /**
229
+ * Tooltip text for the custom action button
230
+ */
231
+ this.CustomActionTooltip = '';
232
+ /**
233
+ * A function that returns the appropriate tooltip text based on the record
234
+ * Signature: (record: BaseEntity) => string
235
+ * If provided, overrides CustomActionTooltip
236
+ */
237
+ this.CustomActionTooltipFunction = null;
238
+ /**
239
+ * Title for the custom action confirmation dialog
240
+ */
241
+ this.CustomActionDialogTitle = 'Confirm Action';
242
+ /**
243
+ * Message for the custom action confirmation dialog
244
+ */
245
+ this.CustomActionDialogMessage = 'Are you sure you want to perform this action?';
246
+ /**
247
+ * Optional additional information for the custom action confirmation dialog
248
+ */
249
+ this.CustomActionDialogInfo = '';
168
250
  /**
169
251
  * If AllowEdit or AllowNew is true, this is the section name to display for editing a new or existing record.
170
252
  */
@@ -172,9 +254,12 @@ export class SimpleRecordListComponent {
172
254
  this.RecordSelected = new EventEmitter();
173
255
  this.RecordEdited = new EventEmitter();
174
256
  this.RecordCreated = new EventEmitter();
257
+ this.CustomActionClicked = new EventEmitter();
258
+ this.CustomActionConfirmed = new EventEmitter();
175
259
  this.isLoading = false;
176
260
  this.records = [];
177
261
  this.deleteRecordDialogVisible = false;
262
+ this.customActionDialogVisible = false;
178
263
  this.showEditOrNewRecordForm = false;
179
264
  this.recordMode = 'new';
180
265
  }
@@ -231,6 +316,45 @@ export class SimpleRecordListComponent {
231
316
  event.stopPropagation(); // prevent row from getting click
232
317
  });
233
318
  }
319
+ performCustomAction(event, r) {
320
+ return __awaiter(this, void 0, void 0, function* () {
321
+ // first emit the clicked event to allow the parent to react
322
+ this.CustomActionClicked.emit(r);
323
+ // confirm with the user
324
+ this.customActionItem = r;
325
+ this.customActionDialogVisible = true;
326
+ if (event)
327
+ event.stopPropagation(); // prevent row from getting click
328
+ });
329
+ }
330
+ /**
331
+ * Gets the custom action icon for a record, using the function if provided, otherwise the static icon
332
+ */
333
+ getCustomActionIcon(record) {
334
+ if (this.CustomActionIconFunction) {
335
+ return this.CustomActionIconFunction(record);
336
+ }
337
+ return this.CustomActionIcon;
338
+ }
339
+ /**
340
+ * Gets the custom action tooltip for a record, using the function if provided, otherwise the static tooltip
341
+ */
342
+ getCustomActionTooltip(record) {
343
+ if (this.CustomActionTooltipFunction) {
344
+ return this.CustomActionTooltipFunction(record);
345
+ }
346
+ return this.CustomActionTooltip;
347
+ }
348
+ closeCustomActionDialog(result) {
349
+ return __awaiter(this, void 0, void 0, function* () {
350
+ this.customActionDialogVisible = false;
351
+ if (result === 'Yes') {
352
+ // emit the event so the parent can handle the action
353
+ this.CustomActionConfirmed.emit(this.customActionItem);
354
+ }
355
+ this.customActionItem = undefined;
356
+ });
357
+ }
234
358
  closeDeleteDialog(result) {
235
359
  return __awaiter(this, void 0, void 0, function* () {
236
360
  // if the user confirms, delete the record
@@ -238,7 +362,8 @@ export class SimpleRecordListComponent {
238
362
  if (result === 'Yes') {
239
363
  if (!(yield this.deleteRecordItem.Delete())) {
240
364
  // show an error message
241
- SharedService.Instance.CreateSimpleNotification('Error deleting record', 'error', 3000);
365
+ const errorMessage = this.deleteRecordItem.LatestResult.Message;
366
+ MJNotificationService.Instance.CreateSimpleNotification('Error deleting record: ' + errorMessage, 'error', 3000);
242
367
  }
243
368
  else
244
369
  this.Refresh(); // refresh the list
@@ -309,11 +434,11 @@ export class SimpleRecordListComponent {
309
434
  }
310
435
  }
311
436
  SimpleRecordListComponent.ɵfac = function SimpleRecordListComponent_Factory(t) { return new (t || SimpleRecordListComponent)(i0.ɵɵdirectiveInject(i1.Router)); };
312
- SimpleRecordListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SimpleRecordListComponent, selectors: [["mj-simple-record-list"]], inputs: { EntityName: "EntityName", Columns: "Columns", SortBy: "SortBy", AllowDelete: "AllowDelete", AllowNew: "AllowNew", AllowEdit: "AllowEdit", EditSectionName: "EditSectionName" }, outputs: { RecordSelected: "RecordSelected", RecordEdited: "RecordEdited", RecordCreated: "RecordCreated" }, decls: 5, vars: 3, consts: [["entityForm", ""], ["mjFillContainer", "", 1, "wrapper", "scrollable"], [1, "vertical-full-width"], ["Mode", "section", 3, "Record", "SectionName", "Visible", "AutoRevertOnCancel", "HandleSave", "Width", "Height"], [3, "title", "width", "height"], ["kendoButton", ""], [1, "grid"], [1, "sticky-header"], [4, "ngFor", "ngForOf"], [3, "click", 4, "ngFor", "ngForOf"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-plus"], [3, "click"], [1, "fa-solid", "fa-pen-to-square", "icon"], [1, "fa-solid", "fa-trash-can", "icon"], [1, "fa-solid", "fa-pen-to-square", "icon", 3, "click"], [1, "fa-solid", "fa-trash-can", "icon", 3, "click"], ["Mode", "section", 3, "DialogClosed", "Record", "SectionName", "Visible", "AutoRevertOnCancel", "HandleSave", "Width", "Height"], [3, "close", "title", "width", "height"], ["kendoButton", "", "themeColor", "primary", 3, "click"]], template: function SimpleRecordListComponent_Template(rf, ctx) { if (rf & 1) {
437
+ SimpleRecordListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SimpleRecordListComponent, selectors: [["mj-simple-record-list"]], inputs: { EntityName: "EntityName", Columns: "Columns", SortBy: "SortBy", AllowDelete: "AllowDelete", AllowNew: "AllowNew", AllowEdit: "AllowEdit", AllowCustomAction: "AllowCustomAction", CustomActionIcon: "CustomActionIcon", CustomActionIconFunction: "CustomActionIconFunction", CustomActionTooltip: "CustomActionTooltip", CustomActionTooltipFunction: "CustomActionTooltipFunction", CustomActionDialogTitle: "CustomActionDialogTitle", CustomActionDialogMessage: "CustomActionDialogMessage", CustomActionDialogInfo: "CustomActionDialogInfo", EditSectionName: "EditSectionName" }, outputs: { RecordSelected: "RecordSelected", RecordEdited: "RecordEdited", RecordCreated: "RecordCreated", CustomActionClicked: "CustomActionClicked", CustomActionConfirmed: "CustomActionConfirmed" }, decls: 6, vars: 4, consts: [["entityForm", ""], ["mjFillContainer", "", 1, "wrapper", "scrollable"], [1, "vertical-full-width"], ["Mode", "section", 3, "Record", "SectionName", "Visible", "AutoRevertOnCancel", "HandleSave", "Width", "Height"], [3, "title", "width", "height"], ["kendoButton", ""], [1, "grid"], [1, "sticky-header"], [4, "ngFor", "ngForOf"], [3, "click", 4, "ngFor", "ngForOf"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-plus"], [3, "click"], ["title", "Edit", 1, "fa-solid", "fa-pen-to-square", "icon"], [3, "class", "title"], ["title", "Delete", 1, "fa-solid", "fa-trash-can", "icon"], ["title", "Edit", 1, "fa-solid", "fa-pen-to-square", "icon", 3, "click"], [3, "click", "title"], ["title", "Delete", 1, "fa-solid", "fa-trash-can", "icon", 3, "click"], ["Mode", "section", 3, "DialogClosed", "Record", "SectionName", "Visible", "AutoRevertOnCancel", "HandleSave", "Width", "Height"], [3, "close", "title", "width", "height"], ["kendoButton", "", "themeColor", "primary", 3, "click"]], template: function SimpleRecordListComponent_Template(rf, ctx) { if (rf & 1) {
313
438
  i0.ɵɵelementStart(0, "div", 1);
314
439
  i0.ɵɵtemplate(1, SimpleRecordListComponent_Conditional_1_Template, 2, 0, "div")(2, SimpleRecordListComponent_Conditional_2_Template, 8, 3, "div", 2);
315
440
  i0.ɵɵelementEnd();
316
- i0.ɵɵtemplate(3, SimpleRecordListComponent_Conditional_3_Template, 2, 7, "mj-entity-form-dialog", 3)(4, SimpleRecordListComponent_Conditional_4_Template, 8, 4, "kendo-dialog", 4);
441
+ i0.ɵɵtemplate(3, SimpleRecordListComponent_Conditional_3_Template, 2, 7, "mj-entity-form-dialog", 3)(4, SimpleRecordListComponent_Conditional_4_Template, 8, 4, "kendo-dialog", 4)(5, SimpleRecordListComponent_Conditional_5_Template, 9, 5, "kendo-dialog", 4);
317
442
  } if (rf & 2) {
318
443
  i0.ɵɵadvance();
319
444
  i0.ɵɵconditional(ctx.isLoading ? 1 : 2);
@@ -321,10 +446,12 @@ SimpleRecordListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: S
321
446
  i0.ɵɵconditional(ctx.AllowNew || ctx.AllowEdit ? 3 : -1);
322
447
  i0.ɵɵadvance();
323
448
  i0.ɵɵconditional(ctx.deleteRecordDialogVisible && ctx.AllowDelete ? 4 : -1);
449
+ i0.ɵɵadvance();
450
+ i0.ɵɵconditional(ctx.customActionDialogVisible && ctx.AllowCustomAction ? 5 : -1);
324
451
  } }, dependencies: [i2.NgForOf, i3.DialogComponent, i3.DialogActionsComponent, i4.FillContainer, i5.ButtonComponent, i6.EntityFormDialogComponent, i7.LoaderComponent], styles: ["button[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-top: 5px;\n width: 125px;\n}\n\n.wrapper[_ngcontent-%COMP%] {\n padding-right: 10px;\n}\n\n\n\ntable[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-top: 10px;\n margin-right: 5px;\n border-collapse: collapse; \n\n width: 100%;\n}\n \ntable[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background-color: #f2f2f2; \n\n color: black; \n\n font-weight: bold; \n\n text-align: left;\n}\n\n\n\ntable[_ngcontent-%COMP%] th[_ngcontent-%COMP%], table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n height: 36px; \n\n padding: 0 8px; \n\n}\n\n\n\ntable[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child {\n display: flex; \n\n justify-content: space-between; \n\n align-items: center; \n\n padding-right: 8px; \n\n}\n\n\n\ntd[_ngcontent-%COMP%]:first-child span[_ngcontent-%COMP%]:first-child {\n border: none; \n\n}\n\n\n\ntd[_ngcontent-%COMP%]:first-child span[_ngcontent-%COMP%]:last-child {\n border: none; \n\n}\n\n\n\ntd[_ngcontent-%COMP%]:first-child .icon[_ngcontent-%COMP%] {\n margin-left: 10px; \n\n cursor: pointer; \n\n}\n\ntable[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\ntable[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background-color: #e7f4ff; \n\n}\n\n.sticky-header[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n}\n\n.scrollable[_ngcontent-%COMP%] {\n display: flex;\n overflow-y: scroll;\n max-height: 95%;\n}\n\n.vertical-full-width[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n width: 100%;\n}"] });
325
452
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SimpleRecordListComponent, [{
326
453
  type: Component,
327
- args: [{ selector: 'mj-simple-record-list', template: "<div mjFillContainer class=\"wrapper scrollable\">\n @if(isLoading) {\n <div>\n <kendo-loader></kendo-loader>\n </div>\n }\n @else {\n <div class=\"vertical-full-width\">\n @if(AllowNew) {\n <button kendoButton (click)=\"createNewRecord()\"><span class=\"fa-solid fa-plus\"></span> New</button>\n }\n <table class=\"grid\">\n <thead class=\"sticky-header\">\n <tr>\n <th *ngFor=\"let c of Columns\">\n {{ c }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let r of records\" (click)=\"selectRecord(undefined, r)\">\n <td *ngFor=\"let c of Columns; let i = index\">\n <span>{{ r.Get(c) }}</span>\n @if(i === 0 && (AllowDelete || AllowEdit)) {\n <span>\n @if (AllowEdit) {\n <span class=\"fa-solid fa-pen-to-square icon\" (click)=\"editRecord($event, r)\"></span>\n }\n @if (AllowDelete) {\n <span class=\"fa-solid fa-trash-can icon\" (click)=\"deleteRecord($event, r)\"></span>\n }\n </span> \n }\n </td>\n </tr>\n </tbody>\n </table> \n </div> \n }\n</div>\n \n@if(AllowNew || AllowEdit) {\n<mj-entity-form-dialog #entityForm \n [Record]=\"editOrNewRecord\" \n [SectionName]=\"EditSectionName\"\n Mode=\"section\" \n [Visible]=\"showEditOrNewRecordForm\" \n [AutoRevertOnCancel]=\"true\"\n [HandleSave]=\"true\"\n [Width]=\"550\"\n [Height]=\"450\"\n (DialogClosed)=\"onEditOrNewRecordFormClosed($event)\">\n</mj-entity-form-dialog>\n}\n\n@if(deleteRecordDialogVisible && AllowDelete) {\n<kendo-dialog\n [title]=\"'Delete ' + EntityName + '?'\" \n [width]=\"450\"\n [height]=\"200\"\n (close)=\"closeDeleteDialog('No')\" >\n <div>\n Are you sure you want to delete '{{getRecordName(deleteRecordItem!)}}'?\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeDeleteDialog('Yes')\" themeColor=\"primary\">Yes</button>\n <button kendoButton (click)=\"closeDeleteDialog('No')\">No</button>\n </kendo-dialog-actions>\n</kendo-dialog>\n}\n", styles: ["button {\n margin-left: 5px;\n margin-top: 5px;\n width: 125px;\n}\n\n.wrapper {\n padding-right: 10px;\n}\n\n/* Style for the whole table */\ntable {\n margin-left: 5px;\n margin-top: 10px;\n margin-right: 5px;\n border-collapse: collapse; /* Ensures border collapse for a cleaner look */\n width: 100%;\n}\n \ntable th {\n background-color: #f2f2f2; /* Light gray background for headers */\n color: black; /* Black text color for headers */\n font-weight: bold; /* Bold font weight for headers */\n text-align: left;\n}\n\n/* Style for all table cells */\ntable th, table td {\n height: 36px; /* Fixed height for all rows */\n padding: 0 8px; /* Add some padding inside cells */\n}\n\n/* Style for the first column cells */\ntable td:first-child {\n display: flex; /* Make the cell a flex container */\n justify-content: space-between; /* Space out the text and icons */\n align-items: center; /* Center items vertically */\n padding-right: 8px; /* Ensure there is some padding on the right */\n}\n\n/* Style for the text span within the first column */\ntd:first-child span:first-child {\n border: none; /* Ensures no border is applied to the span */\n}\n\n/* Style for the icons container span within the first column */\ntd:first-child span:last-child {\n border: none; /* Ensures no border is applied to the span */\n}\n\n/* Style for the icons within the first column */\ntd:first-child .icon {\n margin-left: 10px; /* Space between icons if needed */\n cursor: pointer; /* Change cursor to pointer on hover */\n}\n\ntable tr {\n cursor: pointer;\n}\n\ntable tr:hover {\n background-color: #e7f4ff; /* Light blue for even rows */\n}\n\n.sticky-header {\n position: sticky;\n top: 0;\n}\n\n.scrollable {\n display: flex;\n overflow-y: scroll;\n max-height: 95%;\n}\n\n.vertical-full-width {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n "] }]
454
+ args: [{ selector: 'mj-simple-record-list', template: "<div mjFillContainer class=\"wrapper scrollable\">\n @if(isLoading) {\n <div>\n <kendo-loader></kendo-loader>\n </div>\n }\n @else {\n <div class=\"vertical-full-width\">\n @if(AllowNew) {\n <button kendoButton (click)=\"createNewRecord()\"><span class=\"fa-solid fa-plus\"></span> New</button>\n }\n <table class=\"grid\">\n <thead class=\"sticky-header\">\n <tr>\n <th *ngFor=\"let c of Columns\">\n {{ c }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let r of records\" (click)=\"selectRecord(undefined, r)\">\n <td *ngFor=\"let c of Columns; let i = index\">\n <span>{{ r.Get(c) }}</span>\n @if(i === 0 && (AllowDelete || AllowEdit)) {\n <span>\n @if (AllowEdit) {\n <span class=\"fa-solid fa-pen-to-square icon\" (click)=\"editRecord($event, r)\" title=\"Edit\"></span>\n }\n @if (AllowCustomAction) {\n <span \n class=\"fa-solid {{getCustomActionIcon(r)}} icon\" \n (click)=\"performCustomAction($event, r)\" \n title=\"{{getCustomActionTooltip(r)}}\"\n ></span>\n }\n @if (AllowDelete) {\n <span class=\"fa-solid fa-trash-can icon\" (click)=\"deleteRecord($event, r)\" title=\"Delete\"></span>\n }\n </span> \n }\n </td>\n </tr>\n </tbody>\n </table> \n </div> \n }\n</div>\n \n@if(AllowNew || AllowEdit) {\n<mj-entity-form-dialog #entityForm \n [Record]=\"editOrNewRecord\" \n [SectionName]=\"EditSectionName\"\n Mode=\"section\" \n [Visible]=\"showEditOrNewRecordForm\" \n [AutoRevertOnCancel]=\"true\"\n [HandleSave]=\"true\"\n [Width]=\"550\"\n [Height]=\"450\"\n (DialogClosed)=\"onEditOrNewRecordFormClosed($event)\">\n</mj-entity-form-dialog>\n}\n\n@if(deleteRecordDialogVisible && AllowDelete) {\n<kendo-dialog\n [title]=\"'Delete ' + EntityName + '?'\" \n [width]=\"450\"\n [height]=\"200\"\n (close)=\"closeDeleteDialog('No')\" >\n <div>\n Are you sure you want to delete '{{getRecordName(deleteRecordItem!)}}'?\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeDeleteDialog('Yes')\" themeColor=\"primary\">Yes</button>\n <button kendoButton (click)=\"closeDeleteDialog('No')\">No</button>\n </kendo-dialog-actions>\n</kendo-dialog>\n}\n\n@if(customActionDialogVisible && AllowCustomAction) {\n<kendo-dialog\n [title]=\"CustomActionDialogTitle\" \n [width]=\"450\"\n [height]=\"200\"\n (close)=\"closeCustomActionDialog('No')\" >\n <div>\n {{ CustomActionDialogMessage.replace('{{recordName}}', getRecordName(customActionItem!)) }}\n @if(CustomActionDialogInfo) {\n <p>{{ CustomActionDialogInfo }}</p>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeCustomActionDialog('Yes')\" themeColor=\"primary\">Yes</button>\n <button kendoButton (click)=\"closeCustomActionDialog('No')\">No</button>\n </kendo-dialog-actions>\n</kendo-dialog>\n}\n", styles: ["button {\n margin-left: 5px;\n margin-top: 5px;\n width: 125px;\n}\n\n.wrapper {\n padding-right: 10px;\n}\n\n/* Style for the whole table */\ntable {\n margin-left: 5px;\n margin-top: 10px;\n margin-right: 5px;\n border-collapse: collapse; /* Ensures border collapse for a cleaner look */\n width: 100%;\n}\n \ntable th {\n background-color: #f2f2f2; /* Light gray background for headers */\n color: black; /* Black text color for headers */\n font-weight: bold; /* Bold font weight for headers */\n text-align: left;\n}\n\n/* Style for all table cells */\ntable th, table td {\n height: 36px; /* Fixed height for all rows */\n padding: 0 8px; /* Add some padding inside cells */\n}\n\n/* Style for the first column cells */\ntable td:first-child {\n display: flex; /* Make the cell a flex container */\n justify-content: space-between; /* Space out the text and icons */\n align-items: center; /* Center items vertically */\n padding-right: 8px; /* Ensure there is some padding on the right */\n}\n\n/* Style for the text span within the first column */\ntd:first-child span:first-child {\n border: none; /* Ensures no border is applied to the span */\n}\n\n/* Style for the icons container span within the first column */\ntd:first-child span:last-child {\n border: none; /* Ensures no border is applied to the span */\n}\n\n/* Style for the icons within the first column */\ntd:first-child .icon {\n margin-left: 10px; /* Space between icons if needed */\n cursor: pointer; /* Change cursor to pointer on hover */\n}\n\ntable tr {\n cursor: pointer;\n}\n\ntable tr:hover {\n background-color: #e7f4ff; /* Light blue for even rows */\n}\n\n.sticky-header {\n position: sticky;\n top: 0;\n}\n\n.scrollable {\n display: flex;\n overflow-y: scroll;\n max-height: 95%;\n}\n\n.vertical-full-width {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n "] }]
328
455
  }], () => [{ type: i1.Router }], { EntityName: [{
329
456
  type: Input
330
457
  }], Columns: [{
@@ -337,6 +464,22 @@ SimpleRecordListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: S
337
464
  type: Input
338
465
  }], AllowEdit: [{
339
466
  type: Input
467
+ }], AllowCustomAction: [{
468
+ type: Input
469
+ }], CustomActionIcon: [{
470
+ type: Input
471
+ }], CustomActionIconFunction: [{
472
+ type: Input
473
+ }], CustomActionTooltip: [{
474
+ type: Input
475
+ }], CustomActionTooltipFunction: [{
476
+ type: Input
477
+ }], CustomActionDialogTitle: [{
478
+ type: Input
479
+ }], CustomActionDialogMessage: [{
480
+ type: Input
481
+ }], CustomActionDialogInfo: [{
482
+ type: Input
340
483
  }], EditSectionName: [{
341
484
  type: Input
342
485
  }], RecordSelected: [{
@@ -345,6 +488,10 @@ SimpleRecordListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: S
345
488
  type: Output
346
489
  }], RecordCreated: [{
347
490
  type: Output
491
+ }], CustomActionClicked: [{
492
+ type: Output
493
+ }], CustomActionConfirmed: [{
494
+ type: Output
348
495
  }] }); })();
349
496
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SimpleRecordListComponent, { className: "SimpleRecordListComponent", filePath: "src/lib/simple-record-list/simple-record-list.component.ts", lineNumber: 13 }); })();
350
497
  //# sourceMappingURL=simple-record-list.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-record-list.component.js","sourceRoot":"","sources":["../../../src/lib/simple-record-list/simple-record-list.component.ts","../../../src/lib/simple-record-list/simple-record-list.component.html"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAU,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAc,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;;;;;;;;;;ICDjD,2BAAK;IACD,+BAA6B;IACjC,iBAAM;;;;IAKE,kCAAgD;IAA5B,4MAAS,wBAAiB,KAAC;IAAC,2BAAsC;IAAC,oBAAG;IAAA,iBAAS;;;IAK3F,0BAA8B;IAC1B,YACJ;IAAA,iBAAK;;;IADD,cACJ;IADI,qCACJ;;;;IAUgB,gCAA6E;IAAhC,oRAAS,+BAAqB,KAAC;IAAC,iBAAO;;;;IAGpF,gCAA2E;IAAlC,oRAAS,iCAAuB,KAAC;IAAC,iBAAO;;;IAL1F,4BAAM;IAIF,AAHA,0HAAiB,6GAGE;IAGvB,iBAAO;;;IANH,cAEC;IAFD,2CAEC;IACD,cAEC;IAFD,6CAEC;;;IART,AADJ,0BAA6C,WACnC;IAAA,YAAc;IAAA,iBAAO;IAC3B,wGAA4C;IAUhD,iBAAK;;;;;;IAXK,eAAc;IAAd,oCAAc;IACpB,cASC;IATD,iFASC;;;;IAZT,8BAAmE;IAArC,sNAAS,oBAAa,SAAS,OAAI,KAAC;IAC9D,2FAA6C;IAajD,iBAAK;;;IAbiB,cAAY;IAAZ,wCAAY;;;IAd9C,8BAAiC;IAC7B,mGAAe;IAKP,AADJ,AADJ,gCAAoB,eACa,SACrB;IACA,sFAA8B;IAItC,AADI,iBAAK,EACD;IACR,6BAAO;IACH,sFAAmE;IAiB/E,AADI,AADI,iBAAQ,EACJ,EACN;;;IA7BF,cAEC;IAFD,0CAEC;IAI6B,eAAU;IAAV,wCAAU;IAMd,eAAU;IAAV,wCAAU;;;;IAsBhD,oDASyD;IAArD,iOAAgB,0CAAmC,KAAC;IACxD,iBAAwB;;;IAFpB,AADA,AADA,AADA,AADA,AAFA,AADA,+CAA0B,uCACK,2CAEI,4BACR,oBACR,cACN,eACC;;;;IAMlB,wCAIuC;IAAnC,oMAAS,yBAAkB,IAAI,CAAC,KAAC;IACjC,2BAAK;IACD,YACJ;IAAA,iBAAM;IAEF,AADJ,4CAAsB,iBAC2D;IAAzD,8LAAS,yBAAkB,KAAK,CAAC,KAAC;IAAuB,mBAAG;IAAA,iBAAS;IACzF,kCAAsD;IAAlC,8LAAS,yBAAkB,IAAI,CAAC,KAAC;IAAC,kBAAE;IAEhE,AADI,AAD4D,iBAAS,EAC9C,EACZ;;;IATX,AADA,AADA,2DAAsC,cACzB,eACC;IAGV,eACJ;IADI,iHACJ;;ADnDJ,MAAM,OAAO,yBAAyB;IAqCpC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QApClC;;WAEG;QACM,eAAU,GAAW,EAAE,CAAC;QACjC;;WAEG;QACM,YAAO,GAAa,EAAE,CAAC;QAChC;;WAEG;QACM,WAAM,GAAW,EAAE,CAAC;QAC7B;;WAEG;QACM,gBAAW,GAAY,IAAI,CAAC;QACrC;;WAEG;QACM,aAAQ,GAAY,IAAI,CAAC;QAClC;;WAEG;QACM,cAAS,GAAY,IAAI,CAAC;QACnC;;WAEG;QACM,oBAAe,GAAW,SAAS,CAAC;QAEnC,mBAAc,GAAG,IAAI,YAAY,EAAc,CAAC;QAChD,iBAAY,GAAG,IAAI,YAAY,EAAc,CAAC;QAC9C,kBAAa,GAAG,IAAI,YAAY,EAAc,CAAC;QAElD,cAAS,GAAY,KAAK,CAAC;QAC3B,YAAO,GAAiB,EAAE,CAAC;QAoD3B,8BAAyB,GAAY,KAAK,CAAC;QAyB3C,4BAAuB,GAAY,KAAK,CAAC;QACzC,eAAU,GAAmB,KAAK,CAAC;IA3E1C,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAEK,OAAO;;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YAErB,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,oNAAoN;gBACpN,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,IAAI,CAAC,EAAE,CAAC;oBACN,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE;wBACtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;yBACtC,CAAC;wBACJ,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;wBACnE,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC;4BACjC,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;4BAErD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;gBAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAA;YACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;iBACI,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;YAClE,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACxB,CAAC;KAAA;IAEM,YAAY,CAAC,KAA6B,EAAE,CAAa;QAC9D,IAAI,KAAK;YACP,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,iCAAiC;QAE5D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAIY,YAAY,CAAC,KAAiB,EAAE,CAAa;;YACxD,8BAA8B;YAC9B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,IAAI,KAAK;gBACP,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,iCAAiC;QAC9D,CAAC;KAAA;IAEY,iBAAiB,CAAC,MAAoB;;YACjD,0CAA0C;YAC1C,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;YACvC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAA,MAAM,IAAI,CAAC,gBAAiB,CAAC,MAAM,EAAE,CAAA,EAAE,CAAC;oBAC3C,wBAAwB;oBACxB,aAAa,CAAC,QAAQ,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC1F,CAAC;;oBAEC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,mBAAmB;YACvC,CAAC;YACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;KAAA;IAKY,eAAe;;YAC1B,4EAA4E;YAC5E,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACtC,CAAC;QACH,CAAC;KAAA;IAEY,UAAU,CAAC,KAAiB,EAAE,CAAa;;YACtD,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACpC,IAAI,KAAK;gBACP,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,iCAAiC;QAC9D,CAAC;KAAA;IAEY,2BAA2B,CAAC,MAAyB;;YAChE,IAAI,CAAC,IAAI,CAAC,eAAe;gBACvB,OAAO,CAAC,0EAA0E;YAEpF,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YAErC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,gGAAgG;gBAChG,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;oBACjC,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM;wBAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;wBAE7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAEhD,uBAAuB;oBACvB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvB,CAAC;;oBAEC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;KAAA;IAEM,aAAa,CAAC,CAAa;QAChC,oMAAoM;QACpM,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1D,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,SAAS;YACX,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC1B,CAAC;YACJ,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YACxD,IAAI,SAAS;gBACX,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBAClB,CAAC;gBACJ,mEAAmE;gBACnE,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpE,OAAO,UAAU,GAAG,QAAQ,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;;kGA/KU,yBAAyB;4EAAzB,yBAAyB;QCZtC,8BAAgD;QAM5C,AALA,+EAAgB,qEAKT;QAiCX,iBAAM;QAgBN,AAdA,oGAA4B,8EAcmB;;QAtD3C,cAqCC;QArCD,uCAqCC;QAGL,eAYC;QAZD,wDAYC;QAED,cAcC;QAdD,2EAcC;;iFDzDY,yBAAyB;cALrC,SAAS;2BACE,uBAAuB;uCAQxB,UAAU;kBAAlB,KAAK;YAIG,OAAO;kBAAf,KAAK;YAIG,MAAM;kBAAd,KAAK;YAIG,WAAW;kBAAnB,KAAK;YAIG,QAAQ;kBAAhB,KAAK;YAIG,SAAS;kBAAjB,KAAK;YAIG,eAAe;kBAAvB,KAAK;YAEI,cAAc;kBAAvB,MAAM;YACG,YAAY;kBAArB,MAAM;YACG,aAAa;kBAAtB,MAAM;;kFAhCI,yBAAyB"}
1
+ {"version":3,"file":"simple-record-list.component.js","sourceRoot":"","sources":["../../../src/lib/simple-record-list/simple-record-list.component.ts","../../../src/lib/simple-record-list/simple-record-list.component.html"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-simple-record-list",
3
- "version": "2.32.1",
3
+ "version": "2.33.0",
4
4
  "description": "MemberJunction: Very simple and reusable Angular component for displaying, editing, creating and deleting records in any entity",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -25,12 +25,12 @@
25
25
  "@angular/router": "18.0.2"
26
26
  },
27
27
  "dependencies": {
28
- "@memberjunction/core-entities": "2.32.1",
29
- "@memberjunction/global": "2.32.1",
30
- "@memberjunction/core": "2.32.1",
31
- "@memberjunction/ng-container-directives": "2.32.1",
32
- "@memberjunction/ng-shared": "2.32.1",
33
- "@memberjunction/ng-entity-form-dialog": "2.32.1",
28
+ "@memberjunction/core-entities": "2.33.0",
29
+ "@memberjunction/global": "2.33.0",
30
+ "@memberjunction/core": "2.33.0",
31
+ "@memberjunction/ng-container-directives": "2.33.0",
32
+ "@memberjunction/ng-notifications": "2.33.0",
33
+ "@memberjunction/ng-entity-form-dialog": "2.33.0",
34
34
  "@progress/kendo-angular-buttons": "16.2.0",
35
35
  "@progress/kendo-angular-dialog": "16.2.0",
36
36
  "@progress/kendo-angular-layout": "16.2.0",