@kwiz/fluentui 1.0.31 → 1.0.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. package/dist/controls/button.d.ts +14 -13
  2. package/dist/controls/button.js +8 -7
  3. package/dist/controls/button.js.map +1 -1
  4. package/dist/controls/divider.js +2 -2
  5. package/dist/controls/divider.js.map +1 -1
  6. package/dist/controls/horizontal.d.ts +1 -0
  7. package/dist/controls/horizontal.js +6 -1
  8. package/dist/controls/horizontal.js.map +1 -1
  9. package/dist/controls/menu.d.ts +34 -0
  10. package/dist/controls/menu.js +96 -0
  11. package/dist/controls/menu.js.map +1 -0
  12. package/dist/controls/prompt.d.ts +2 -0
  13. package/dist/controls/prompt.js +27 -6
  14. package/dist/controls/prompt.js.map +1 -1
  15. package/dist/controls/search.js +4 -3
  16. package/dist/controls/search.js.map +1 -1
  17. package/dist/helpers/drag-drop/drag-drop-container.js +3 -3
  18. package/dist/helpers/drag-drop/drag-drop-container.js.map +1 -1
  19. package/dist/helpers/hooks.d.ts +19 -5
  20. package/dist/helpers/hooks.js +45 -4
  21. package/dist/helpers/hooks.js.map +1 -1
  22. package/dist/index.d.ts +2 -1
  23. package/dist/index.js +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/styles/styles.d.ts +5 -1
  26. package/dist/styles/styles.js +5 -2
  27. package/dist/styles/styles.js.map +1 -1
  28. package/package.json +4 -4
  29. package/src/controls/button.tsx +15 -10
  30. package/src/controls/divider.tsx +3 -3
  31. package/src/controls/horizontal.tsx +7 -1
  32. package/src/controls/menu.tsx +159 -0
  33. package/src/controls/prompt.tsx +33 -8
  34. package/src/controls/search.tsx +4 -3
  35. package/src/helpers/drag-drop/drag-drop-container.tsx +3 -3
  36. package/src/helpers/hooks.tsx +65 -5
  37. package/src/index.ts +2 -1
  38. package/src/styles/styles.ts +5 -2
@@ -1,4 +1,4 @@
1
- import { Link, Toast, ToastBody, Toaster, ToastFooter, ToastIntent, ToastTitle, useId, useToastController } from "@fluentui/react-components";
1
+ import { Label, Link, Toast, ToastBody, Toaster, ToastFooter, ToastIntent, ToastTitle, useId, useToastController } from "@fluentui/react-components";
2
2
  import { IDictionary, isDebug, isFunction, isNotEmptyArray, isNullOrEmptyString, jsonClone, jsonStringify, LoggerLevel, objectsEqual, wrapFunction } from "@kwiz/common";
3
3
  import { MutableRefObject, SetStateAction, useCallback, useEffect, useRef, useState } from "react";
4
4
  import { GetLogger } from "../_modules/config";
@@ -190,14 +190,20 @@ export function useIsInPrint() {
190
190
  }, useEffectOnlyOnMount);
191
191
  return printMode;
192
192
  }
193
+ export interface iBlockNav {
194
+ setMessage: (id: string, message?: string) => void;
195
+ onNav: (nav: () => void) => void;
196
+ navPrompt?: JSX.Element;
197
+
198
+ }
193
199
  /** set block message if you want to block nav.
194
200
  * - call setMessage to add a blocker message
195
201
  * - call onNav when you have internal navigation (open / close popups)
196
202
  * - render the navPrompt control to your page
197
203
  * FYI for page unload, most modern browsers won't show your message but a generic one instead. */
