@kwiz/fluentui 1.0.21 → 1.0.24

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.
Files changed (109) hide show
  1. package/.github/workflows/npm-publish.yml +4 -15
  2. package/dist/_modules/config.d.ts +1 -0
  3. package/dist/_modules/config.js +9 -0
  4. package/dist/_modules/config.js.map +1 -0
  5. package/dist/_modules/constants.d.ts +2 -0
  6. package/dist/_modules/constants.js +3 -0
  7. package/dist/_modules/constants.js.map +1 -0
  8. package/dist/controls/accordion.d.ts +13 -0
  9. package/dist/controls/accordion.js +27 -0
  10. package/dist/controls/accordion.js.map +1 -0
  11. package/dist/controls/button.d.ts +28 -0
  12. package/dist/controls/button.js +113 -0
  13. package/dist/controls/button.js.map +1 -0
  14. package/dist/controls/centered.d.ts +5 -0
  15. package/dist/controls/centered.js +14 -0
  16. package/dist/controls/centered.js.map +1 -0
  17. package/dist/controls/date.d.ts +8 -0
  18. package/dist/controls/date.js +32 -0
  19. package/dist/controls/date.js.map +1 -0
  20. package/dist/controls/dropdown.d.ts +36 -0
  21. package/dist/controls/dropdown.js +35 -0
  22. package/dist/controls/dropdown.js.map +1 -0
  23. package/dist/controls/error-boundary.d.ts +23 -0
  24. package/dist/controls/error-boundary.js +33 -0
  25. package/dist/controls/error-boundary.js.map +1 -0
  26. package/dist/controls/field-editor.d.ts +13 -0
  27. package/dist/controls/field-editor.js +15 -0
  28. package/dist/controls/field-editor.js.map +1 -0
  29. package/dist/controls/file-upload.d.ts +18 -0
  30. package/dist/controls/file-upload.js +41 -0
  31. package/dist/controls/file-upload.js.map +1 -0
  32. package/dist/controls/horizontal.d.ts +8 -0
  33. package/dist/controls/horizontal.js +23 -0
  34. package/dist/controls/horizontal.js.map +1 -0
  35. package/dist/controls/input.d.ts +13 -0
  36. package/dist/controls/input.js +43 -0
  37. package/dist/controls/input.js.map +1 -0
  38. package/dist/controls/kwizoverflow.d.ts +14 -0
  39. package/dist/controls/kwizoverflow.js +45 -0
  40. package/dist/controls/kwizoverflow.js.map +1 -0
  41. package/dist/controls/list.d.ts +21 -0
  42. package/dist/controls/list.js +72 -0
  43. package/dist/controls/list.js.map +1 -0
  44. package/dist/controls/loading.d.ts +5 -0
  45. package/dist/controls/loading.js +7 -0
  46. package/dist/controls/loading.js.map +1 -0
  47. package/dist/controls/please-wait.d.ts +18 -0
  48. package/dist/controls/please-wait.js +16 -0
  49. package/dist/controls/please-wait.js.map +1 -0
  50. package/dist/controls/prompt.d.ts +32 -0
  51. package/dist/controls/prompt.js +31 -0
  52. package/dist/controls/prompt.js.map +1 -0
  53. package/dist/controls/search.d.ts +13 -0
  54. package/dist/controls/search.js +47 -0
  55. package/dist/controls/search.js.map +1 -0
  56. package/dist/controls/section.d.ts +14 -0
  57. package/dist/controls/section.js +27 -0
  58. package/dist/controls/section.js.map +1 -0
  59. package/dist/controls/svg.d.ts +23 -0
  60. package/dist/controls/svg.js +45 -0
  61. package/dist/controls/svg.js.map +1 -0
  62. package/dist/controls/toolbar.d.ts +12 -0
  63. package/dist/controls/toolbar.js +23 -0
  64. package/dist/controls/toolbar.js.map +1 -0
  65. package/dist/controls/vertical-content.d.ts +6 -0
  66. package/dist/controls/vertical-content.js +37 -0
  67. package/dist/controls/vertical-content.js.map +1 -0
  68. package/dist/controls/vertical.d.ts +8 -0
  69. package/dist/controls/vertical.js +23 -0
  70. package/dist/controls/vertical.js.map +1 -0
  71. package/dist/helpers/context.d.ts +26 -0
  72. package/dist/helpers/context.js +15 -0
  73. package/dist/helpers/context.js.map +1 -0
  74. package/dist/helpers/drag-drop/drag-drop-container.d.ts +15 -0
  75. package/dist/helpers/drag-drop/drag-drop-container.js +13 -0
  76. package/dist/helpers/drag-drop/drag-drop-container.js.map +1 -0
  77. package/dist/helpers/drag-drop/drag-drop-context.d.ts +30 -0
  78. package/dist/helpers/drag-drop/drag-drop-context.js +47 -0
  79. package/dist/helpers/drag-drop/drag-drop-context.js.map +1 -0
  80. package/dist/helpers/drag-drop/exports.d.ts +4 -0
  81. package/dist/helpers/drag-drop/exports.js +3 -0
  82. package/dist/helpers/drag-drop/exports.js.map +1 -0
  83. package/dist/helpers/drag-drop/use-draggable.d.ts +13 -0
  84. package/dist/helpers/drag-drop/use-draggable.js +33 -0
  85. package/dist/helpers/drag-drop/use-draggable.js.map +1 -0
  86. package/dist/helpers/drag-drop/use-droppable.d.ts +14 -0
  87. package/dist/helpers/drag-drop/use-droppable.js +28 -0
  88. package/dist/helpers/drag-drop/use-droppable.js.map +1 -0
  89. package/dist/helpers/hooks.d.ts +62 -0
  90. package/dist/helpers/hooks.js +287 -0
  91. package/dist/helpers/hooks.js.map +1 -0
  92. package/dist/index.d.ts +26 -0
  93. package/dist/index.js +26 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/styles/styles.d.ts +19 -0
  96. package/dist/styles/styles.js +79 -0
  97. package/dist/styles/styles.js.map +1 -0
  98. package/dist/styles/theme.d.ts +6 -0
  99. package/dist/styles/theme.js +77 -0
  100. package/dist/styles/theme.js.map +1 -0
  101. package/package.json +3 -1
  102. package/src/controls/dropdown.tsx +33 -28
  103. package/src/helpers/drag-drop/drag-drop-container.tsx +47 -0
  104. package/src/helpers/drag-drop/drag-drop-context.tsx +67 -0
  105. package/src/helpers/drag-drop/exports.ts +4 -0
  106. package/src/helpers/drag-drop/readme.md +76 -0
  107. package/src/helpers/drag-drop/use-draggable.ts +56 -0
  108. package/src/helpers/drag-drop/use-droppable.ts +48 -0
  109. package/src/index.ts +1 -0
