@singularsystems/neo-core 1.0.0-alpha.3 → 1.0.0-beta.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/CHANGELOG.md +15 -0
- package/README.md +1 -1
- package/dist/ApiClient/ApiClientBase.d.ts +5 -5
- package/dist/ApiClient/ApiClientBase.js +13 -13
- package/dist/ApiClient/ReadApiClient.d.ts +16 -16
- package/dist/ApiClient/ReadApiClient.js +24 -24
- package/dist/ApiClient/UpdateableApiClient.d.ts +28 -28
- package/dist/ApiClient/UpdateableApiClient.js +33 -33
- package/dist/AppServices/AppService.d.ts +46 -46
- package/dist/AppServices/AppService.js +25 -25
- package/dist/AppServices/Config/ConfigModel.d.ts +21 -20
- package/dist/AppServices/Config/ConfigModel.js +28 -17
- package/dist/AppServices/Config/ConfigService.d.ts +15 -15
- package/dist/AppServices/Config/ConfigService.js +49 -53
- package/dist/AppServices/Module.d.ts +11 -11
- package/dist/AppServices/Module.js +13 -13
- package/dist/AppServices/NeoContainer.d.ts +22 -22
- package/dist/AppServices/NeoContainer.js +42 -42
- package/dist/AppServices/NeoModule.d.ts +3 -3
- package/dist/AppServices/NeoModule.js +30 -30
- package/dist/AppServices/NeoTypes.d.ts +61 -61
- package/dist/AppServices/NeoTypes.js +42 -42
- package/dist/AppServices/ServiceIdentifier.d.ts +23 -23
- package/dist/AppServices/ServiceIdentifier.js +38 -39
- package/dist/AppServices/index.d.ts +7 -7
- package/dist/AppServices/index.js +7 -7
- package/dist/Components/AnimationHelper.d.ts +69 -69
- package/dist/Components/AnimationHelper.js +182 -182
- package/dist/Components/BootstrapHelpers.d.ts +8 -8
- package/dist/Components/BootstrapHelpers.js +30 -30
- package/dist/Components/BootstrapTypes.d.ts +35 -35
- package/dist/Components/BootstrapTypes.js +1 -1
- package/dist/Components/ButtonOptions.d.ts +63 -61
- package/dist/Components/ButtonOptions.js +1 -1
- package/dist/Components/ContextMenu/ContextMenu.d.ts +16 -16
- package/dist/Components/ContextMenu/ContextMenu.js +1 -1
- package/dist/Components/ContextMenu/MenuUtils.d.ts +16 -16
- package/dist/Components/ContextMenu/MenuUtils.js +34 -34
- package/dist/Components/DatePicker/DatePicker.d.ts +70 -69
- package/dist/Components/DatePicker/DatePicker.js +510 -487
- package/dist/Components/DatePicker/DatePickerOptions.d.ts +43 -34
- package/dist/Components/DatePicker/DatePickerOptions.js +33 -33
- package/dist/Components/ErrorHandler.d.ts +63 -55
- package/dist/Components/ErrorHandler.js +211 -138
- package/dist/Components/FileManager/BoundFileManager.d.ts +18 -18
- package/dist/Components/FileManager/BoundFileManager.js +60 -60
- package/dist/Components/FileManager/FileManager.d.ts +80 -78
- package/dist/Components/FileManager/FileManager.js +277 -257
- package/dist/Components/FileManager/FileUploadBatch.d.ts +37 -37
- package/dist/Components/FileManager/FileUploadBatch.js +83 -82
- package/dist/Components/FileManager/IFileManagerOptions.d.ts +42 -42
- package/dist/Components/FileManager/IFileManagerOptions.js +1 -1
- package/dist/Components/FormOptions.d.ts +34 -34
- package/dist/Components/FormOptions.js +1 -1
- package/dist/Components/ICollapsableOptions.d.ts +11 -11
- package/dist/Components/ICollapsableOptions.js +1 -1
- package/dist/Components/Modal/ModalHelper.d.ts +31 -31
- package/dist/Components/Modal/ModalHelper.js +174 -174
- package/dist/Components/Modal/ModalOptions.d.ts +61 -61
- package/dist/Components/Modal/ModalOptions.js +1 -1
- package/dist/Components/Modal/ModalStore.d.ts +32 -32
- package/dist/Components/Modal/ModalStore.js +82 -82
- package/dist/Components/Modal/ModalUtils.d.ts +61 -61
- package/dist/Components/Modal/ModalUtils.js +109 -109
- package/dist/Components/Notifications/INotificationHelper.d.ts +56 -56
- package/dist/Components/Notifications/INotificationHelper.js +1 -1
- package/dist/Components/Notifications/Notification.d.ts +32 -32
- package/dist/Components/Notifications/Notification.js +26 -27
- package/dist/Components/Notifications/NotificationHelper.d.ts +63 -63
- package/dist/Components/Notifications/NotificationHelper.js +111 -112
- package/dist/Components/Notifications/NotificationStore.d.ts +34 -34
- package/dist/Components/Notifications/NotificationStore.js +78 -79
- package/dist/Components/PositionHelper.d.ts +10 -10
- package/dist/Components/PositionHelper.js +43 -43
- package/dist/Components/TaskRunner/Decorators.d.ts +6 -6
- package/dist/Components/TaskRunner/Decorators.js +24 -24
- package/dist/Components/TaskRunner/ProgressState.d.ts +22 -22
- package/dist/Components/TaskRunner/ProgressState.js +71 -72
- package/dist/Components/TaskRunner/TaskRunner.d.ts +114 -114
- package/dist/Components/TaskRunner/TaskRunner.js +253 -244
- package/dist/Components/TooltipOptions.d.ts +8 -8
- package/dist/Components/TooltipOptions.js +1 -1
- package/dist/Components/index.d.ts +22 -22
- package/dist/Components/index.js +13 -13
- package/dist/ConnectionManager.d.ts +45 -45
- package/dist/ConnectionManager.js +60 -61
- package/dist/Data/ApiDataSource.d.ts +46 -46
- package/dist/Data/ApiDataSource.js +140 -144
- package/dist/Data/AsyncDataSource.d.ts +35 -35
- package/dist/Data/AsyncDataSource.js +79 -80
- package/dist/Data/CacheService.d.ts +40 -40
- package/dist/Data/CacheService.js +63 -64
- package/dist/Data/DataCacheEntry.d.ts +42 -42
- package/dist/Data/DataCacheEntry.js +80 -80
- package/dist/Data/DataView.d.ts +43 -43
- package/dist/Data/DataView.js +173 -172
- package/dist/Data/Deserialiser.d.ts +42 -42
- package/dist/Data/Deserialiser.js +255 -255
- package/dist/Data/Paging/PageManager.d.ts +167 -167
- package/dist/Data/Paging/PageManager.js +323 -323
- package/dist/Data/Paging/PageRequest.d.ts +24 -24
- package/dist/Data/Paging/PageRequest.js +38 -39
- package/dist/Data/Paging/PageResult.d.ts +10 -10
- package/dist/Data/Paging/PageResult.js +14 -14
- package/dist/Data/Serialiser.d.ts +41 -41
- package/dist/Data/Serialiser.js +201 -201
- package/dist/Data/SortOperation.d.ts +8 -8
- package/dist/Data/SortOperation.js +26 -26
- package/dist/Data/StaticDataSource.d.ts +9 -9
- package/dist/Data/StaticDataSource.js +27 -27
- package/dist/Data/WindowedDataView.d.ts +8 -8
- package/dist/Data/WindowedDataView.js +49 -50
- package/dist/Data/index.d.ts +15 -15
- package/dist/Data/index.js +15 -15
- package/dist/Dates/DateUtils.d.ts +47 -47
- package/dist/Dates/DateUtils.js +226 -226
- package/dist/Dates/TimeSpan.d.ts +24 -24
- package/dist/Dates/TimeSpan.js +46 -46
- package/dist/DebounceHelper.d.ts +44 -38
- package/dist/DebounceHelper.js +122 -95
- package/dist/Extensions.d.ts +82 -82
- package/dist/Extensions.js +182 -182
- package/dist/FileUtils.d.ts +6 -6
- package/dist/FileUtils.js +37 -37
- package/dist/Globals.d.ts +19 -19
- package/dist/Globals.js +41 -41
- package/dist/JsonSchema/ClassMetadata.d.ts +25 -25
- package/dist/JsonSchema/ClassMetadata.js +53 -53
- package/dist/JsonSchema/JsonData.d.ts +16 -16
- package/dist/JsonSchema/JsonData.js +97 -97
- package/dist/JsonSchema/JsonSchemaTypes.d.ts +37 -37
- package/dist/JsonSchema/JsonSchemaTypes.js +1 -1
- package/dist/JsonSchema/PropertyMetadata.d.ts +8 -8
- package/dist/JsonSchema/PropertyMetadata.js +8 -8
- package/dist/JsonSchema/TypeCache.d.ts +16 -16
- package/dist/JsonSchema/TypeCache.js +44 -44
- package/dist/JsonSchema/TypeMetadata.d.ts +45 -45
- package/dist/JsonSchema/TypeMetadata.js +170 -170
- package/dist/JsonSchema/index.d.ts +7 -7
- package/dist/JsonSchema/index.js +6 -6
- package/dist/Localisation/ILocalisationService.d.ts +11 -11
- package/dist/Localisation/ILocalisationService.js +1 -1
- package/dist/Localisation/LocalisationService.d.ts +4 -4
- package/dist/Localisation/LocalisationService.js +17 -17
- package/dist/Localisation/index.d.ts +1 -1
- package/dist/Localisation/index.js +1 -1
- package/dist/Misc.d.ts +6 -6
- package/dist/Misc.js +6 -6
- package/dist/Model/BaseModels/AuditValues.d.ts +12 -12
- package/dist/Model/BaseModels/AuditValues.js +46 -48
- package/dist/Model/BaseModels/CriteriaBase.d.ts +18 -16
- package/dist/Model/BaseModels/CriteriaBase.js +45 -34
- package/dist/Model/BaseModels/FileDescriptorBase.d.ts +12 -12
- package/dist/Model/BaseModels/FileDescriptorBase.js +22 -22
- package/dist/Model/BaseModels/ReasonedUserEvent.d.ts +5 -4
- package/dist/Model/BaseModels/ReasonedUserEvent.js +23 -19
- package/dist/Model/BaseModels/UserEvent.d.ts +9 -8
- package/dist/Model/BaseModels/UserEvent.js +36 -32
- package/dist/Model/BindableBase.d.ts +46 -40
- package/dist/Model/BindableBase.js +82 -76
- package/dist/Model/Decorators.d.ts +50 -44
- package/dist/Model/Decorators.js +189 -177
- package/dist/Model/EnumHelper.d.ts +54 -54
- package/dist/Model/EnumHelper.js +104 -100
- package/dist/Model/IAutoRunner.d.ts +5 -5
- package/dist/Model/IAutoRunner.js +1 -1
- package/dist/Model/IModelBase.d.ts +101 -79
- package/dist/Model/IModelBase.js +1 -1
- package/dist/Model/IModelCreatorBase.d.ts +9 -9
- package/dist/Model/IModelCreatorBase.js +1 -1
- package/dist/Model/List.d.ts +79 -77
- package/dist/Model/List.js +208 -198
- package/dist/Model/LookupBase.d.ts +13 -6
- package/dist/Model/LookupBase.js +19 -10
- package/dist/Model/MethodInfo.d.ts +8 -0
- package/dist/Model/MethodInfo.js +7 -0
- package/dist/Model/Misc.d.ts +83 -81
- package/dist/Model/Misc.js +59 -59
- package/dist/Model/ModelBase.d.ts +88 -86
- package/dist/Model/ModelBase.js +189 -180
- package/dist/Model/ModelCreatorBase.d.ts +23 -23
- package/dist/Model/ModelCreatorBase.js +91 -92
- package/dist/Model/ModelFieldInfo.d.ts +29 -12
- package/dist/Model/ModelFieldInfo.js +35 -26
- package/dist/Model/ModelGraphTraverser.d.ts +35 -35
- package/dist/Model/ModelGraphTraverser.js +101 -99
- package/dist/Model/NeoModel.d.ts +6 -6
- package/dist/Model/NeoModel.js +13 -13
- package/dist/Model/NeoTypeInfo.d.ts +55 -41
- package/dist/Model/NeoTypeInfo.js +319 -250
- package/dist/Model/ObservableProperty.d.ts +8 -8
- package/dist/Model/ObservableProperty.js +41 -41
- package/dist/Model/ObservableValue.d.ts +9 -9
- package/dist/Model/ObservableValue.js +25 -26
- package/dist/Model/PropertyInfo.d.ts +83 -81
- package/dist/Model/PropertyInfo.js +137 -137
- package/dist/Model/PropertyInstance.d.ts +84 -48
- package/dist/Model/PropertyInstance.js +173 -113
- package/dist/Model/ValueObject.d.ts +3 -3
- package/dist/Model/ValueObject.js +10 -10
- package/dist/Model/index.d.ts +15 -14
- package/dist/Model/index.js +13 -12
- package/dist/NumberUtils.d.ts +63 -49
- package/dist/NumberUtils.js +247 -197
- package/dist/Routing/IMenuItemProvider.d.ts +9 -9
- package/dist/Routing/IMenuItemProvider.js +1 -1
- package/dist/Routing/IMenuRoute.d.ts +18 -18
- package/dist/Routing/IMenuRoute.js +1 -1
- package/dist/Routing/INavigationHelper.d.ts +7 -7
- package/dist/Routing/INavigationHelper.js +1 -1
- package/dist/Routing/IPageLeaveHandler.d.ts +23 -23
- package/dist/Routing/IPageLeaveHandler.js +7 -7
- package/dist/Routing/IRoute.d.ts +27 -27
- package/dist/Routing/IRoute.js +1 -1
- package/dist/Routing/IRouteSecurityService.d.ts +14 -14
- package/dist/Routing/IRouteSecurityService.js +1 -1
- package/dist/Routing/MenuItemProvider.d.ts +17 -17
- package/dist/Routing/MenuItemProvider.js +53 -54
- package/dist/Routing/RouteSecurityService.d.ts +18 -18
- package/dist/Routing/RouteSecurityService.js +35 -36
- package/dist/Routing/index.d.ts +7 -7
- package/dist/Routing/index.js +3 -3
- package/dist/Security/IAuthenticationService.d.ts +41 -36
- package/dist/Security/IAuthenticationService.js +1 -1
- package/dist/Security/IAuthorisationService.d.ts +11 -11
- package/dist/Security/IAuthorisationService.js +1 -1
- package/dist/Security/ILoginErrorHandler.d.ts +4 -4
- package/dist/Security/ILoginErrorHandler.js +1 -1
- package/dist/Security/ISecurityService.d.ts +10 -10
- package/dist/Security/ISecurityService.js +1 -1
- package/dist/Security/IUser.d.ts +10 -10
- package/dist/Security/IUser.js +1 -1
- package/dist/Security/IUserRole.d.ts +6 -6
- package/dist/Security/IUserRole.js +1 -1
- package/dist/Security/LoginErrorHandler.d.ts +15 -15
- package/dist/Security/LoginErrorHandler.js +97 -98
- package/dist/Security/Oidc/OidcAuthService.d.ts +67 -60
- package/dist/Security/Oidc/OidcAuthService.js +216 -189
- package/dist/Security/Oidc/OidcTypes.d.ts +46 -29
- package/dist/Security/Oidc/OidcTypes.js +1 -1
- package/dist/Security/Oidc/OidcUser.d.ts +9 -9
- package/dist/Security/Oidc/OidcUser.js +33 -33
- package/dist/Security/SecurityService.d.ts +12 -12
- package/dist/Security/SecurityService.js +33 -34
- package/dist/Security/SignInResult.d.ts +13 -13
- package/dist/Security/SignInResult.js +8 -8
- package/dist/Security/User.d.ts +12 -12
- package/dist/Security/User.js +24 -24
- package/dist/Security/index.d.ts +10 -10
- package/dist/Security/index.js +5 -5
- package/dist/Settings.d.ts +71 -57
- package/dist/Settings.js +100 -87
- package/dist/SignalR/HubBase.d.ts +70 -70
- package/dist/SignalR/HubBase.js +164 -164
- package/dist/SignalR/HubReceiver.d.ts +11 -11
- package/dist/SignalR/HubReceiver.js +25 -25
- package/dist/SignalR/HubSubscription.d.ts +12 -12
- package/dist/SignalR/HubSubscription.js +14 -14
- package/dist/SignalR/index.d.ts +3 -3
- package/dist/SignalR/index.js +1 -1
- package/dist/StringUtils.d.ts +7 -7
- package/dist/StringUtils.js +24 -24
- package/dist/Utils.d.ts +81 -80
- package/dist/Utils.js +220 -218
- package/dist/Validation/Decorators.d.ts +12 -12
- package/dist/Validation/Decorators.js +52 -52
- package/dist/Validation/DisplayHelper.d.ts +20 -19
- package/dist/Validation/DisplayHelper.js +104 -104
- package/dist/Validation/Misc.d.ts +10 -10
- package/dist/Validation/Misc.js +11 -11
- package/dist/Validation/ModelProxy.d.ts +20 -20
- package/dist/Validation/ModelProxy.js +46 -46
- package/dist/Validation/RuleContext.d.ts +86 -86
- package/dist/Validation/RuleContext.js +130 -130
- package/dist/Validation/Rules.d.ts +70 -70
- package/dist/Validation/Rules.js +177 -177
- package/dist/Validation/ValidationHelpers.d.ts +12 -12
- package/dist/Validation/ValidationHelpers.js +57 -57
- package/dist/Validation/ValidationRules.d.ts +18 -18
- package/dist/Validation/ValidationRules.js +34 -34
- package/dist/Validation/ValidationState.d.ts +42 -42
- package/dist/Validation/ValidationState.js +74 -74
- package/dist/Validation/Validators/IModelValidator.d.ts +28 -24
- package/dist/Validation/Validators/IModelValidator.js +1 -1
- package/dist/Validation/Validators/IPropertyValidator.d.ts +21 -21
- package/dist/Validation/Validators/IPropertyValidator.js +15 -15
- package/dist/Validation/Validators/ModelValidator.d.ts +46 -45
- package/dist/Validation/Validators/ModelValidator.js +143 -137
- package/dist/Validation/Validators/PropertyValidator.d.ts +21 -21
- package/dist/Validation/Validators/PropertyValidator.js +64 -67
- package/dist/Validation/Validators/RuleValidator.d.ts +19 -19
- package/dist/Validation/Validators/RuleValidator.js +51 -55
- package/dist/Validation/index.d.ts +9 -9
- package/dist/Validation/index.js +7 -7
- package/dist/Views/IViewBase.d.ts +5 -5
- package/dist/Views/IViewBase.js +1 -1
- package/dist/index.d.ts +37 -36
- package/dist/index.js +44 -43
- package/package.json +11 -10
|
@@ -1,174 +1,174 @@
|
|
|
1
|
-
import { Misc } from '../../';
|
|
2
|
-
import AnimationHelper from '../AnimationHelper';
|
|
3
|
-
var inactiveClassName = "inactive";
|
|
4
|
-
var ModalHelper = /** @class */ (function () {
|
|
5
|
-
function ModalHelper(props, container) {
|
|
6
|
-
var _this = this;
|
|
7
|
-
var _a;
|
|
8
|
-
this.modals = [];
|
|
9
|
-
this.rootClassName = "";
|
|
10
|
-
this.rootClassName = (_a = props.className) !== null && _a !== void 0 ? _a : "";
|
|
11
|
-
this.rootContainer = document.createElement("div");
|
|
12
|
-
this.rootContainer.className = this.rootClassName;
|
|
13
|
-
this.rootContainer.tabIndex = -1;
|
|
14
|
-
(container !== null && container !== void 0 ? container : Misc.Globals.rootElement).appendChild(this.rootContainer);
|
|
15
|
-
// Create the container for all the modals
|
|
16
|
-
var modalsContainer = document.createElement("div");
|
|
17
|
-
modalsContainer.className = "modal fade";
|
|
18
|
-
modalsContainer.tabIndex = -1;
|
|
19
|
-
modalsContainer.addEventListener("mousedown", this.onContainerClick.bind(this));
|
|
20
|
-
modalsContainer.addEventListener("keydown", function (key) {
|
|
21
|
-
if (key.key === "Escape") {
|
|
22
|
-
if (_this.modals.length > 0) {
|
|
23
|
-
var lastModel = _this.modals[_this.modals.length - 1];
|
|
24
|
-
if (lastModel.onDismiss)
|
|
25
|
-
lastModel.onDismiss(undefined);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
this.modalsContainer = modalsContainer;
|
|
30
|
-
this.rootContainer.appendChild(modalsContainer);
|
|
31
|
-
// Create the full screen backdrop
|
|
32
|
-
var backdrop = document.createElement("div");
|
|
33
|
-
backdrop.className = "modal-backdrop fade";
|
|
34
|
-
backdrop.style.display = "none";
|
|
35
|
-
this.modalsBackdrop = backdrop;
|
|
36
|
-
this.rootContainer.appendChild(backdrop);
|
|
37
|
-
}
|
|
38
|
-
Object.defineProperty(ModalHelper, "appInstance", {
|
|
39
|
-
get: function () {
|
|
40
|
-
if (!ModalHelper._instance) {
|
|
41
|
-
throw Error("ModalHelper is not initialised. Make sure your app contains a ModalContainer component.");
|
|
42
|
-
}
|
|
43
|
-
return ModalHelper._instance;
|
|
44
|
-
},
|
|
45
|
-
enumerable: false,
|
|
46
|
-
configurable: true
|
|
47
|
-
});
|
|
48
|
-
ModalHelper.initialise = function (props, container) {
|
|
49
|
-
if (!ModalHelper._instance) {
|
|
50
|
-
ModalHelper._instance = new ModalHelper(props, container);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
ModalHelper.prototype.updateProps = function (props) {
|
|
54
|
-
var _a;
|
|
55
|
-
this.rootClassName = (_a = props.className) !== null && _a !== void 0 ? _a : "";
|
|
56
|
-
};
|
|
57
|
-
ModalHelper.prototype.addModal = function (modal, options, onDismiss) {
|
|
58
|
-
modal.className = "modal-container";
|
|
59
|
-
// Create backdrop to prevent interaction with non top-level modals
|
|
60
|
-
var modalOverlay = document.createElement("div");
|
|
61
|
-
modalOverlay.className = "modal-container-backdrop";
|
|
62
|
-
modal.appendChild(modalOverlay);
|
|
63
|
-
if (document.activeElement)
|
|
64
|
-
document.activeElement.blur();
|
|
65
|
-
this.makeModalsInactive();
|
|
66
|
-
this.endModalAnimations();
|
|
67
|
-
var hasVisibleModal = this.modals.find(function (m) { return !m.isRemoving; });
|
|
68
|
-
var modalInstance = { container: modal, onDismiss: onDismiss, isRemoving: false };
|
|
69
|
-
this.modals.push(modalInstance);
|
|
70
|
-
if (!hasVisibleModal) {
|
|
71
|
-
this.addFirstModal(modal, options);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this.insertAdditionalModal(modal);
|
|
75
|
-
}
|
|
76
|
-
modal.tabIndex = -1;
|
|
77
|
-
modal.focus();
|
|
78
|
-
return modalInstance;
|
|
79
|
-
};
|
|
80
|
-
ModalHelper.prototype.addFirstModal = function (modal, options) {
|
|
81
|
-
this.modalsContainer.appendChild(modal);
|
|
82
|
-
if (document.body.scrollHeight > window.innerHeight && document.body.clientWidth > 768) {
|
|
83
|
-
document.body.classList.add("has-modal-scroll-fix");
|
|
84
|
-
}
|
|
85
|
-
document.body.classList.add("has-modal");
|
|
86
|
-
this.modalsContainer.classList.remove("modal-scroll-fix");
|
|
87
|
-
this.modalsContainer.style.display = "block";
|
|
88
|
-
this.modalsBackdrop.style.display = "block";
|
|
89
|
-
AnimationHelper.triggerReflow(this.modalsContainer);
|
|
90
|
-
this.modalsContainer.classList.add("show");
|
|
91
|
-
this.modalsBackdrop.classList.add("show");
|
|
92
|
-
if (options.containerClassName) {
|
|
93
|
-
this.rootContainer.classList.add(options.containerClassName);
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
ModalHelper.prototype.insertAdditionalModal = function (modal) {
|
|
97
|
-
this.modalsContainer.insertBefore(modal, this.modalsContainer.childNodes[0]);
|
|
98
|
-
var marginTop = parseInt(window.getComputedStyle(modal.children[0]).marginTop);
|
|
99
|
-
modal.style.marginTop = -(modal.clientHeight + marginTop) + "px";
|
|
100
|
-
AnimationHelper.triggerReflow(this.modalsContainer);
|
|
101
|
-
modal.classList.add("modal-container-additional");
|
|
102
|
-
AnimationHelper.triggerReflow(this.modalsContainer);
|
|
103
|
-
modal.style.marginTop = "0";
|
|
104
|
-
modal.classList.add("show");
|
|
105
|
-
this.modalsContainer.scrollTo(0, 0);
|
|
106
|
-
};
|
|
107
|
-
ModalHelper.prototype.beginRemove = function (modal) {
|
|
108
|
-
if (!modal.isRemoving) {
|
|
109
|
-
modal.isRemoving = true;
|
|
110
|
-
if (this.modals.every(function (m) { return m.isRemoving; })) {
|
|
111
|
-
// All modals are closing.
|
|
112
|
-
// Cancel any pending closing slide animations, since all modals are now being closed using the main animation.
|
|
113
|
-
this.cancelModalSlides();
|
|
114
|
-
// Remove the backdrop and top level container.
|
|
115
|
-
this.modalsContainer.classList.remove("show");
|
|
116
|
-
this.modalsBackdrop.classList.remove("show");
|
|
117
|
-
this.rootContainer.className = this.rootClassName;
|
|
118
|
-
document.body.classList.remove("has-modal", "has-modal-scroll-fix");
|
|
119
|
-
if (document.body.scrollHeight > window.innerHeight) {
|
|
120
|
-
// Prevent modal jumping left when showing scrollbar.
|
|
121
|
-
this.modalsContainer.classList.add("modal-scroll-fix");
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
// Otherwise just fade the current modal
|
|
126
|
-
modal.container.classList.remove("show");
|
|
127
|
-
var marginTop_1 = parseInt(window.getComputedStyle(modal.container.children[0]).marginTop);
|
|
128
|
-
modal.fadeTimer = setTimeout(function () { return modal.container.style.marginTop = -(modal.container.clientHeight + marginTop_1) + "px"; }, 0);
|
|
129
|
-
this.modals[this.modals.length - 2].container.classList.remove(inactiveClassName);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
ModalHelper.prototype.endRemove = function (modal) {
|
|
134
|
-
// call again in case the modal was destroyed without being closed by the user.
|
|
135
|
-
this.beginRemove(modal);
|
|
136
|
-
this.modalsContainer.removeChild(modal.container);
|
|
137
|
-
this.modals.splice(this.modals.indexOf(modal), 1);
|
|
138
|
-
if (this.modalsContainer.childNodes.length == 0) {
|
|
139
|
-
this.modalsContainer.style.display = "none";
|
|
140
|
-
this.modalsBackdrop.style.display = "none";
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
ModalHelper.prototype.endModalAnimations = function () {
|
|
144
|
-
for (var _i = 0, _a = this.modals.filter(function (m) { return m.isRemoving; }); _i < _a.length; _i++) {
|
|
145
|
-
var modal = _a[_i];
|
|
146
|
-
modal.container.style.display = "none";
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
ModalHelper.prototype.makeModalsInactive = function () {
|
|
150
|
-
for (var _i = 0, _a = this.modals; _i < _a.length; _i++) {
|
|
151
|
-
var modal = _a[_i];
|
|
152
|
-
modal.container.classList.add(inactiveClassName);
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
ModalHelper.prototype.cancelModalSlides = function () {
|
|
156
|
-
for (var _i = 0, _a = this.modals; _i < _a.length; _i++) {
|
|
157
|
-
var modal = _a[_i];
|
|
158
|
-
if (modal.fadeTimer) {
|
|
159
|
-
clearTimeout(modal.fadeTimer);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
ModalHelper.prototype.onContainerClick = function (e) {
|
|
164
|
-
if (this.modals.length == 1) {
|
|
165
|
-
var modal = this.modals[this.modals.length - 1];
|
|
166
|
-
if (e.target == this.modalsContainer || e.target == modal.container) {
|
|
167
|
-
if (modal.onDismiss)
|
|
168
|
-
modal.onDismiss(e);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
return ModalHelper;
|
|
173
|
-
}());
|
|
174
|
-
export default ModalHelper;
|
|
1
|
+
import { Misc } from '../../';
|
|
2
|
+
import AnimationHelper from '../AnimationHelper';
|
|
3
|
+
var inactiveClassName = "inactive";
|
|
4
|
+
var ModalHelper = /** @class */ (function () {
|
|
5
|
+
function ModalHelper(props, container) {
|
|
6
|
+
var _this = this;
|
|
7
|
+
var _a;
|
|
8
|
+
this.modals = [];
|
|
9
|
+
this.rootClassName = "";
|
|
10
|
+
this.rootClassName = (_a = props.className) !== null && _a !== void 0 ? _a : "";
|
|
11
|
+
this.rootContainer = document.createElement("div");
|
|
12
|
+
this.rootContainer.className = this.rootClassName;
|
|
13
|
+
this.rootContainer.tabIndex = -1;
|
|
14
|
+
(container !== null && container !== void 0 ? container : Misc.Globals.rootElement).appendChild(this.rootContainer);
|
|
15
|
+
// Create the container for all the modals
|
|
16
|
+
var modalsContainer = document.createElement("div");
|
|
17
|
+
modalsContainer.className = "modal fade";
|
|
18
|
+
modalsContainer.tabIndex = -1;
|
|
19
|
+
modalsContainer.addEventListener("mousedown", this.onContainerClick.bind(this));
|
|
20
|
+
modalsContainer.addEventListener("keydown", function (key) {
|
|
21
|
+
if (key.key === "Escape") {
|
|
22
|
+
if (_this.modals.length > 0) {
|
|
23
|
+
var lastModel = _this.modals[_this.modals.length - 1];
|
|
24
|
+
if (lastModel.onDismiss)
|
|
25
|
+
lastModel.onDismiss(undefined);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
this.modalsContainer = modalsContainer;
|
|
30
|
+
this.rootContainer.appendChild(modalsContainer);
|
|
31
|
+
// Create the full screen backdrop
|
|
32
|
+
var backdrop = document.createElement("div");
|
|
33
|
+
backdrop.className = "modal-backdrop fade";
|
|
34
|
+
backdrop.style.display = "none";
|
|
35
|
+
this.modalsBackdrop = backdrop;
|
|
36
|
+
this.rootContainer.appendChild(backdrop);
|
|
37
|
+
}
|
|
38
|
+
Object.defineProperty(ModalHelper, "appInstance", {
|
|
39
|
+
get: function () {
|
|
40
|
+
if (!ModalHelper._instance) {
|
|
41
|
+
throw Error("ModalHelper is not initialised. Make sure your app contains a ModalContainer component.");
|
|
42
|
+
}
|
|
43
|
+
return ModalHelper._instance;
|
|
44
|
+
},
|
|
45
|
+
enumerable: false,
|
|
46
|
+
configurable: true
|
|
47
|
+
});
|
|
48
|
+
ModalHelper.initialise = function (props, container) {
|
|
49
|
+
if (!ModalHelper._instance) {
|
|
50
|
+
ModalHelper._instance = new ModalHelper(props, container);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
ModalHelper.prototype.updateProps = function (props) {
|
|
54
|
+
var _a;
|
|
55
|
+
this.rootClassName = (_a = props.className) !== null && _a !== void 0 ? _a : "";
|
|
56
|
+
};
|
|
57
|
+
ModalHelper.prototype.addModal = function (modal, options, onDismiss) {
|
|
58
|
+
modal.className = "modal-container";
|
|
59
|
+
// Create backdrop to prevent interaction with non top-level modals
|
|
60
|
+
var modalOverlay = document.createElement("div");
|
|
61
|
+
modalOverlay.className = "modal-container-backdrop";
|
|
62
|
+
modal.appendChild(modalOverlay);
|
|
63
|
+
if (document.activeElement)
|
|
64
|
+
document.activeElement.blur();
|
|
65
|
+
this.makeModalsInactive();
|
|
66
|
+
this.endModalAnimations();
|
|
67
|
+
var hasVisibleModal = this.modals.find(function (m) { return !m.isRemoving; });
|
|
68
|
+
var modalInstance = { container: modal, onDismiss: onDismiss, isRemoving: false };
|
|
69
|
+
this.modals.push(modalInstance);
|
|
70
|
+
if (!hasVisibleModal) {
|
|
71
|
+
this.addFirstModal(modal, options);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.insertAdditionalModal(modal);
|
|
75
|
+
}
|
|
76
|
+
modal.tabIndex = -1;
|
|
77
|
+
modal.focus();
|
|
78
|
+
return modalInstance;
|
|
79
|
+
};
|
|
80
|
+
ModalHelper.prototype.addFirstModal = function (modal, options) {
|
|
81
|
+
this.modalsContainer.appendChild(modal);
|
|
82
|
+
if (document.body.scrollHeight > window.innerHeight && document.body.clientWidth > 768) {
|
|
83
|
+
document.body.classList.add("has-modal-scroll-fix");
|
|
84
|
+
}
|
|
85
|
+
document.body.classList.add("has-modal");
|
|
86
|
+
this.modalsContainer.classList.remove("modal-scroll-fix");
|
|
87
|
+
this.modalsContainer.style.display = "block";
|
|
88
|
+
this.modalsBackdrop.style.display = "block";
|
|
89
|
+
AnimationHelper.triggerReflow(this.modalsContainer);
|
|
90
|
+
this.modalsContainer.classList.add("show");
|
|
91
|
+
this.modalsBackdrop.classList.add("show");
|
|
92
|
+
if (options.containerClassName) {
|
|
93
|
+
this.rootContainer.classList.add(options.containerClassName);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
ModalHelper.prototype.insertAdditionalModal = function (modal) {
|
|
97
|
+
this.modalsContainer.insertBefore(modal, this.modalsContainer.childNodes[0]);
|
|
98
|
+
var marginTop = parseInt(window.getComputedStyle(modal.children[0]).marginTop);
|
|
99
|
+
modal.style.marginTop = -(modal.clientHeight + marginTop) + "px";
|
|
100
|
+
AnimationHelper.triggerReflow(this.modalsContainer);
|
|
101
|
+
modal.classList.add("modal-container-additional");
|
|
102
|
+
AnimationHelper.triggerReflow(this.modalsContainer);
|
|
103
|
+
modal.style.marginTop = "0";
|
|
104
|
+
modal.classList.add("show");
|
|
105
|
+
this.modalsContainer.scrollTo(0, 0);
|
|
106
|
+
};
|
|
107
|
+
ModalHelper.prototype.beginRemove = function (modal) {
|
|
108
|
+
if (!modal.isRemoving) {
|
|
109
|
+
modal.isRemoving = true;
|
|
110
|
+
if (this.modals.every(function (m) { return m.isRemoving; })) {
|
|
111
|
+
// All modals are closing.
|
|
112
|
+
// Cancel any pending closing slide animations, since all modals are now being closed using the main animation.
|
|
113
|
+
this.cancelModalSlides();
|
|
114
|
+
// Remove the backdrop and top level container.
|
|
115
|
+
this.modalsContainer.classList.remove("show");
|
|
116
|
+
this.modalsBackdrop.classList.remove("show");
|
|
117
|
+
this.rootContainer.className = this.rootClassName;
|
|
118
|
+
document.body.classList.remove("has-modal", "has-modal-scroll-fix");
|
|
119
|
+
if (document.body.scrollHeight > window.innerHeight) {
|
|
120
|
+
// Prevent modal jumping left when showing scrollbar.
|
|
121
|
+
this.modalsContainer.classList.add("modal-scroll-fix");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Otherwise just fade the current modal
|
|
126
|
+
modal.container.classList.remove("show");
|
|
127
|
+
var marginTop_1 = parseInt(window.getComputedStyle(modal.container.children[0]).marginTop);
|
|
128
|
+
modal.fadeTimer = setTimeout(function () { return modal.container.style.marginTop = -(modal.container.clientHeight + marginTop_1) + "px"; }, 0);
|
|
129
|
+
this.modals[this.modals.length - 2].container.classList.remove(inactiveClassName);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
ModalHelper.prototype.endRemove = function (modal) {
|
|
134
|
+
// call again in case the modal was destroyed without being closed by the user.
|
|
135
|
+
this.beginRemove(modal);
|
|
136
|
+
this.modalsContainer.removeChild(modal.container);
|
|
137
|
+
this.modals.splice(this.modals.indexOf(modal), 1);
|
|
138
|
+
if (this.modalsContainer.childNodes.length == 0) {
|
|
139
|
+
this.modalsContainer.style.display = "none";
|
|
140
|
+
this.modalsBackdrop.style.display = "none";
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
ModalHelper.prototype.endModalAnimations = function () {
|
|
144
|
+
for (var _i = 0, _a = this.modals.filter(function (m) { return m.isRemoving; }); _i < _a.length; _i++) {
|
|
145
|
+
var modal = _a[_i];
|
|
146
|
+
modal.container.style.display = "none";
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
ModalHelper.prototype.makeModalsInactive = function () {
|
|
150
|
+
for (var _i = 0, _a = this.modals; _i < _a.length; _i++) {
|
|
151
|
+
var modal = _a[_i];
|
|
152
|
+
modal.container.classList.add(inactiveClassName);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
ModalHelper.prototype.cancelModalSlides = function () {
|
|
156
|
+
for (var _i = 0, _a = this.modals; _i < _a.length; _i++) {
|
|
157
|
+
var modal = _a[_i];
|
|
158
|
+
if (modal.fadeTimer) {
|
|
159
|
+
clearTimeout(modal.fadeTimer);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
ModalHelper.prototype.onContainerClick = function (e) {
|
|
164
|
+
if (this.modals.length == 1) {
|
|
165
|
+
var modal = this.modals[this.modals.length - 1];
|
|
166
|
+
if (e.target == this.modalsContainer || e.target == modal.container) {
|
|
167
|
+
if (modal.onDismiss)
|
|
168
|
+
modal.onDismiss(e);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
return ModalHelper;
|
|
173
|
+
}());
|
|
174
|
+
export default ModalHelper;
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { IButtonOptions } from '../ButtonOptions';
|
|
2
|
-
import { IFormOptions } from '../FormOptions';
|
|
3
|
-
import { IModelBase } from '../../Model/IModelBase';
|
|
4
|
-
import { IPropertyInstance } from '../../Model/PropertyInstance';
|
|
5
|
-
export interface IModalOptionsBase {
|
|
6
|
-
title: string;
|
|
7
|
-
size?: "sm" | "lg" | "xl";
|
|
8
|
-
/** Cancel button in the top right of the modal. */
|
|
9
|
-
showCancelButton?: boolean;
|
|
10
|
-
/** Close button in the footer of the modal. By performs the same action as cancel by default. */
|
|
11
|
-
closeButton?: Partial<IButtonOptions> | false;
|
|
12
|
-
/** Ok button in the footer of the modal. */
|
|
13
|
-
acceptButton?: Partial<IButtonOptions> | false;
|
|
14
|
-
/** Custom set of buttons. Close and Accept button will be ignored if this is specified. */
|
|
15
|
-
buttons?: IButtonOptions[];
|
|
16
|
-
/** Properties to pass to the modals internal form */
|
|
17
|
-
formProps?: IFormOptions<IModelBase>;
|
|
18
|
-
/** Stops the modal from including its own form. Use this if your content contains a form element. */
|
|
19
|
-
suppressForm?: boolean;
|
|
20
|
-
/** Class name to be added to the modal. */
|
|
21
|
-
className?: string;
|
|
22
|
-
/** Class name to add to the modal container. Note, this will only apply if this is the first modal shown. */
|
|
23
|
-
containerClassName?: string;
|
|
24
|
-
/** Override the footer. Button props will be ignored when you specify a custom footer. */
|
|
25
|
-
footer?: any;
|
|
26
|
-
/** Add content to the left of the buttons. */
|
|
27
|
-
footerContent?: any;
|
|
28
|
-
/** Callback to handle when the modal is closed / cancelled by the user. Not called on accept. */
|
|
29
|
-
onClose?: (event: any) => void;
|
|
30
|
-
}
|
|
31
|
-
export default interface IModalOptions extends IModalOptionsBase {
|
|
32
|
-
/** Controls the visibility of the modal. */
|
|
33
|
-
show: boolean;
|
|
34
|
-
/** Callback to handle when the modal is closed by the user. This should cause show to become false. */
|
|
35
|
-
onClose: (event: any) => void;
|
|
36
|
-
children: any;
|
|
37
|
-
}
|
|
38
|
-
export interface IModalOptionsAuto extends IModalOptionsBase {
|
|
39
|
-
/**
|
|
40
|
-
* Controls the visibility of the modal.
|
|
41
|
-
* The modal will be shown if the value of the property is a non falsy value.
|
|
42
|
-
* If the modal is closed by the user, the value of the property will be set to:
|
|
43
|
-
* false if it is currently true,
|
|
44
|
-
* null if it is non boolean.
|
|
45
|
-
* If the value is an object, it will be used as the forms model. */
|
|
46
|
-
bind: IPropertyInstance;
|
|
47
|
-
children: any;
|
|
48
|
-
}
|
|
49
|
-
export interface IModalOptionsModel extends IModalOptionsBase {
|
|
50
|
-
/**
|
|
51
|
-
* Controls the visibility of the modal.
|
|
52
|
-
* The modal will be shown if the value of the property is an instance of an object.
|
|
53
|
-
* If the modal is closed by the user, the value of the property will be set to null.
|
|
54
|
-
* The value will also be used as the forms model.
|
|
55
|
-
* The value will be passed into the render callback function. It will still have a value while the modal collapse animation completes. */
|
|
56
|
-
bindModel: IPropertyInstance;
|
|
57
|
-
/**
|
|
58
|
-
* Child content must be a callback function accepting the model as a parameter.
|
|
59
|
-
*/
|
|
60
|
-
children: Function;
|
|
61
|
-
}
|
|
1
|
+
import { IButtonOptions } from '../ButtonOptions';
|
|
2
|
+
import { IFormOptions } from '../FormOptions';
|
|
3
|
+
import { IModelBase } from '../../Model/IModelBase';
|
|
4
|
+
import { IPropertyInstance } from '../../Model/PropertyInstance';
|
|
5
|
+
export interface IModalOptionsBase {
|
|
6
|
+
title: string;
|
|
7
|
+
size?: "sm" | "lg" | "xl";
|
|
8
|
+
/** Cancel button in the top right of the modal. */
|
|
9
|
+
showCancelButton?: boolean;
|
|
10
|
+
/** Close button in the footer of the modal. By performs the same action as cancel by default. */
|
|
11
|
+
closeButton?: Partial<IButtonOptions> | false;
|
|
12
|
+
/** Ok button in the footer of the modal. */
|
|
13
|
+
acceptButton?: Partial<IButtonOptions> | false;
|
|
14
|
+
/** Custom set of buttons. Close and Accept button will be ignored if this is specified. */
|
|
15
|
+
buttons?: IButtonOptions[];
|
|
16
|
+
/** Properties to pass to the modals internal form */
|
|
17
|
+
formProps?: IFormOptions<IModelBase>;
|
|
18
|
+
/** Stops the modal from including its own form. Use this if your content contains a form element. */
|
|
19
|
+
suppressForm?: boolean;
|
|
20
|
+
/** Class name to be added to the modal. */
|
|
21
|
+
className?: string;
|
|
22
|
+
/** Class name to add to the modal container. Note, this will only apply if this is the first modal shown. */
|
|
23
|
+
containerClassName?: string;
|
|
24
|
+
/** Override the footer. Button props will be ignored when you specify a custom footer. */
|
|
25
|
+
footer?: any;
|
|
26
|
+
/** Add content to the left of the buttons. */
|
|
27
|
+
footerContent?: any;
|
|
28
|
+
/** Callback to handle when the modal is closed / cancelled by the user. Not called on accept. */
|
|
29
|
+
onClose?: (event: any) => void;
|
|
30
|
+
}
|
|
31
|
+
export default interface IModalOptions extends IModalOptionsBase {
|
|
32
|
+
/** Controls the visibility of the modal. */
|
|
33
|
+
show: boolean;
|
|
34
|
+
/** Callback to handle when the modal is closed by the user. This should cause show to become false. */
|
|
35
|
+
onClose: (event: any) => void;
|
|
36
|
+
children: any;
|
|
37
|
+
}
|
|
38
|
+
export interface IModalOptionsAuto extends IModalOptionsBase {
|
|
39
|
+
/**
|
|
40
|
+
* Controls the visibility of the modal.
|
|
41
|
+
* The modal will be shown if the value of the property is a non falsy value.
|
|
42
|
+
* If the modal is closed by the user, the value of the property will be set to:
|
|
43
|
+
* false if it is currently true,
|
|
44
|
+
* null if it is non boolean.
|
|
45
|
+
* If the value is an object, it will be used as the forms model. */
|
|
46
|
+
bind: IPropertyInstance;
|
|
47
|
+
children: any;
|
|
48
|
+
}
|
|
49
|
+
export interface IModalOptionsModel extends IModalOptionsBase {
|
|
50
|
+
/**
|
|
51
|
+
* Controls the visibility of the modal.
|
|
52
|
+
* The modal will be shown if the value of the property is an instance of an object.
|
|
53
|
+
* If the modal is closed by the user, the value of the property will be set to null.
|
|
54
|
+
* The value will also be used as the forms model.
|
|
55
|
+
* The value will be passed into the render callback function. It will still have a value while the modal collapse animation completes. */
|
|
56
|
+
bindModel: IPropertyInstance;
|
|
57
|
+
/**
|
|
58
|
+
* Child content must be a callback function accepting the model as a parameter.
|
|
59
|
+
*/
|
|
60
|
+
children: Function;
|
|
61
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import IModalOptions from './ModalOptions';
|
|
2
|
-
export interface IModalStore {
|
|
3
|
-
modals: CodeModal[];
|
|
4
|
-
addModal(title: string, message: any, modalOptions: Partial<IModalOptions>): ICodeModal;
|
|
5
|
-
removeModal(modal: CodeModal): void;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Represents a list of modal components added programatically.
|
|
9
|
-
* Modals will be removed from the list when they are closed by the user, and the animation has been complete.
|
|
10
|
-
* A modal container will render modals based on the information in this list
|
|
11
|
-
*/
|
|
12
|
-
export default class ModalStore implements IModalStore {
|
|
13
|
-
modals: CodeModal[];
|
|
14
|
-
addModal(title: string, message: any, modalOptions: Partial<IModalOptions>): ICodeModal;
|
|
15
|
-
removeModal(modal: CodeModal): void;
|
|
16
|
-
}
|
|
17
|
-
export interface ICodeModal {
|
|
18
|
-
/** Closes the modal. Callbacks on the modal buttons will not fire. */
|
|
19
|
-
close(): void;
|
|
20
|
-
}
|
|
21
|
-
/** Represents a modal component added programatically. */
|
|
22
|
-
declare class CodeModal implements ICodeModal {
|
|
23
|
-
private store;
|
|
24
|
-
content: any;
|
|
25
|
-
options: IModalOptions;
|
|
26
|
-
constructor(store: IModalStore, content: any, options: IModalOptions);
|
|
27
|
-
interceptClick(onClick?: (e: any) => void): (e: any) => void;
|
|
28
|
-
id: string;
|
|
29
|
-
close(): void;
|
|
30
|
-
refreshValue: number;
|
|
31
|
-
}
|
|
32
|
-
export {};
|
|
1
|
+
import IModalOptions from './ModalOptions';
|
|
2
|
+
export interface IModalStore {
|
|
3
|
+
modals: CodeModal[];
|
|
4
|
+
addModal(title: string, message: any, modalOptions: Partial<IModalOptions>): ICodeModal;
|
|
5
|
+
removeModal(modal: CodeModal): void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Represents a list of modal components added programatically.
|
|
9
|
+
* Modals will be removed from the list when they are closed by the user, and the animation has been complete.
|
|
10
|
+
* A modal container will render modals based on the information in this list
|
|
11
|
+
*/
|
|
12
|
+
export default class ModalStore implements IModalStore {
|
|
13
|
+
modals: CodeModal[];
|
|
14
|
+
addModal(title: string, message: any, modalOptions: Partial<IModalOptions>): ICodeModal;
|
|
15
|
+
removeModal(modal: CodeModal): void;
|
|
16
|
+
}
|
|
17
|
+
export interface ICodeModal {
|
|
18
|
+
/** Closes the modal. Callbacks on the modal buttons will not fire. */
|
|
19
|
+
close(): void;
|
|
20
|
+
}
|
|
21
|
+
/** Represents a modal component added programatically. */
|
|
22
|
+
declare class CodeModal implements ICodeModal {
|
|
23
|
+
private store;
|
|
24
|
+
content: any;
|
|
25
|
+
options: IModalOptions;
|
|
26
|
+
constructor(store: IModalStore, content: any, options: IModalOptions);
|
|
27
|
+
interceptClick(onClick?: (e: any) => void): (e: any) => void;
|
|
28
|
+
id: string;
|
|
29
|
+
close(): void;
|
|
30
|
+
refreshValue: number;
|
|
31
|
+
}
|
|
32
|
+
export {};
|