@abpjs/theme-shared 3.0.0 → 3.2.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.
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @since 2.9.0 - Added RTL support for data-tables-filter
|
|
11
11
|
*
|
|
12
|
+
* @since 3.2.0 - Added .datatable-scroll styles for ngx-datatable horizontal scroll fix
|
|
13
|
+
*
|
|
12
14
|
* @example
|
|
13
15
|
* ```tsx
|
|
14
16
|
* // Option 1: Use with a style tag in your app
|
|
@@ -33,5 +35,5 @@
|
|
|
33
35
|
* @since 2.9.0
|
|
34
36
|
*/
|
|
35
37
|
export declare const BOOTSTRAP = "bootstrap-{{dir}}.min.css";
|
|
36
|
-
export declare const DEFAULT_STYLES = "\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n/* RTL support - @since 2.9.0 */\n[dir=rtl] .data-tables-filter {\n text-align: left;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.navbar .dropdown-menu {\n min-width: 215px;\n}\n\n.ui-table-scrollable-body::-webkit-scrollbar {\n height: 5px !important;\n width: 5px !important;\n}\n\n.ui-table-scrollable-body::-webkit-scrollbar-track {\n background: #ddd;\n}\n\n.ui-table-scrollable-body::-webkit-scrollbar-thumb {\n background: #8a8686;\n}\n\n.abp-ellipsis-inline {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.abp-ellipsis {\n overflow: hidden !important;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ui-widget-overlay {\n z-index: 1000;\n}\n\n.color-white {\n color: #FFF !important;\n}\n\n.custom-checkbox > label {\n cursor: pointer;\n}\n\n/* <animations */\n\n.fade-in-top {\n animation: fadeInTop 0.2s ease-in-out;\n}\n\n.fade-out-top {\n animation: fadeOutTop 0.2s ease-in-out;\n}\n\n.abp-collapsed-height {\n -moz-transition: max-height linear 0.35s;\n -ms-transition: max-height linear 0.35s;\n -o-transition: max-height linear 0.35s;\n -webkit-transition: max-height linear 0.35s;\n overflow:hidden;\n transition:max-height 0.35s linear;\n height:auto;\n max-height: 0;\n}\n\n.abp-mh-25 {\n max-height: 25vh;\n}\n\n.abp-mh-50 {\n transition:max-height 0.65s linear;\n max-height: 50vh;\n}\n\n.abp-mh-75 {\n transition:max-height 0.85s linear;\n max-height: 75vh;\n}\n\n.abp-mh-100 {\n transition:max-height 1s linear;\n max-height: 100vh;\n}\n\n/* Sorting icon styles - @since 2.0.0 */\n[class^=\"sorting\"] {\n opacity: .3;\n cursor: pointer;\n}\n[class^=\"sorting\"]:before {\n right: 0.5rem;\n content: \"\u2191\";\n}\n[class^=\"sorting\"]:after {\n right: 0.5rem;\n content: \"\u2193\";\n}\n\n.sorting_desc {\n opacity: 1;\n}\n.sorting_desc:before {\n opacity: .3;\n}\n\n.sorting_asc {\n opacity: 1;\n}\n.sorting_asc:after {\n opacity: .3;\n}\n\n@keyframes fadeInTop {\n from {\n transform: translateY(-5px);\n opacity: 0;\n }\n\n to {\n transform: translateY(0px);\n opacity: 1;\n }\n}\n\n@keyframes fadeOutTop {\n to {\n transform: translateY(-5px);\n opacity: 0;\n }\n}\n\n/* </animations */\n\n/* Loader bar styles */\n.abp-loader-bar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 3px;\n z-index: 9999;\n background-color: rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.abp-progress {\n height: 100%;\n background-color: #3182ce;\n transition: width 0.3s ease-out;\n}\n";
|
|
38
|
+
export declare const DEFAULT_STYLES = "\n.is-invalid .form-control {\n border-color: #dc3545;\n border-style: solid !important;\n}\n\n.is-invalid .invalid-feedback,\n.is-invalid + * .invalid-feedback {\n display: block;\n}\n\n.data-tables-filter {\n text-align: right;\n}\n\n/* RTL support - @since 2.9.0 */\n[dir=rtl] .data-tables-filter {\n text-align: left;\n}\n\n.pointer {\n cursor: pointer;\n}\n\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n\n.navbar .dropdown-menu {\n min-width: 215px;\n}\n\n/* ngx-datatable scroll fix - @since 3.2.0 */\n.datatable-scroll {\n margin-bottom: 5px !important;\n width: unset !important;\n}\n\n.ui-table-scrollable-body::-webkit-scrollbar {\n height: 5px !important;\n width: 5px !important;\n}\n\n.ui-table-scrollable-body::-webkit-scrollbar-track {\n background: #ddd;\n}\n\n.ui-table-scrollable-body::-webkit-scrollbar-thumb {\n background: #8a8686;\n}\n\n.abp-ellipsis-inline {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.abp-ellipsis {\n overflow: hidden !important;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ui-widget-overlay {\n z-index: 1000;\n}\n\n.color-white {\n color: #FFF !important;\n}\n\n.custom-checkbox > label {\n cursor: pointer;\n}\n\n/* <animations */\n\n.fade-in-top {\n animation: fadeInTop 0.2s ease-in-out;\n}\n\n.fade-out-top {\n animation: fadeOutTop 0.2s ease-in-out;\n}\n\n.abp-collapsed-height {\n -moz-transition: max-height linear 0.35s;\n -ms-transition: max-height linear 0.35s;\n -o-transition: max-height linear 0.35s;\n -webkit-transition: max-height linear 0.35s;\n overflow:hidden;\n transition:max-height 0.35s linear;\n height:auto;\n max-height: 0;\n}\n\n.abp-mh-25 {\n max-height: 25vh;\n}\n\n.abp-mh-50 {\n transition:max-height 0.65s linear;\n max-height: 50vh;\n}\n\n.abp-mh-75 {\n transition:max-height 0.85s linear;\n max-height: 75vh;\n}\n\n.abp-mh-100 {\n transition:max-height 1s linear;\n max-height: 100vh;\n}\n\n/* Sorting icon styles - @since 2.0.0 */\n[class^=\"sorting\"] {\n opacity: .3;\n cursor: pointer;\n}\n[class^=\"sorting\"]:before {\n right: 0.5rem;\n content: \"\u2191\";\n}\n[class^=\"sorting\"]:after {\n right: 0.5rem;\n content: \"\u2193\";\n}\n\n.sorting_desc {\n opacity: 1;\n}\n.sorting_desc:before {\n opacity: .3;\n}\n\n.sorting_asc {\n opacity: 1;\n}\n.sorting_asc:after {\n opacity: .3;\n}\n\n@keyframes fadeInTop {\n from {\n transform: translateY(-5px);\n opacity: 0;\n }\n\n to {\n transform: translateY(0px);\n opacity: 1;\n }\n}\n\n@keyframes fadeOutTop {\n to {\n transform: translateY(-5px);\n opacity: 0;\n }\n}\n\n/* </animations */\n\n/* Loader bar styles */\n.abp-loader-bar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 3px;\n z-index: 9999;\n background-color: rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.abp-progress {\n height: 100%;\n background-color: #3182ce;\n transition: width 0.3s ease-out;\n}\n";
|
|
37
39
|
export default DEFAULT_STYLES;
|
|
@@ -44,6 +44,37 @@ export interface ErrorHandler {
|
|
|
44
44
|
/** Clear the current error component */
|
|
45
45
|
clearErrorComponent: () => void;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Default error messages for common HTTP status codes.
|
|
49
|
+
*/
|
|
50
|
+
export declare const DEFAULT_ERROR_MESSAGES: Record<number, string>;
|
|
51
|
+
/**
|
|
52
|
+
* Default error localizations with title and details.
|
|
53
|
+
* These are the localization keys used for error messages.
|
|
54
|
+
* @since 3.1.0
|
|
55
|
+
*/
|
|
56
|
+
export declare const DEFAULT_ERROR_LOCALIZATIONS: {
|
|
57
|
+
readonly defaultError: {
|
|
58
|
+
readonly title: "AbpUi::DefaultErrorMessage";
|
|
59
|
+
readonly details: "AbpUi::DefaultErrorMessageDetail";
|
|
60
|
+
};
|
|
61
|
+
readonly defaultError401: {
|
|
62
|
+
readonly title: "AbpUi::DefaultErrorMessage401";
|
|
63
|
+
readonly details: "AbpUi::DefaultErrorMessage401Detail";
|
|
64
|
+
};
|
|
65
|
+
readonly defaultError403: {
|
|
66
|
+
readonly title: "AbpUi::DefaultErrorMessage403";
|
|
67
|
+
readonly details: "AbpUi::DefaultErrorMessage403Detail";
|
|
68
|
+
};
|
|
69
|
+
readonly defaultError404: {
|
|
70
|
+
readonly title: "AbpUi::DefaultErrorMessage404";
|
|
71
|
+
readonly details: "AbpUi::DefaultErrorMessage404Detail";
|
|
72
|
+
};
|
|
73
|
+
readonly defaultError500: {
|
|
74
|
+
readonly title: "AbpUi::DefaultErrorMessage500";
|
|
75
|
+
readonly details: "AbpUi::DefaultErrorMessage500Detail";
|
|
76
|
+
};
|
|
77
|
+
};
|
|
47
78
|
export interface UseErrorHandlerOptions {
|
|
48
79
|
/**
|
|
49
80
|
* Custom navigate function. If not provided, navigation to login will be a no-op.
|
package/dist/index.d.ts
CHANGED
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
* @abpjs/theme-shared
|
|
3
3
|
*
|
|
4
4
|
* ABP Framework Theme Shared components for React.
|
|
5
|
-
* Translated from @abp/ng.theme.shared v3.
|
|
5
|
+
* Translated from @abp/ng.theme.shared v3.2.0
|
|
6
6
|
*
|
|
7
7
|
* This package provides shared UI components, services, and utilities
|
|
8
8
|
* for theme/modal management in ABP Framework React applications.
|
|
9
9
|
*
|
|
10
|
+
* Changes in v3.2.0:
|
|
11
|
+
* - Added .datatable-scroll CSS styles for ngx-datatable horizontal scroll fix
|
|
12
|
+
* - Dependency updates to @abp/ng.core v3.2.0
|
|
13
|
+
*
|
|
10
14
|
* Changes in v3.0.0:
|
|
11
15
|
* - Added NavItemsService (replaces nav-items utility functions)
|
|
12
16
|
* - Added NavItem.id property (required unique identifier)
|
package/dist/index.js
CHANGED
|
@@ -42,6 +42,8 @@ __export(index_exports, {
|
|
|
42
42
|
Confirmation: () => Confirmation,
|
|
43
43
|
ConfirmationDialog: () => ConfirmationDialog,
|
|
44
44
|
ConfirmationProvider: () => ConfirmationProvider,
|
|
45
|
+
DEFAULT_ERROR_LOCALIZATIONS: () => DEFAULT_ERROR_LOCALIZATIONS,
|
|
46
|
+
DEFAULT_ERROR_MESSAGES: () => DEFAULT_ERROR_MESSAGES,
|
|
45
47
|
DEFAULT_LAZY_STYLES: () => DEFAULT_LAZY_STYLES,
|
|
46
48
|
DEFAULT_STYLES: () => DEFAULT_STYLES,
|
|
47
49
|
ErrorComponent: () => ErrorComponent,
|
|
@@ -57,6 +59,7 @@ __export(index_exports, {
|
|
|
57
59
|
ModalFooter: () => AbpModalFooter,
|
|
58
60
|
ModalHeader: () => AbpModalHeader,
|
|
59
61
|
ModalProvider: () => ModalProvider,
|
|
62
|
+
NavItem: () => NavItem,
|
|
60
63
|
NavItemsService: () => NavItemsService,
|
|
61
64
|
PASSWORD_SETTING_KEYS: () => PASSWORD_SETTING_KEYS,
|
|
62
65
|
Profile: () => Profile,
|
|
@@ -115,6 +118,24 @@ var Confirmation;
|
|
|
115
118
|
})(Status = Confirmation2.Status || (Confirmation2.Status = {}));
|
|
116
119
|
})(Confirmation || (Confirmation = {}));
|
|
117
120
|
|
|
121
|
+
// src/models/nav-item.ts
|
|
122
|
+
var NavItem = class {
|
|
123
|
+
/**
|
|
124
|
+
* Create a new NavItem.
|
|
125
|
+
* @param props - Partial properties to initialize the nav item
|
|
126
|
+
* @since 3.1.0
|
|
127
|
+
*/
|
|
128
|
+
constructor(props) {
|
|
129
|
+
this.id = props.id ?? "";
|
|
130
|
+
this.component = props.component;
|
|
131
|
+
this.html = props.html;
|
|
132
|
+
this.action = props.action;
|
|
133
|
+
this.order = props.order;
|
|
134
|
+
this.requiredPolicy = props.requiredPolicy;
|
|
135
|
+
this.visible = props.visible;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
118
139
|
// src/constants/styles.ts
|
|
119
140
|
var BOOTSTRAP = "bootstrap-{{dir}}.min.css";
|
|
120
141
|
var DEFAULT_STYLES = `
|
|
@@ -152,6 +173,12 @@ var DEFAULT_STYLES = `
|
|
|
152
173
|
min-width: 215px;
|
|
153
174
|
}
|
|
154
175
|
|
|
176
|
+
/* ngx-datatable scroll fix - @since 3.2.0 */
|
|
177
|
+
.datatable-scroll {
|
|
178
|
+
margin-bottom: 5px !important;
|
|
179
|
+
width: unset !important;
|
|
180
|
+
}
|
|
181
|
+
|
|
155
182
|
.ui-table-scrollable-body::-webkit-scrollbar {
|
|
156
183
|
height: 5px !important;
|
|
157
184
|
width: 5px !important;
|
|
@@ -652,6 +679,28 @@ var DEFAULT_ERROR_MESSAGES = {
|
|
|
652
679
|
500: "AbpUi::DefaultErrorMessage500",
|
|
653
680
|
503: "AbpUi::DefaultErrorMessage503"
|
|
654
681
|
};
|
|
682
|
+
var DEFAULT_ERROR_LOCALIZATIONS = {
|
|
683
|
+
defaultError: {
|
|
684
|
+
title: "AbpUi::DefaultErrorMessage",
|
|
685
|
+
details: "AbpUi::DefaultErrorMessageDetail"
|
|
686
|
+
},
|
|
687
|
+
defaultError401: {
|
|
688
|
+
title: "AbpUi::DefaultErrorMessage401",
|
|
689
|
+
details: "AbpUi::DefaultErrorMessage401Detail"
|
|
690
|
+
},
|
|
691
|
+
defaultError403: {
|
|
692
|
+
title: "AbpUi::DefaultErrorMessage403",
|
|
693
|
+
details: "AbpUi::DefaultErrorMessage403Detail"
|
|
694
|
+
},
|
|
695
|
+
defaultError404: {
|
|
696
|
+
title: "AbpUi::DefaultErrorMessage404",
|
|
697
|
+
details: "AbpUi::DefaultErrorMessage404Detail"
|
|
698
|
+
},
|
|
699
|
+
defaultError500: {
|
|
700
|
+
title: "AbpUi::DefaultErrorMessage500",
|
|
701
|
+
details: "AbpUi::DefaultErrorMessage500Detail"
|
|
702
|
+
}
|
|
703
|
+
};
|
|
655
704
|
function useErrorHandler(options = {}) {
|
|
656
705
|
const { navigate, loginPath = "/account/login" } = options;
|
|
657
706
|
const confirmation = useConfirmation();
|
|
@@ -791,13 +840,14 @@ var _NavItemsService = class _NavItemsService {
|
|
|
791
840
|
* Add one or more items.
|
|
792
841
|
* Items are automatically sorted by order.
|
|
793
842
|
*
|
|
794
|
-
* @param
|
|
843
|
+
* @param newItems - Array of items to add
|
|
795
844
|
* @since 3.0.0
|
|
845
|
+
* @since 3.1.0 - Renamed parameter from items to newItems
|
|
796
846
|
*/
|
|
797
|
-
addItems(
|
|
847
|
+
addItems(newItems) {
|
|
798
848
|
const existingIds = new Set(this._items.map((item) => item.id));
|
|
799
|
-
const
|
|
800
|
-
this._items = [...this._items, ...
|
|
849
|
+
const itemsToAdd = newItems.filter((item) => !existingIds.has(item.id)).map((item) => item instanceof NavItem ? item : new NavItem(item));
|
|
850
|
+
this._items = [...this._items, ...itemsToAdd];
|
|
801
851
|
this.notify();
|
|
802
852
|
}
|
|
803
853
|
/**
|
|
@@ -2545,6 +2595,8 @@ function getPasswordValidationRules(store) {
|
|
|
2545
2595
|
Confirmation,
|
|
2546
2596
|
ConfirmationDialog,
|
|
2547
2597
|
ConfirmationProvider,
|
|
2598
|
+
DEFAULT_ERROR_LOCALIZATIONS,
|
|
2599
|
+
DEFAULT_ERROR_MESSAGES,
|
|
2548
2600
|
DEFAULT_LAZY_STYLES,
|
|
2549
2601
|
DEFAULT_STYLES,
|
|
2550
2602
|
ErrorComponent,
|
|
@@ -2560,6 +2612,7 @@ function getPasswordValidationRules(store) {
|
|
|
2560
2612
|
ModalFooter,
|
|
2561
2613
|
ModalHeader,
|
|
2562
2614
|
ModalProvider,
|
|
2615
|
+
NavItem,
|
|
2563
2616
|
NavItemsService,
|
|
2564
2617
|
PASSWORD_SETTING_KEYS,
|
|
2565
2618
|
Profile,
|
package/dist/index.mjs
CHANGED
|
@@ -9,6 +9,24 @@ var Confirmation;
|
|
|
9
9
|
})(Status = Confirmation2.Status || (Confirmation2.Status = {}));
|
|
10
10
|
})(Confirmation || (Confirmation = {}));
|
|
11
11
|
|
|
12
|
+
// src/models/nav-item.ts
|
|
13
|
+
var NavItem = class {
|
|
14
|
+
/**
|
|
15
|
+
* Create a new NavItem.
|
|
16
|
+
* @param props - Partial properties to initialize the nav item
|
|
17
|
+
* @since 3.1.0
|
|
18
|
+
*/
|
|
19
|
+
constructor(props) {
|
|
20
|
+
this.id = props.id ?? "";
|
|
21
|
+
this.component = props.component;
|
|
22
|
+
this.html = props.html;
|
|
23
|
+
this.action = props.action;
|
|
24
|
+
this.order = props.order;
|
|
25
|
+
this.requiredPolicy = props.requiredPolicy;
|
|
26
|
+
this.visible = props.visible;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
12
30
|
// src/constants/styles.ts
|
|
13
31
|
var BOOTSTRAP = "bootstrap-{{dir}}.min.css";
|
|
14
32
|
var DEFAULT_STYLES = `
|
|
@@ -46,6 +64,12 @@ var DEFAULT_STYLES = `
|
|
|
46
64
|
min-width: 215px;
|
|
47
65
|
}
|
|
48
66
|
|
|
67
|
+
/* ngx-datatable scroll fix - @since 3.2.0 */
|
|
68
|
+
.datatable-scroll {
|
|
69
|
+
margin-bottom: 5px !important;
|
|
70
|
+
width: unset !important;
|
|
71
|
+
}
|
|
72
|
+
|
|
49
73
|
.ui-table-scrollable-body::-webkit-scrollbar {
|
|
50
74
|
height: 5px !important;
|
|
51
75
|
width: 5px !important;
|
|
@@ -569,6 +593,28 @@ var DEFAULT_ERROR_MESSAGES = {
|
|
|
569
593
|
500: "AbpUi::DefaultErrorMessage500",
|
|
570
594
|
503: "AbpUi::DefaultErrorMessage503"
|
|
571
595
|
};
|
|
596
|
+
var DEFAULT_ERROR_LOCALIZATIONS = {
|
|
597
|
+
defaultError: {
|
|
598
|
+
title: "AbpUi::DefaultErrorMessage",
|
|
599
|
+
details: "AbpUi::DefaultErrorMessageDetail"
|
|
600
|
+
},
|
|
601
|
+
defaultError401: {
|
|
602
|
+
title: "AbpUi::DefaultErrorMessage401",
|
|
603
|
+
details: "AbpUi::DefaultErrorMessage401Detail"
|
|
604
|
+
},
|
|
605
|
+
defaultError403: {
|
|
606
|
+
title: "AbpUi::DefaultErrorMessage403",
|
|
607
|
+
details: "AbpUi::DefaultErrorMessage403Detail"
|
|
608
|
+
},
|
|
609
|
+
defaultError404: {
|
|
610
|
+
title: "AbpUi::DefaultErrorMessage404",
|
|
611
|
+
details: "AbpUi::DefaultErrorMessage404Detail"
|
|
612
|
+
},
|
|
613
|
+
defaultError500: {
|
|
614
|
+
title: "AbpUi::DefaultErrorMessage500",
|
|
615
|
+
details: "AbpUi::DefaultErrorMessage500Detail"
|
|
616
|
+
}
|
|
617
|
+
};
|
|
572
618
|
function useErrorHandler(options = {}) {
|
|
573
619
|
const { navigate, loginPath = "/account/login" } = options;
|
|
574
620
|
const confirmation = useConfirmation();
|
|
@@ -708,13 +754,14 @@ var _NavItemsService = class _NavItemsService {
|
|
|
708
754
|
* Add one or more items.
|
|
709
755
|
* Items are automatically sorted by order.
|
|
710
756
|
*
|
|
711
|
-
* @param
|
|
757
|
+
* @param newItems - Array of items to add
|
|
712
758
|
* @since 3.0.0
|
|
759
|
+
* @since 3.1.0 - Renamed parameter from items to newItems
|
|
713
760
|
*/
|
|
714
|
-
addItems(
|
|
761
|
+
addItems(newItems) {
|
|
715
762
|
const existingIds = new Set(this._items.map((item) => item.id));
|
|
716
|
-
const
|
|
717
|
-
this._items = [...this._items, ...
|
|
763
|
+
const itemsToAdd = newItems.filter((item) => !existingIds.has(item.id)).map((item) => item instanceof NavItem ? item : new NavItem(item));
|
|
764
|
+
this._items = [...this._items, ...itemsToAdd];
|
|
718
765
|
this.notify();
|
|
719
766
|
}
|
|
720
767
|
/**
|
|
@@ -2507,6 +2554,8 @@ export {
|
|
|
2507
2554
|
Confirmation,
|
|
2508
2555
|
ConfirmationDialog,
|
|
2509
2556
|
ConfirmationProvider,
|
|
2557
|
+
DEFAULT_ERROR_LOCALIZATIONS,
|
|
2558
|
+
DEFAULT_ERROR_MESSAGES,
|
|
2510
2559
|
DEFAULT_LAZY_STYLES,
|
|
2511
2560
|
DEFAULT_STYLES,
|
|
2512
2561
|
ErrorComponent,
|
|
@@ -2522,6 +2571,7 @@ export {
|
|
|
2522
2571
|
AbpModalFooter as ModalFooter,
|
|
2523
2572
|
AbpModalHeader as ModalHeader,
|
|
2524
2573
|
ModalProvider,
|
|
2574
|
+
NavItem,
|
|
2525
2575
|
NavItemsService,
|
|
2526
2576
|
PASSWORD_SETTING_KEYS,
|
|
2527
2577
|
Profile,
|
|
@@ -1,15 +1,54 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Nav Item Model
|
|
3
|
-
* Translated from @abp/ng.theme.shared/lib/models/nav-item.ts v3.
|
|
3
|
+
* Translated from @abp/ng.theme.shared/lib/models/nav-item.ts v3.1.0
|
|
4
4
|
*
|
|
5
5
|
* @since 3.0.0 - Added id property, changed permission to requiredPolicy
|
|
6
|
+
* @since 3.1.0 - Changed from interface to class, added visible callback
|
|
6
7
|
*/
|
|
7
8
|
import type { ComponentType } from 'react';
|
|
8
9
|
/**
|
|
9
|
-
* Navigation item
|
|
10
|
+
* Navigation item properties interface.
|
|
11
|
+
* @since 3.1.0
|
|
12
|
+
*/
|
|
13
|
+
export interface NavItemProps {
|
|
14
|
+
/**
|
|
15
|
+
* Unique identifier for the nav item.
|
|
16
|
+
* @since 3.0.0
|
|
17
|
+
*/
|
|
18
|
+
id: string | number;
|
|
19
|
+
/**
|
|
20
|
+
* React component to render for this nav item.
|
|
21
|
+
*/
|
|
22
|
+
component?: ComponentType<any>;
|
|
23
|
+
/**
|
|
24
|
+
* Raw HTML string to render (use with caution for XSS).
|
|
25
|
+
*/
|
|
26
|
+
html?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Action to execute when the nav item is clicked.
|
|
29
|
+
*/
|
|
30
|
+
action?: () => void;
|
|
31
|
+
/**
|
|
32
|
+
* Order for sorting nav items. Lower numbers appear first.
|
|
33
|
+
*/
|
|
34
|
+
order?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Required policy to show this nav item.
|
|
37
|
+
* @since 3.0.0 - Renamed from permission
|
|
38
|
+
*/
|
|
39
|
+
requiredPolicy?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Callback to determine visibility of the nav item.
|
|
42
|
+
* @since 3.1.0
|
|
43
|
+
*/
|
|
44
|
+
visible?: () => boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Navigation item class.
|
|
10
48
|
* @since 3.0.0 - Added id property, changed permission to requiredPolicy
|
|
49
|
+
* @since 3.1.0 - Changed from interface to class, added visible callback
|
|
11
50
|
*/
|
|
12
|
-
export
|
|
51
|
+
export declare class NavItem implements NavItemProps {
|
|
13
52
|
/**
|
|
14
53
|
* Unique identifier for the nav item.
|
|
15
54
|
* @since 3.0.0
|
|
@@ -36,4 +75,15 @@ export interface NavItem {
|
|
|
36
75
|
* @since 3.0.0 - Renamed from permission
|
|
37
76
|
*/
|
|
38
77
|
requiredPolicy?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Callback to determine visibility of the nav item.
|
|
80
|
+
* @since 3.1.0
|
|
81
|
+
*/
|
|
82
|
+
visible?: () => boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Create a new NavItem.
|
|
85
|
+
* @param props - Partial properties to initialize the nav item
|
|
86
|
+
* @since 3.1.0
|
|
87
|
+
*/
|
|
88
|
+
constructor(props: Partial<NavItemProps>);
|
|
39
89
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Nav Items Service
|
|
3
|
-
* Translated from @abp/ng.theme.shared/lib/services/nav-items.service.ts v3.
|
|
3
|
+
* Translated from @abp/ng.theme.shared/lib/services/nav-items.service.ts v3.1.0
|
|
4
4
|
*
|
|
5
5
|
* Provides a service-based approach to managing navigation items,
|
|
6
6
|
* replacing the utility functions approach from v2.9.0.
|
|
7
7
|
*
|
|
8
8
|
* @since 3.0.0
|
|
9
|
+
* @since 3.1.0 - Updated addItems parameter name to newItems for clarity
|
|
9
10
|
*/
|
|
10
|
-
import
|
|
11
|
+
import { NavItem, NavItemProps } from '../models/nav-item';
|
|
11
12
|
/**
|
|
12
13
|
* NavItemsService manages navigation items with reactive updates.
|
|
13
14
|
* This is a singleton service that provides methods to add, remove, and patch nav items.
|
|
@@ -80,10 +81,11 @@ export declare class NavItemsService {
|
|
|
80
81
|
* Add one or more items.
|
|
81
82
|
* Items are automatically sorted by order.
|
|
82
83
|
*
|
|
83
|
-
* @param
|
|
84
|
+
* @param newItems - Array of items to add
|
|
84
85
|
* @since 3.0.0
|
|
86
|
+
* @since 3.1.0 - Renamed parameter from items to newItems
|
|
85
87
|
*/
|
|
86
|
-
addItems(
|
|
88
|
+
addItems(newItems: (NavItem | NavItemProps)[]): void;
|
|
87
89
|
/**
|
|
88
90
|
* Remove an item by id.
|
|
89
91
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abpjs/theme-shared",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "ABP Framework Theme Shared components for React - translated from @abp/ng.theme.shared",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"next-themes": "^0.4.6",
|
|
28
28
|
"react-hook-form": "^7.48.0",
|
|
29
29
|
"react-icons": "^5.5.0",
|
|
30
|
-
"@abpjs/core": "3.
|
|
30
|
+
"@abpjs/core": "3.2.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@abp/ng.theme.shared": "3.
|
|
33
|
+
"@abp/ng.theme.shared": "3.2.0",
|
|
34
34
|
"@vitest/coverage-v8": "^1.6.0",
|
|
35
35
|
"vitest": "^1.6.0"
|
|
36
36
|
},
|