@@ -0,0 +1,287 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link, Toast, ToastBody, Toaster, ToastFooter, ToastTitle, useId, useToastController } from "@fluentui/react-components";
3
+ import { isDebug, isFunction, isNotEmptyArray, isNullOrEmptyString, jsonClone, jsonStringify, LoggerLevel, objectsEqual, wrapFunction } from "@kwiz/common";
4
+ import { useCallback, useEffect, useRef, useState } from "react";
5
+ import { GetLogger } from "../_modules/config";
6
+ import { Prompter } from "../controls/prompt";
7
+ import { KnownClassNames } from "../styles/styles";
8
+ import { useKWIZFluentContext } from "./context";
9
+ const logger = GetLogger("helpers/hooks");
10
+ /** Empty array ensures that effect is only run on mount */
11
+ export const useEffectOnlyOnMount = [];
12
+ /** set state on steroids. provide promise callback after render, onChange transformer and automatic skip-set when value not changed */
13
+ export function useStateEX(initialValue, options) {
14
+ options = options || {};
15
+ const name = options.name || '';
16
+ let logger = GetLogger(`useStateWithTrack${isNullOrEmptyString(name) ? '' : ` ${name}`}`);
17
+ logger.setLevel(LoggerLevel.WARN);
18
+ const [value, setValueInState] = useState(initialValue);
19
+ const currentValue = useRef(value);
20
+ /** make this a collection in case several callers are awaiting the same propr update */
21
+ const resolveState = useRef([]);
22
+ const isMounted = useRef(false);
23
+ useEffect(() => {
24
+ isMounted.current = true;
25
+ return () => {
26
+ isMounted.current = false;
27
+ };
28
+ }, useEffectOnlyOnMount);
29
+ function resolvePromises() {
30
+ if (isNotEmptyArray(resolveState.current)) {
31
+ let resolvers = resolveState.current.slice();
32
+ resolveState.current = []; //clear
33
+ resolvers.map(r => r(currentValue.current));
34
+ }
35
+ }
36
+ ;
37
+ useEffect(() => {
38
+ resolvePromises();
39
+ if (isNotEmptyArray(resolveState.current)) {
40
+ logger.log(`resolved after render`);
41
+ let resolvers = resolveState.current.slice();
42
+ resolveState.current = []; //clear
43
+ resolvers.map(r => r(value));
44
+ }
45
+ }, [value, resolveState.current]);
46
+ let setValueWithCheck = !options.skipUpdateIfSame ? setValueInState : (newValue) => {
47
+ logger.groupSync('conditional value change', log => {
48
+ if (logger.getLevel() === LoggerLevel.VERBOSE) {
49
+ log('old: ' + jsonStringify(currentValue.current));
50
+ log('new: ' + jsonStringify(newValue));
51
+ }
52
+ if (!objectsEqual(newValue, currentValue.current)) {
53
+ log(`value changed`);
54
+ setValueInState(newValue);
55
+ }
56
+ else {
57
+ log(`value unchanged`);
58
+ resolvePromises();
59
+ }
60
+ });
61
+ };
62
+ let setValueWithEvents = wrapFunction(setValueWithCheck, {
63
+ before: newValue => isFunction(options.onChange) ? options.onChange(newValue) : newValue,
64
+ after: newValue => currentValue.current = newValue
65
+ });
66
+ const setValue = useCallback((newState) => new Promise(resolve => {
67
+ if (!isMounted.current) {
68
+ //unmounted may never resolve
69
+ logger.log(`resolved without wait`);
70
+ resolve(newState);
71
+ }
72
+ else {
73
+ resolveState.current.push(resolve);
74
+ setValueWithEvents(newState);
75
+ }
76
+ }), []);
77
+ return [value, setValue, currentValue];
78
+ }
79
+ export function useTrackFocus(props) {
80
+ const wrapperDiv = props.ref || useRef(null);
81
+ useEffect(() => {
82
+ function focusIn(e) {
83
+ let elm = e.target; //document.activeElement;
84
+ if (wrapperDiv.current) {
85
+ while (elm && elm !== wrapperDiv.current) {
86
+ elm = elm.parentElement;
87
+ }
88
+ }
89
+ else
90
+ elm = null;
91
+ if (wrapperDiv.current && elm === wrapperDiv.current)
92
+ props.onFocus();
93
+ else
94
+ props.onLoseFocus();
95
+ }
96
+ if (wrapperDiv.current) {
97
+ if (wrapperDiv.current)
98
+ wrapperDiv.current.tabIndex = 1;
99
+ window.addEventListener("focusin", focusIn);
100
+ // Remove event listener on cleanup
101
+ return () => window.removeEventListener("focusin", focusIn);
102
+ }
103
+ }, [wrapperDiv.current]);
104
+ return wrapperDiv;
105
+ }
106
+ export function useWindowSize() {
107
+ // Initialize state with undefined width/height so server and client renders match
108
+ // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/
109
+ const [windowSize, setWindowSize] = useState({
110
+ width: undefined,
111
+ height: undefined
112
+ });
113
+ useEffect(() => {
114
+ // Handler to call on window resize
115
+ function handleResize() {
116
+ // Set window width/height to state
117
+ setWindowSize({
118
+ width: window.innerWidth,
119
+ height: window.innerHeight
120
+ });
121
+ }
122
+ // Add event listener
123
+ window.addEventListener("resize", handleResize);
124
+ // Call handler right away so state gets updated with initial window size
125
+ handleResize();
126
+ // Remove event listener on cleanup
127
+ return () => window.removeEventListener("resize", handleResize);
128
+ }, useEffectOnlyOnMount);
129
+ return windowSize;
130
+ }
131
+ export function useIsInPrint() {
132
+ // Initialize state with false
133
+ const [printMode, setPrintMode] = useState(false);
134
+ useEffect(() => {
135
+ function forcePrint(e) {
136
+ if (e.ctrlKey && e.shiftKey && e.altKey) {
137
+ if (e.key.toLocaleLowerCase() === "q") {
138
+ document.body.classList.remove(KnownClassNames.print);
139
+ handlePrint(e, false);
140
+ }
141
+ else {
142
+ console.warn('forced print mode - to exit refresh to ctrl+shift+alt+q');
143
+ document.body.classList.add(KnownClassNames.print);
144
+ handlePrint(e, true);
145
+ }
146
+ }
147
+ }
148
+ // Handler to call on printing
149
+ function handlePrint(e, force) {
150
+ if (force === true)
151
+ setPrintMode(true);
152
+ else if (window.matchMedia) {
153
+ var mediaQueryList = window.matchMedia('print');
154
+ if (mediaQueryList.matches) {
155
+ setPrintMode(true);
156
+ }
157
+ else {
158
+ setPrintMode(false);
159
+ }
160
+ }
161
+ }
162
+ // Add event listener
163
+ window.addEventListener("print", handlePrint);
164
+ if (isDebug())
165
+ window.addEventListener("keydown", forcePrint);
166
+ // Call handler right away so state gets updated with initial printing state
167
+ handlePrint();
168
+ // Remove event listener on cleanup
169
+ return () => {
170
+ window.removeEventListener("print", handlePrint);
171
+ if (isDebug())
172
+ window.removeEventListener("keydown", forcePrint);
173
+ };
174
+ }, useEffectOnlyOnMount);
175
+ return printMode;
176
+ }
177
+ /** set block message if you want to block nav.
178
+ * - call setMessage to add a blocker message
179
+ * - call onNav when you have internal navigation (open / close popups)
180
+ * - render the navPrompt control to your page
181
+ * FYI for page unload, most modern browsers won't show your message but a generic one instead. */
182
+ export function useBlockNav() {
183
+ const [, setBlockNavMessages, blockNavMessagesRef] = useStateEX({});
184
+ const [prompt, setPrompt] = useStateEX(null);
185
+ const getMessagesArr = useCallback(() => {
186
+ return Object.keys(blockNavMessagesRef.current).map(id => blockNavMessagesRef.current[id]);
187
+ }, useEffectOnlyOnMount);
188
+ const getMessages = useCallback(() => {
189
+ return getMessagesArr().join();
190
+ }, useEffectOnlyOnMount);
191
+ const onNav = useCallback((nav) => {
192
+ let messages = getMessagesArr();
193
+ if (isNotEmptyArray(messages)) {
194
+ //need to release react to re-render the prompt
195
+ window.setTimeout(() => {
196
+ //prompt, if ok - clear messages and nav.
197
+ setPrompt({
198
+ okButtonText: "Leave",
199
+ cancelButtonText: "Cancel",
200
+ title: "Leave page?",
201
+ children: messages.length > 1
202
+ ? _jsx("ul", { children: messages.map((m, i) => _jsx("li", { children: m }, `m${i}`)) })
203
+ : _jsx("p", { children: messages[0] }),
204
+ onCancel: () => setPrompt(null),
205
+ onOK: () => {
206
+ setPrompt(null);
207
+ setBlockNavMessages({}); //clear messages
208
+ nav();
209
+ }
210
+ });
211
+ }, 1);
212
+ }
213
+ else
214
+ nav();
215
+ }, useEffectOnlyOnMount);
216
+ useEffect(() => {
217
+ function handleBeforeUnload(e) {
218
+ //todo: use blockMessageRef.current so that we don't have to re-register every time message changes.
219
+ //otherwise we would have to add blockMessage as a dependency for this useEffect
220
+ const message = getMessages();
221
+ if (!isNullOrEmptyString(message)) {
222
+ e.preventDefault();
223
+ e.returnValue = message;
224
+ }
225
+ }
226
+ // Add event listener
227
+ window.addEventListener("beforeunload", handleBeforeUnload);
228
+ // Remove event listener on cleanup
229
+ return () => window.removeEventListener("beforeunload", handleBeforeUnload);
230
+ }, useEffectOnlyOnMount);
231
+ return {
232
+ setMessage: (id, message) => {
233
+ let current = jsonClone(blockNavMessagesRef.current);
234
+ if (isNullOrEmptyString(message))
235
+ delete current[id];
236
+ else
237
+ current[id] = message;
238
+ if (!objectsEqual(current, blockNavMessagesRef.current))
239
+ setBlockNavMessages(current);
240
+ },
241
+ // clearMessages: () => {
242
+ // setBlockNavMessages({});
243
+ // },
244
+ // getMessages,
245
+ // getMessagesArr,
246
+ onNav,
247
+ navPrompt: prompt ? _jsx(Prompter, Object.assign({}, prompt)) : undefined
248
+ };
249
+ }
250
+ export function useKeyDown(options) {
251
+ let elm = options.elm || document;
252
+ useEffect(() => {
253
+ let handler = (e) => {
254
+ if (e.key === "Enter" && isFunction(options.onEnter))
255
+ options.onEnter(e);
256
+ else if (e.key === "Escape" && isFunction(options.onEscape))
257
+ options.onEscape(e);
258
+ if (isFunction(options.onKeyDown))
259
+ options.onKeyDown(e);
260
+ };
261
+ elm.addEventListener("keydown", handler);
262
+ return () => elm.removeEventListener("keydown", handler);
263
+ }, [elm]);
264
+ }
265
+ export function useToast() {
266
+ const ctx = useKWIZFluentContext();
267
+ const toasterId = useId("toaster");
268
+ const { dispatchToast } = useToastController(toasterId);
269
+ return {
270
+ control: _jsx(Toaster, { mountNode: ctx.mountNode, toasterId: toasterId }),
271
+ dispatch: (info) => {
272
+ dispatchToast(_jsxs(Toast, { children: [info.title && _jsx(ToastTitle, { action: info.titleAction ? _jsx(Link, { onClick: info.titleAction.onClick, children: info.titleAction.text }) : undefined, children: info.title }), info.body && _jsx(ToastBody, { subtitle: info.subtitle, children: info.body }), isNotEmptyArray(info.footerActions) &&
273
+ _jsx(ToastFooter, { children: info.footerActions.map((a, i) => _jsx(Link, { onClick: a.onClick, children: a.text }, `l${i}`)) })] }), { intent: info.intent || "info" });
274
+ }
275
+ };
276
+ }
277
+ export function useKWIZFluentContextProvider(options) {
278
+ let v = options && options.ctx || {};
279
+ const [kwizFluentContext, setKwizFluentContext] = useState(v);
280
+ useEffect(() => {
281
+ // ref only updates in useEffect, not in useMemo or anything else.
282
+ // we need to set it into state so it will trigger a ui update
283
+ setKwizFluentContext(Object.assign(Object.assign({}, v), { mountNode: options.root.current }));
284
+ }, [options.root]);
285
+ return kwizFluentContext;
286
+ }
287
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/helpers/hooks.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export * from './controls/accordion';
2
+ export * from './controls/button';
3
+ export * from './controls/centered';
4
+ export * from './controls/date';
5
+ export * from './controls/dropdown';
6
+ export * from './controls/error-boundary';
7
+ export * from './controls/field-editor';
8
+ export * from './controls/file-upload';
9
+ export * from './controls/horizontal';
10
+ export * from './controls/input';
11
+ export * from './controls/kwizoverflow';
12
+ export * from './controls/list';
13
+ export * from './controls/loading';
14
+ export * from './controls/please-wait';
15
+ export * from './controls/prompt';
16
+ export * from './controls/search';
17
+ export * from './controls/section';
18
+ export * from './controls/svg';
19
+ export * from './controls/toolbar';
20
+ export * from './controls/vertical';
21
+ export * from './controls/vertical-content';
22
+ export { KWIZFluentContext, useKWIZFluentContext } from './helpers/context';
23
+ export type { iKWIZFluentContext } from './helpers/context';
24
+ export * from './helpers/drag-drop/exports';
25
+ export * from './helpers/hooks';
26
+ export { KnownClassNames } from './styles/styles';
package/dist/index.js ADDED
@@ -0,0 +1,26 @@
1
+ export * from './controls/accordion';
2
+ export * from './controls/button';
3
+ export * from './controls/centered';
4
+ export * from './controls/date';
5
+ export * from './controls/dropdown';
6
+ export * from './controls/error-boundary';
7
+ export * from './controls/field-editor';
8
+ export * from './controls/file-upload';
9
+ export * from './controls/horizontal';
10
+ export * from './controls/input';
11
+ export * from './controls/kwizoverflow';
12
+ export * from './controls/list';
13
+ export * from './controls/loading';
14
+ export * from './controls/please-wait';
15
+ export * from './controls/prompt';
16
+ export * from './controls/search';
17
+ export * from './controls/section';
18
+ export * from './controls/svg';
19
+ export * from './controls/toolbar';
20
+ export * from './controls/vertical';
21
+ export * from './controls/vertical-content';
22
+ export { KWIZFluentContext, useKWIZFluentContext } from './helpers/context';
23
+ export * from './helpers/drag-drop/exports';
24
+ export * from './helpers/hooks';
25
+ export { KnownClassNames } from './styles/styles';
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { GriffelStyle } from "@fluentui/react-components";
2
+ export declare namespace mixins {
3
+ const main: GriffelStyle;
4
+ const clickable: GriffelStyle;
5
+ const float: GriffelStyle;
6
+ const flex: GriffelStyle;
7
+ const wrap: GriffelStyle;
8
+ const nogap: GriffelStyle;
9
+ const ellipsis: GriffelStyle;
10
+ }
11
+ export declare const KnownClassNames: {
12
+ print: string;
13
+ section: string;
14
+ vertical: string;
15
+ horizontal: string;
16
+ list: string;
17
+ };
18
+ export declare const useCommonStyles: () => Record<"printShow" | "printHide", string>;
19
+ export declare const widthMedium = 360;
@@ -0,0 +1,79 @@
1
+ import { makeStyles, tokens } from "@fluentui/react-components";
2
+ export var mixins;
3
+ (function (mixins) {
4
+ mixins.main = {
5
+ flexShrink: 1,
6
+ flexGrow: 1
7
+ };
8
+ mixins.clickable = {
9
+ cursor: "pointer",
10
+ ['& label']: {
11
+ cursor: "pointer"
12
+ }
13
+ };
14
+ const box = {
15
+ padding: tokens.spacingHorizontalM,
16
+ borderRadius: tokens.borderRadiusMedium,
17
+ boxShadow: tokens.shadow4,
18
+ margin: tokens.spacingHorizontalXXS
19
+ };
20
+ mixins.float = Object.assign(Object.assign({}, box), {
21
+ /** make buttons work */
22
+ position: "relative",
23
+ /** make buttons work */
24
+ maxWidth: "33%",
25
+ /** stop bleeding into page */
26
+ overflowX: "hidden", ['& img']: {
27
+ maxWidth: "100%"
28
+ } });
29
+ mixins.flex = {
30
+ display: 'flex',
31
+ flexWrap: 'nowrap',
32
+ rowGap: tokens.spacingVerticalM,
33
+ columnGap: tokens.spacingVerticalM,
34
+ };
35
+ mixins.wrap = {
36
+ flexWrap: "wrap"
37
+ };
38
+ mixins.nogap = {
39
+ rowGap: 0,
40
+ columnGap: 0
41
+ };
42
+ mixins.ellipsis = {
43
+ whiteSpace: 'nowrap',
44
+ display: 'block',
45
+ overflow: 'hidden',
46
+ textOverflow: 'ellipsis'
47
+ };
48
+ // export const box: GriffelStyle = {
49
+ // }
50
+ })(mixins || (mixins = {}));
51
+ export const KnownClassNames = {
52
+ print: 'print-root',
53
+ section: 'kfui-section',
54
+ vertical: 'kfui-vertical',
55
+ horizontal: 'kfui-horizontal',
56
+ list: 'kfui-list'
57
+ };
58
+ export const useCommonStyles = makeStyles({
59
+ printShow: {
60
+ display: 'none',
61
+ [`:global(body.${KnownClassNames.print})`]: {
62
+ display: 'unset',
63
+ },
64
+ '@media print': {
65
+ display: 'unset',
66
+ }
67
+ },
68
+ printHide: {
69
+ [`:global(body.${KnownClassNames.print})`]: {
70
+ display: 'none !important'
71
+ },
72
+ '@media print': {
73
+ display: 'none !important'
74
+ }
75
+ },
76
+ });
77
+ export const widthMedium = 360;
78
+ //export const widthWide = 520;
79
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/styles/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,UAAU,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAE9E,MAAM,KAAQ,MAAM,CAsDnB;AAtDD,WAAc,MAAM;IACH,WAAI,GAAiB;QAC9B,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC;KACd,CAAC;IACW,gBAAS,GAAiB;QACnC,MAAM,EAAE,SAAS;QACjB,CAAC,SAAS,CAAC,EAAE;YACT,MAAM,EAAE,SAAS;SACpB;KACJ,CAAA;IACD,MAAM,GAAG,GAAiB;QACtB,OAAO,EAAE,MAAM,CAAC,kBAAkB;QAClC,YAAY,EAAE,MAAM,CAAC,kBAAkB;QACvC,SAAS,EAAE,MAAM,CAAC,OAAO;QACzB,MAAM,EAAE,MAAM,CAAC,oBAAoB;KACtC,CAAA;IACY,YAAK,mCACX,GAAG;QACN,wBAAwB;QACxB,QAAQ,EAAE,UAAU;QACpB,wBAAwB;QACxB,QAAQ,EAAE,KAAK;QACf,8BAA8B;QAC9B,SAAS,EAAE,QAAQ,EAEnB,CAAC,OAAO,CAAC,EAAE;YACP,QAAQ,EAAE,MAAM;SACnB,GACJ,CAAA;IAEY,WAAI,GAAiB;QAC9B,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,MAAM,CAAC,gBAAgB;QAC/B,SAAS,EAAE,MAAM,CAAC,gBAAgB;KACrC,CAAA;IAEY,WAAI,GAAiB;QAC9B,QAAQ,EAAE,MAAM;KACnB,CAAA;IACY,YAAK,GAAiB;QAC/B,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;KACf,CAAA;IACY,eAAQ,GAAiB;QAClC,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,UAAU;KAC3B,CAAA;IAED,qCAAqC;IACrC,IAAI;AACR,CAAC,EAtDa,MAAM,KAAN,MAAM,QAsDnB;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,iBAAiB;IAC7B,IAAI,EAAE,WAAW;CACpB,CAAA;AACD,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACtC,SAAS,EAAE;QACP,OAAO,EAAE,MAAM;QACf,CAAC,gBAAgB,eAAe,CAAC,KAAK,GAAG,CAAC,EAAE;YACxC,OAAO,EAAE,OAAO;SACnB;QACD,cAAc,EAAE;YACZ,OAAO,EAAE,OAAO;SACnB;KACJ;IACD,SAAS,EAAE;QACP,CAAC,gBAAgB,eAAe,CAAC,KAAK,GAAG,CAAC,EAAE;YACxC,OAAO,EAAE,iBAAiB;SAC7B;QACD,cAAc,EAAE;YACZ,OAAO,EAAE,iBAAiB;SAC7B;KACJ;CACJ,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAC/B,+BAA+B"}
@@ -0,0 +1,6 @@
1
+ import { BrandVariants, Theme } from "@fluentui/react-components";
2
+ export interface iThemeContext {
3
+ teams?: boolean;
4
+ dark?: boolean;
5
+ }
6
+ export declare function getTheme(ctx: iThemeContext, t?: BrandVariants): Theme;
@@ -0,0 +1,77 @@
1
+ import { createDarkTheme, createLightTheme, teamsDarkTheme, teamsLightTheme } from "@fluentui/react-components";
2
+ export function getTheme(ctx, t = kThemeDefault) {
3
+ return ctx.dark
4
+ ? getDarkTheme(ctx, t)
5
+ : getLightTheme(ctx, t);
6
+ }
7
+ const kThemeDefault = {
8
+ 10: "#04010A",
9
+ 20: "#16103B",
10
+ 30: "#17176F",
11
+ 40: "#0F1D9A",
12
+ 50: "#2F2AA1",
13
+ 60: "#4338A8",
14
+ 70: "#5546AF",
15
+ 80: "#6555B6",
16
+ 90: "#7563BD",
17
+ 100: "#8472C4",
18
+ 110: "#9282CB",
19
+ 120: "#A191D2",
20
+ 130: "#AFA1D9",
21
+ 140: "#BDB1E0",
22
+ 150: "#CBC1E7",
23
+ 160: "#D9D2EE"
24
+ };
25
+ const kThemeOrange = {
26
+ 10: "#040301",
27
+ 20: "#1E170A",
28
+ 30: "#312610",
29
+ 40: "#403112",
30
+ 50: "#503D14",
31
+ 60: "#604915",
32
+ 70: "#705516",
33
+ 80: "#816216",
34
+ 90: "#926E16",
35
+ 100: "#A37B15",
36
+ 110: "#B58914",
37
+ 120: "#C79612",
38
+ 130: "#DAA40E",
39
+ 140: "#EDB208",
40
+ 150: "#FFC001",
41
+ 160: "#FFD47F"
42
+ };
43
+ const kThemeSecondary = {
44
+ 10: "#020304",
45
+ 20: "#101A1D",
46
+ 30: "#162B32",
47
+ 40: "#1A3742",
48
+ 50: "#1D4552",
49
+ 60: "#1F5363",
50
+ 70: "#216175",
51
+ 80: "#227087",
52
+ 90: "#227F9A",
53
+ 100: "#208EAD",
54
+ 110: "#1E9EC0",
55
+ 120: "#1AADD4",
56
+ 130: "#12BEE8",
57
+ 140: "#02CEFD",
58
+ 150: "#6BDAFF",
59
+ 160: "#A0E5FF"
60
+ };
61
+ function getLightTheme(ctx, t = kThemeDefault) {
62
+ if (ctx.teams)
63
+ return teamsLightTheme;
64
+ //return jsonClone(webLightTheme);
65
+ const lightTheme = Object.assign({}, createLightTheme(t));
66
+ return lightTheme;
67
+ }
68
+ function getDarkTheme(ctx, t = kThemeDefault) {
69
+ if (ctx.teams)
70
+ return teamsDarkTheme;
71
+ //return jsonClone(webDarkTheme);
72
+ const darkTheme = Object.assign({}, createDarkTheme(t));
73
+ darkTheme.colorBrandForeground1 = t[110];
74
+ darkTheme.colorBrandForeground2 = t[120];
75
+ return darkTheme;
76
+ }
77
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/styles/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAOtI,MAAM,UAAU,QAAQ,CAAC,GAAkB,EAAE,IAAmB,aAAa;IACzE,OAAO,GAAG,CAAC,IAAI;QACX,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC,CAAC;AAGD,MAAM,aAAa,GAAkB;IACjC,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,YAAY,GAAkB;IAChC,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,eAAe,GAAkB;IACnC,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;CACjB,CAAC;AAEF,SAAS,aAAa,CAAC,GAAkB,EAAE,IAAmB,aAAa;IACvE,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,eAAe,CAAC;IACtC,kCAAkC;IAClC,MAAM,UAAU,qBACT,gBAAgB,CAAC,CAAC,CAAC,CACzB,CAAC;IACF,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,YAAY,CAAC,GAAkB,EAAE,IAAmB,aAAa;IACtE,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,cAAc,CAAC;IACrC,iCAAiC;IACjC,MAAM,SAAS,qBACR,eAAe,CAAC,CAAC,CAAC,CACxB,CAAC;IAEF,SAAS,CAAC,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,SAAS,CAAC,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,SAAS,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kwiz/fluentui",
3
- "version": "1.0.21",
3
+ "version": "1.0.24",
4
4
  "description": "KWIZ common controls for FluentUI",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -59,6 +59,8 @@
