dry-ux 1.32.0 → 1.34.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.
@@ -18,7 +18,9 @@ const DajaxiceProxy = ({ modules, authCheck, onError, loader: showLoaderGlobal,
18
18
  return function ({ args, skip, loader: showLoaderLocal, } = {}) {
19
19
  return new Promise((resolve, reject) => {
20
20
  const methodName = window["Dajaxice"][module][method];
21
- const loader = (showLoaderGlobal || showLoaderLocal) && !(skip === null || skip === void 0 ? void 0 : skip.loader) ? new Loader_1.Loader() : undefined;
21
+ const loader = (showLoaderGlobal || showLoaderLocal) && !(skip === null || skip === void 0 ? void 0 : skip.loader)
22
+ ? Loader_1.Loader.getInstance()
23
+ : undefined;
22
24
  const hideLoader = () => {
23
25
  try {
24
26
  loader === null || loader === void 0 ? void 0 : loader.hide();
@@ -1,6 +1,9 @@
1
1
  export declare class Loader {
2
2
  private readonly spinnerStyles;
3
3
  private readonly elementId;
4
+ private static instance;
5
+ private constructor();
6
+ static getInstance(): Loader;
4
7
  get element(): HTMLElement;
5
8
  show(): void;
6
9
  hide(): void;
@@ -4,9 +4,15 @@ exports.Loader = void 0;
4
4
  const SpinnerStyles_1 = require("./SpinnerStyles");
5
5
  class Loader {
6
6
  constructor() {
7
- this.spinnerStyles = new SpinnerStyles_1.SpinnerStyles();
7
+ this.spinnerStyles = SpinnerStyles_1.SpinnerStyles.getInstance();
8
8
  this.elementId = "dry-ux-loader";
9
9
  }
10
+ static getInstance() {
11
+ if (!Loader.instance) {
12
+ Loader.instance = new Loader();
13
+ }
14
+ return Loader.instance;
15
+ }
10
16
  get element() {
11
17
  return document.getElementById(this.elementId);
12
18
  }
@@ -5,7 +5,7 @@ const React = require("react");
5
5
  const SpinnerStyles_1 = require("./SpinnerStyles");
6
6
  exports.Spinner = React.memo(() => {
7
7
  React.useEffect(() => {
8
- const spinnerStyles = new SpinnerStyles_1.SpinnerStyles();
8
+ const spinnerStyles = SpinnerStyles_1.SpinnerStyles.getInstance();
9
9
  spinnerStyles.add();
10
10
  }, []);
11
11
  return React.createElement("div", { className: "dry-ux-spinner" });
@@ -1,5 +1,8 @@
1
1
  export declare class SpinnerStyles {
2
2
  private readonly css;
3
3
  private readonly id;
4
+ private static instance;
5
+ private constructor();
6
+ static getInstance(): SpinnerStyles;
4
7
  add(): HTMLStyleElement;
5
8
  }
@@ -32,7 +32,8 @@ class SpinnerStyles {
32
32
  }
33
33
 
34
34
  .dry-ux-spinner:not(.fullscreen) {
35
- padding: 20px
35
+ padding: 20px;
36
+ display: inline-block;
36
37
  }
37
38
 
38
39
  /* :not(:required) hides these rules from IE9 and below */
@@ -131,6 +132,12 @@ class SpinnerStyles {
131
132
  `;
132
133
  this.id = "dry-ux-loader-styles";
133
134
  }
135
+ static getInstance() {
136
+ if (!SpinnerStyles.instance) {
137
+ SpinnerStyles.instance = new SpinnerStyles();
138
+ }
139
+ return SpinnerStyles.instance;
140
+ }
134
141
  add() {
135
142
  if (!document.getElementById(this.id)) {
136
143
  let el = document.createElement("style");
@@ -4,11 +4,13 @@ import "../types";
4
4
  export interface IUIUtilProviderState {
5
5
  modal: IUIUtilModal;
6
6
  alert: IUIUtilAlert;
7
- loader: IUIUtilLoader;
7
+ customLoader: IUIUtilLoader;
8
+ loader: Pick<IUIUtilLoader, "show" | "hide">;
8
9
  }
9
10
  export declare const UIUtilContext: React.Context<IUIUtilProviderState>;
10
11
  export declare const useUIUtilContext: () => IUIUtilProviderState;
11
12
  export declare class UIUtilProvider extends React.PureComponent<{}, IUIUtilProviderState> {
13
+ private readonly loader;
12
14
  constructor(props: any);
13
15
  get modalDefaults(): {
14
16
  create: any;
@@ -29,11 +31,15 @@ export declare class UIUtilProvider extends React.PureComponent<{}, IUIUtilProvi
29
31
  show: any;
30
32
  showNoty: any;
31
33
  };
32
- get loaderDefaults(): {
34
+ get customLoaderDefaults(): {
33
35
  show: () => void;
34
36
  hide: () => void;
35
37
  shown: boolean;
36
38
  };
39
+ get loaderDefaults(): {
40
+ show: () => void;
41
+ hide: () => void;
42
+ };
37
43
  showNotifyAlert(message: string, alertType: AlertType, position?: string, bindToElement?: any): void;
38
44
  showNoty(message: string, alertType: AlertType): void;
39
45
  toggleModalInstance(id: string, shown: boolean, destroyOnClose?: boolean): void;
@@ -4,6 +4,7 @@ exports.UIUtilProvider = exports.useUIUtilContext = exports.UIUtilContext = void
4
4
  const React = require("react");
5
5
  require("../types");
6
6
  const react_bootstrap_1 = require("react-bootstrap");
7
+ const Loader_1 = require("./Loader");
7
8
  const defaultState = {
8
9
  modal: {
9
10
  show: null,
@@ -18,11 +19,15 @@ const defaultState = {
18
19
  show: null,
19
20
  showNoty: null,
20
21
  },
21
- loader: {
22
+ customLoader: {
22
23
  shown: false,
23
24
  show: null,
24
25
  hide: null,
25
26
  },
27
+ loader: {
28
+ show: null,
29
+ hide: null,
30
+ },
26
31
  };
27
32
  exports.UIUtilContext = React.createContext(defaultState);
28
33
  const useUIUtilContext = () => React.useContext(exports.UIUtilContext);
@@ -30,7 +35,8 @@ exports.useUIUtilContext = useUIUtilContext;
30
35
  class UIUtilProvider extends React.PureComponent {
31
36
  constructor(props) {
32
37
  super(props);
33
- this.state = Object.assign(Object.assign({}, defaultState), { modal: this.modalDefaults, alert: this.alertDefaults, loader: this.loaderDefaults });
38
+ this.loader = Loader_1.Loader.getInstance();
39
+ this.state = Object.assign(Object.assign({}, defaultState), { modal: this.modalDefaults, alert: this.alertDefaults, customLoader: this.customLoaderDefaults, loader: this.loaderDefaults });
34
40
  }
35
41
  get modalDefaults() {
36
42
  return Object.assign(Object.assign({}, defaultState.modal), { create: this.createModal.bind(this), show: (options) => this.createModal(null, options), getCurrent: () => {
@@ -58,13 +64,16 @@ class UIUtilProvider extends React.PureComponent {
58
64
  showNoty: this.showNoty.bind(this),
59
65
  };
60
66
  }
61
- get loaderDefaults() {
62
- return Object.assign(Object.assign({}, defaultState.loader), { show: () => this.setState({
63
- loader: Object.assign(Object.assign({}, this.state.loader), { shown: true }),
67
+ get customLoaderDefaults() {
68
+ return Object.assign(Object.assign({}, defaultState.customLoader), { show: () => this.setState({
69
+ customLoader: Object.assign(Object.assign({}, this.state.customLoader), { shown: true }),
64
70
  }), hide: () => this.setState({
65
- loader: Object.assign(Object.assign({}, this.state.loader), { shown: false }),
71
+ customLoader: Object.assign(Object.assign({}, this.state.customLoader), { shown: false }),
66
72
  }) });
67
73
  }
74
+ get loaderDefaults() {
75
+ return Object.assign(Object.assign({}, defaultState.loader), { show: () => this.loader.show(), hide: () => this.loader.hide() });
76
+ }
68
77
  showNotifyAlert(message, alertType, position, bindToElement) {
69
78
  Promise.resolve().then(() => require(/* webpackChunkName: "notify" */ "../external-dependencies/notify-js/notify")).then(() => {
70
79
  const options = Object.assign(Object.assign({}, (alertType && { className: alertType })), (position && { position }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dry-ux",
3
- "version": "1.32.0",
3
+ "version": "1.34.0",
4
4
  "description": "",
5
5
  "main": "dist/index",
6
6
  "scripts": {