@mittwald/flow-react-components 0.2.0-alpha.339 → 0.2.0-alpha.340
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 +6 -0
- package/dist/assets/doc-properties.json +1677 -1677
- package/dist/js/components/src/components/Autocomplete/Autocomplete.mjs +7 -3
- package/dist/js/components/src/components/Autocomplete/Autocomplete.mjs.map +1 -1
- package/dist/types/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -9,7 +9,7 @@ import * as Aria from 'react-aria-components';
|
|
|
9
9
|
import 'mobx';
|
|
10
10
|
import { useOverlayController } from '../../lib/controller/overlay/useOverlayController.mjs';
|
|
11
11
|
import { flowComponent } from '../../lib/componentFactory/flowComponent.mjs';
|
|
12
|
-
import { useLocalizedStringFormatter } from 'react-aria';
|
|
12
|
+
import { useLocalizedStringFormatter, useFocusWithin, UNSAFE_PortalProvider } from 'react-aria';
|
|
13
13
|
import styles from './Autocomplete.module.scss.mjs';
|
|
14
14
|
import locales from '../../../../_virtual/_.locale.json@48bdcfec6dd32df5dc9f6fa222d33240.mjs';
|
|
15
15
|
import { Text } from '../Text/Text.mjs';
|
|
@@ -19,9 +19,13 @@ const Autocomplete = flowComponent("Autocomplete", (props) => {
|
|
|
19
19
|
const stringFormatter = useLocalizedStringFormatter(locales);
|
|
20
20
|
const { contains } = Aria.useFilter({ sensitivity: "base" });
|
|
21
21
|
const triggerRef = useRef(null);
|
|
22
|
+
const container = useRef(null);
|
|
22
23
|
const controller = useOverlayController("ContextMenu", {
|
|
23
24
|
reuseControllerFromContext: false
|
|
24
25
|
});
|
|
26
|
+
const focusWithin = useFocusWithin({
|
|
27
|
+
onBlurWithin: controller.close
|
|
28
|
+
});
|
|
25
29
|
const menuIsOpen = controller.useIsOpen();
|
|
26
30
|
const inputProps = {
|
|
27
31
|
onKeyDown: (e) => {
|
|
@@ -67,7 +71,7 @@ const Autocomplete = flowComponent("Autocomplete", (props) => {
|
|
|
67
71
|
props: propsContext,
|
|
68
72
|
mergeInParentContext: true,
|
|
69
73
|
dependencies: [menuIsOpen, controller],
|
|
70
|
-
children: /* @__PURE__ */ jsx(
|
|
74
|
+
children: /* @__PURE__ */ jsx("div", { ...focusWithin.focusWithinProps, ref: container, children: /* @__PURE__ */ jsx(UNSAFE_PortalProvider, { getContainer: () => container.current, children: /* @__PURE__ */ jsx(
|
|
71
75
|
Aria.Autocomplete,
|
|
72
76
|
{
|
|
73
77
|
onInputChange: handleOnInputChange,
|
|
@@ -75,7 +79,7 @@ const Autocomplete = flowComponent("Autocomplete", (props) => {
|
|
|
75
79
|
...rest,
|
|
76
80
|
children
|
|
77
81
|
}
|
|
78
|
-
)
|
|
82
|
+
) }) })
|
|
79
83
|
}
|
|
80
84
|
);
|
|
81
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.mjs","sources":["../../../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import { useRef, type PropsWithChildren } from \"react\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport * as Aria from \"react-aria-components\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport {
|
|
1
|
+
{"version":3,"file":"Autocomplete.mjs","sources":["../../../../../../src/components/Autocomplete/Autocomplete.tsx"],"sourcesContent":["import { useRef, type PropsWithChildren } from \"react\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport * as Aria from \"react-aria-components\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport {\n UNSAFE_PortalProvider,\n useFocusWithin,\n useLocalizedStringFormatter,\n} from \"react-aria\";\nimport styles from \"./Autocomplete.module.scss\";\nimport locales from \"./locales/*.locale.json\";\nimport { Text } from \"@/components/Text\";\nimport type { SearchFieldProps } from \"@/components/SearchField\";\nimport type { TextFieldProps } from \"@/components/TextField\";\n\nexport interface AutocompleteProps\n extends PropsWithChildren,\n PropsWithClassName,\n FlowComponentProps,\n Omit<Aria.AutocompleteProps, \"children\" | \"onInputChange\" | \"inputValue\"> {}\n\n/** @flr-generate all */\nexport const Autocomplete = flowComponent(\"Autocomplete\", (props) => {\n const { children, ...rest } = props;\n const stringFormatter = useLocalizedStringFormatter(locales);\n\n const { contains } = Aria.useFilter({ sensitivity: \"base\" });\n\n const triggerRef = useRef<HTMLInputElement>(null);\n const container = useRef(null);\n\n const controller = useOverlayController(\"ContextMenu\", {\n reuseControllerFromContext: false,\n });\n const focusWithin = useFocusWithin({\n onBlurWithin: controller.close,\n });\n const menuIsOpen = controller.useIsOpen();\n\n const inputProps: SearchFieldProps & TextFieldProps = {\n onKeyDown: (e) => {\n if (e.key === \"Enter\" && menuIsOpen) {\n e.preventDefault();\n }\n },\n ref: triggerRef,\n };\n\n const propsContext: PropsContext = {\n ContextMenu: {\n placement: \"bottom start\",\n controller,\n isNonModal: true,\n renderEmptyState: () => (\n <Text className={styles.empty}>\n {stringFormatter.format(\"autocomplete.empty\")}\n </Text>\n ),\n onAction: (key) => {\n const input = triggerRef.current;\n if (input) {\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\",\n )?.set;\n nativeInputValueSetter?.call(input, String(key));\n const event = new Event(\"input\", { bubbles: true });\n input.dispatchEvent(event);\n }\n },\n triggerRef,\n },\n SearchField: inputProps,\n TextField: inputProps,\n };\n\n const handleOnInputChange = (value: string) => {\n if (!value) {\n controller.close();\n } else if (!menuIsOpen) {\n controller.open();\n }\n };\n\n return (\n <PropsContextProvider\n props={propsContext}\n mergeInParentContext\n dependencies={[menuIsOpen, controller]}\n >\n <div {...focusWithin.focusWithinProps} ref={container}>\n <UNSAFE_PortalProvider getContainer={() => container.current}>\n <Aria.Autocomplete\n onInputChange={handleOnInputChange}\n filter={contains}\n {...rest}\n >\n {children}\n </Aria.Autocomplete>\n </UNSAFE_PortalProvider>\n </div>\n </PropsContextProvider>\n );\n});\n\nexport default Autocomplete;\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,sCAAsC,CAAC;AAY9C,MAAM,WAAW,iBACf,SAAQ,iBAAiB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,eAAe,GAAG,YAAY,CAAC;CAAG;AAEhF,wBAAwB;AACxB,eAAO,MAAM,YAAY,sGAiFvB,CAAC;AAEH,eAAe,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mittwald/flow-react-components",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.340",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A React implementation of Flow, mittwald’s design system",
|
|
6
6
|
"homepage": "https://mittwald.github.io/flow",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"@chakra-ui/live-region": "^2.1.0",
|
|
59
59
|
"@internationalized/string-compiler": "^3.2.6",
|
|
60
60
|
"@mittwald/password-tools-js": "^2.1.6",
|
|
61
|
-
"@mittwald/react-tunnel": "0.2.0-alpha.
|
|
61
|
+
"@mittwald/react-tunnel": "0.2.0-alpha.340",
|
|
62
62
|
"@mittwald/react-use-promise": "^3.0.4",
|
|
63
63
|
"@react-aria/form": "^3.0.18",
|
|
64
64
|
"@react-aria/utils": "^3.29.1",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"@faker-js/faker": "^9.9.0",
|
|
100
100
|
"@internationalized/date": "^3.8.2",
|
|
101
101
|
"@mittwald/flow-core": "",
|
|
102
|
-
"@mittwald/flow-design-tokens": "0.2.0-alpha.
|
|
102
|
+
"@mittwald/flow-design-tokens": "0.2.0-alpha.340",
|
|
103
103
|
"@mittwald/react-use-promise": "^3.0.4",
|
|
104
104
|
"@mittwald/remote-dom-react": "1.2.2-mittwald.3",
|
|
105
105
|
"@mittwald/typescript-config": "",
|
|
@@ -181,5 +181,5 @@
|
|
|
181
181
|
"optional": true
|
|
182
182
|
}
|
|
183
183
|
},
|
|
184
|
-
"gitHead": "
|
|
184
|
+
"gitHead": "ca0641c62b257120e93a07139e24db3597f85eab"
|
|
185
185
|
}
|