59
59
  "@kwiz/common": "^1.0.58",
60
60
  "esbuild": "^0.19.12",
61
61
  "get-tsconfig": "^4.7.2",
62
+ "react-dnd": "^16.0.1",
63
+ "react-dnd-html5-backend": "^16.0.1",
62
64
  "resolve-pkg-maps": "^1.0.0"
63
65
  },
64
66
  "peerDependencies": {
@@ -20,34 +20,39 @@ interface IProps<dataType, keyType extends string = string> extends ForwardProps
20
20
  options?: { key: keyType, value: string, data?: dataType }[]) => void;
21
21
  }
22
22
 
23
- /** issue: figure out how to use forward ref with typed controls */
24
- export function DropdownEXTypedNoForwardRef<keyType extends string = string, dataType = never>(props: IProps<dataType, keyType>, ref: React.ForwardedRef<HTMLButtonElement>) {
25
- const ctx = useKWIZFluentContext();
26
- const selected: keyType[] = Array.isArray(props.selected) ? props.selected : isNullOrUndefined(props.selected) ? [] : [props.selected];
23
+ /** get a DropdownEX typed with forward ref. Usage:
24
+ * const MyDropdownEX = DropdownEX3<myKeyType, myDataType>();
25
+ * ...
26
+ * <MyDropdownEX ... />
27
+ */
28
+ export function getDropdownEX<keyType extends string = string, dataType = never>() {
29
+ return React.forwardRef<HTMLButtonElement, (IProps<dataType, keyType>)>((props, ref) => {
30
+ const ctx = useKWIZFluentContext();
31
+ const selected: keyType[] = Array.isArray(props.selected) ? props.selected : isNullOrUndefined(props.selected) ? [] : [props.selected];
27
32
 
28
- //sometimes control will lose value when re-rendered
29
- //use case: public forms when editing other fields after the dropdown was set
30
- //re-set the text value manually to fix
31
- let text = filterEmptyEntries((Array.isArray(props.selected) ? props.selected : [props.selected]).map(s => {
32
- let v = firstOrNull(props.items, i => i.key === s);
33
- return v ? v.value : ''
34
- })).join(', ');
33
+ //sometimes control will lose value when re-rendered
34
+ //use case: public forms when editing other fields after the dropdown was set
35
+ //re-set the text value manually to fix
36
+ let text = filterEmptyEntries((Array.isArray(props.selected) ? props.selected : [props.selected]).map(s => {
37
+ let v = firstOrNull(props.items, i => i.key === s);
38
+ return v ? v.value : ''
39
+ })).join(', ');
35
40
 
36
- return (
37
- <Dropdown {...{ ...props, onSelect: undefined }} ref={ref} clearable={!props.required && !props.multiselect}
38
- appearance={ctx.inputAppearance} mountNode={ctx.mountNode}
39
- selectedOptions={selected} value={text} onOptionSelect={(e, data) => {
40
- let o = firstOrNull(props.items, i => i.key === data.optionValue);
41
- if (props.multiselect) {
42
- let current = data.selectedOptions.map(s => firstOrNull(props.items, i => i.key === s));
43
- props.onSelect(o, current);
44
- }
45
- else props.onSelect(o);
46
- }}>
47
- {props.items.map(i => <Option key={i.key} value={i.key} text={i.value}>{i.option ? i.option : i.value}</Option>)}
48
- </Dropdown>
49
-
50
- );
41
+ return (
42
+ <Dropdown {...{ ...props, onSelect: undefined }} ref={ref} clearable={!props.required && !props.multiselect}
43
+ appearance={ctx.inputAppearance} mountNode={ctx.mountNode}
44
+ selectedOptions={selected} value={text} onOptionSelect={(e, data) => {
45
+ let o = firstOrNull(props.items, i => i.key === data.optionValue);
46
+ if (props.multiselect) {
47
+ let current = data.selectedOptions.map(s => firstOrNull(props.items, i => i.key === s));
48
+ props.onSelect(o, current);
49
+ }
50
+ else props.onSelect(o);
51
+ }}>
52
+ {props.items.map(i => <Option key={i.key} value={i.key} text={i.value}>{i.option ? i.option : i.value}</Option>)}
53
+ </Dropdown>
54
+ );
55
+ });
51
56
  }
52
-
53
- export const DropdownEX = React.forwardRef(DropdownEXTypedNoForwardRef);
57
+ /** to get typed keys use getDropdownEX */
58
+ export const DropdownEX = getDropdownEX();