@kwiz/fluentui 1.0.21 → 1.0.24

Sign up to get free protection for your applications and to get access to all the features.
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();