198
- export function useBlockNav() {
204
+ export function useBlockNav(): iBlockNav {
199
205
  const [, setBlockNavMessages, blockNavMessagesRef] = useStateEX<IDictionary<string>>({});
200
- const [prompt, setPrompt] = useStateEX<IPrompterProps>(null);
206
+ const [_prompt, setPrompt] = useStateEX<IPrompterProps>(null);
201
207
 
202
208
  const getMessagesArr = useCallback(() => {
203
209
  return Object.keys(blockNavMessagesRef.current).map(id => blockNavMessagesRef.current[id]);
@@ -265,7 +271,7 @@ export function useBlockNav() {
265
271
  // getMessages,
266
272
  // getMessagesArr,
267
273
  onNav,
268
- navPrompt: prompt ? <Prompter {...prompt} /> : undefined
274
+ navPrompt: _prompt ? <Prompter {..._prompt} /> : undefined
269
275
  };
270
276
  }
271
277
 
@@ -287,7 +293,7 @@ export function useKeyDown(options: {
287
293
  };
288
294
  elm.addEventListener("keydown", handler);
289
295
  return () => elm.removeEventListener("keydown", handler);
290
- }, [elm]);
296
+ }, [elm, options.onEnter, options.onEscape, options.onKeyDown]);
291
297
  }
292
298
 
293
299
 
@@ -333,4 +339,58 @@ export function useKWIZFluentContextProvider(options: {
333
339
  });
334
340
  }, [options.root]);
335
341
  return kwizFluentContext;
342
+ }
343
+
344
+ export interface iAlerts {
345
+ promptEX: (info: IPrompterProps) => void;
346
+ confirmEX: (message: string, onOK: () => void, onCancel?: () => void) => void;
347
+ alertEX: (message: string, onOK: () => void) => void;
348
+ alertPrompt?: JSX.Element;
349
+ }
350
+ /** set block message if you want to block nav.
351
+ * - call setMessage to add a blocker message
352
+ * - call onNav when you have internal navigation (open / close popups)
353
+ * - render the navPrompt control to your page
354
+ * FYI for page unload, most modern browsers won't show your message but a generic one instead. */
355
+ export function useAlerts(): iAlerts {
356
+ const [_prompt, _setPrompt] = useStateEX<IPrompterProps>(null);
357
+
358
+ const promptEX = useCallback((info: IPrompterProps) => {
359
+ //need to release react to re-render the prompt
360
+ window.setTimeout(() => {
361
+ //prompt, if ok - clear messages and nav.
362
+ _setPrompt({
363
+ ...info,
364
+ onCancel: () => {
365
+ _setPrompt(null);
366
+ if (isFunction(info.onCancel)) info.onCancel();
367
+ },
368
+ onOK: () => {
369
+ _setPrompt(null);
370
+ if (isFunction(info.onOK)) info.onOK();
371
+ }
372
+ });
373
+ }, 1);
374
+ }, useEffectOnlyOnMount);
375
+
376
+ const confirmEX = useCallback((message: string, onOK: () => void, onCancel?: () => void) => {
377
+ promptEX({
378
+ children: <Label>{message}</Label>,
379
+ onCancel,
380
+ onOK
381
+ });
382
+ }, useEffectOnlyOnMount);
383
+
384
+ const alertEX = useCallback((message: string, onOK: () => void) => {
385
+ promptEX({
386
+ children: <Label>{message}</Label>,
387
+ hideCancel: true,
388
+ onOK
389
+ });
390
+ }, useEffectOnlyOnMount);
391
+
392
+ return {
393
+ promptEX, confirmEX, alertEX,
394
+ alertPrompt: _prompt ? <Prompter {..._prompt} /> : undefined
395
+ };
336
396
  }
package/src/index.ts CHANGED
@@ -12,6 +12,7 @@ export * from './controls/input';
12
12
  export * from './controls/kwizoverflow';
13
13
  export * from './controls/list';
14
14
  export * from './controls/loading';
15
+ export * from './controls/menu';
15
16
  export * from './controls/please-wait';
16
17
  export * from './controls/prompt';
17
18
  export * from './controls/search';
@@ -24,5 +25,5 @@ export { KWIZFluentContext, useKWIZFluentContext } from './helpers/context';
24
25
  export type { iKWIZFluentContext } from './helpers/context';
25
26
  export * from './helpers/drag-drop/exports';
26
27
  export * from './helpers/hooks';
27
- export { KnownClassNames } from './styles/styles';
28
+ export { KnownClassNames, commonSizes } from './styles/styles';
28
29
 
@@ -89,5 +89,8 @@ export const useCommonStyles = makeStyles({
89
89
  },
90
90
  })
91
91
 
92
- export const widthMedium = 360;
93
- //export const widthWide = 520;
92
+ export const commonSizes = {
93
+ widthMedium: 360,
94
+ widthWide: 520,
95
+ extraWidthWide: 820,
96
+ }