xmlui 0.10.23 → 0.10.25

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 (42) hide show
  1. package/dist/lib/{index-CuPvcayg.mjs → index-CCEPGw_x.mjs} +704 -506
  2. package/dist/lib/index.css +1 -1
  3. package/dist/lib/{initMock-BBdNO6FB.mjs → initMock-DFcCR7ey.mjs} +1 -1
  4. package/dist/lib/xmlui.d.ts +1 -0
  5. package/dist/lib/xmlui.mjs +1 -1
  6. package/dist/metadata/{collectedComponentMetadata-Cp3Ljk8F.mjs → collectedComponentMetadata-mwkNkxN_.mjs} +700 -502
  7. package/dist/metadata/{initMock-Dki8247s.mjs → initMock-BVxHA6wu.mjs} +1 -1
  8. package/dist/metadata/style.css +1 -1
  9. package/dist/metadata/xmlui-metadata.mjs +1 -1
  10. package/dist/metadata/xmlui-metadata.umd.js +3 -3
  11. package/dist/scripts/package.json +1 -1
  12. package/dist/scripts/src/components/AppHeader/AppHeaderNative.js +2 -1
  13. package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +1 -1
  14. package/dist/scripts/src/components/AutoComplete/AutoCompleteNative.js +30 -5
  15. package/dist/scripts/src/components/CodeBlock/highlight-code.js +5 -32
  16. package/dist/scripts/src/components/Form/Form.spec.js +2 -2
  17. package/dist/scripts/src/components/FormItem/FormItemNative.js +5 -1
  18. package/dist/scripts/src/components/Markdown/MarkdownNative.js +4 -3
  19. package/dist/scripts/src/components/Markdown/utils.js +4 -3
  20. package/dist/scripts/src/components/ModalDialog/ModalDialog.js +4 -6
  21. package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +19 -0
  22. package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +103 -11
  23. package/dist/scripts/src/components/NavGroup/NavGroupNative.js +6 -1
  24. package/dist/scripts/src/components/NestedApp/utils.js +6 -5
  25. package/dist/scripts/src/components/Option/Option.spec.js +3 -1
  26. package/dist/scripts/src/components/Select/HiddenOption.js +3 -3
  27. package/dist/scripts/src/components/Select/Select.js +2 -3
  28. package/dist/scripts/src/components/Select/Select.spec.js +53 -6
  29. package/dist/scripts/src/components/Select/SelectNative.js +187 -47
  30. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +11 -0
  31. package/dist/scripts/src/components-core/rendering/Container.js +3 -4
  32. package/dist/scripts/src/components-core/rendering/StateContainer.js +16 -18
  33. package/dist/scripts/src/components-core/rendering/reducer.js +6 -3
  34. package/dist/scripts/src/components-core/utils/base64-utils.js +122 -0
  35. package/dist/scripts/src/components-core/utils/date-utils.js +12 -3
  36. package/dist/scripts/src/testing/ComponentDrivers.js +1 -1
  37. package/dist/standalone/xmlui-standalone.es.d.ts +1 -0
  38. package/dist/standalone/xmlui-standalone.umd.js +15 -15
  39. package/package.json +1 -1
  40. package/dist/scripts/src/components/Select/MultiSelectOption.js +0 -42
  41. package/dist/scripts/src/components/Select/SelectOption.js +0 -34
  42. package/dist/scripts/src/components/Select/SimpleSelect.js +0 -57
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xmlui",
3
- "version": "0.10.23",
3
+ "version": "0.10.25",
4
4
  "sideEffects": false,
5
5
  "scripts": {
6
6
  "start-test-bed": "cd src/testing/infrastructure && xmlui start",
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MultiSelectOption = void 0;
7
- const jsx_runtime_1 = require("react/jsx-runtime");
8
- const react_1 = require("react");
9
- const SelectContext_1 = require("./SelectContext");
10
- const classnames_1 = __importDefault(require("classnames"));
11
- const Select_module_scss_1 = __importDefault(require("./Select.module.scss"));
12
- const IconNative_1 = __importDefault(require("../Icon/IconNative"));
13
- exports.MultiSelectOption = (0, react_1.forwardRef)(function MultiSelectOption(option, forwardedRef) {
14
- const id = (0, react_1.useId)();
15
- const { label, value, enabled = true, keywords, readOnly, children, isHighlighted = false, itemIndex, } = option;
16
- const { value: selectedValue, onChange, multiSelect, setOpen, setSelectedIndex, optionRenderer, } = (0, SelectContext_1.useSelect)();
17
- const selected = (0, react_1.useMemo)(() => {
18
- return Array.isArray(selectedValue) && multiSelect
19
- ? selectedValue.map((v) => String(v)).includes(value)
20
- : String(selectedValue) === String(value);
21
- }, [selectedValue, value, multiSelect]);
22
- const handleClick = () => {
23
- if (readOnly) {
24
- setOpen(false);
25
- return;
26
- }
27
- if (enabled) {
28
- onChange(value);
29
- }
30
- };
31
- return ((0, jsx_runtime_1.jsx)("div", { id: id, ref: forwardedRef, role: "option", "aria-disabled": !enabled, "aria-selected": selected, className: (0, classnames_1.default)(Select_module_scss_1.default.multiSelectOption, {
32
- [Select_module_scss_1.default.disabledOption]: !enabled,
33
- [Select_module_scss_1.default.highlighted]: isHighlighted,
34
- }), onMouseDown: (e) => {
35
- e.preventDefault();
36
- e.stopPropagation();
37
- }, onMouseEnter: () => {
38
- if (itemIndex !== undefined && setSelectedIndex && enabled) {
39
- setSelectedIndex(itemIndex);
40
- }
41
- }, onClick: handleClick, "data-state": selected ? "checked" : undefined, children: (0, jsx_runtime_1.jsx)("div", { className: Select_module_scss_1.default.multiSelectOptionContent, children: optionRenderer ? (optionRenderer({ label, value, enabled, keywords }, selectedValue, false)) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [children || label, selected && (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "checkmark" })] })) }) }));
42
- });
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SelectOption = void 0;
7
- const jsx_runtime_1 = require("react/jsx-runtime");
8
- const react_1 = require("react");
9
- const react_select_1 = require("@radix-ui/react-select");
10
- const SelectContext_1 = require("./SelectContext");
11
- const OptionContext_1 = require("./OptionContext");
12
- const classnames_1 = __importDefault(require("classnames"));
13
- const Select_module_scss_1 = __importDefault(require("./Select.module.scss"));
14
- const IconNative_1 = __importDefault(require("../Icon/IconNative"));
15
- exports.SelectOption = (0, react_1.forwardRef)(function SelectOption(option, ref) {
16
- const visibleContentRef = (0, react_1.useRef)(null);
17
- const { value, label, enabled = true, children, className } = option;
18
- const { value: selectedValue, optionRenderer } = (0, SelectContext_1.useSelect)();
19
- const { onOptionRemove, onOptionAdd } = (0, OptionContext_1.useOption)();
20
- const opt = (0, react_1.useMemo)(() => {
21
- return Object.assign(Object.assign({}, option), { label: label !== null && label !== void 0 ? label : "", keywords: [label !== null && label !== void 0 ? label : ""] });
22
- }, [option, label]);
23
- (0, react_1.useEffect)(() => {
24
- onOptionAdd(opt);
25
- return () => onOptionRemove(opt);
26
- }, [opt, onOptionAdd, onOptionRemove]);
27
- return ((0, jsx_runtime_1.jsxs)(react_select_1.Item, { ref: ref, className: (0, classnames_1.default)(className, Select_module_scss_1.default.selectOption), value: value, textValue: label, disabled: !enabled, onClick: (event) => {
28
- event.stopPropagation();
29
- }, "data-state": selectedValue === value && "checked", children: [(0, jsx_runtime_1.jsx)("span", { style: { display: "none" }, children: (0, jsx_runtime_1.jsx)(react_select_1.ItemText, { children: label }) }), children ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: Select_module_scss_1.default.selectOptionContent, ref: visibleContentRef, children: children }), selectedValue === value && ((0, jsx_runtime_1.jsx)(react_select_1.ItemIndicator, { className: Select_module_scss_1.default.selectOptionIndicator, children: (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "checkmark" }) }))] })) : optionRenderer ? ((0, jsx_runtime_1.jsx)("div", { className: Select_module_scss_1.default.selectOptionContent, ref: visibleContentRef, children: optionRenderer({
30
- label,
31
- value,
32
- enabled,
33
- }, selectedValue, false) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: Select_module_scss_1.default.selectOptionContent, ref: visibleContentRef, children: label }), selectedValue === value && ((0, jsx_runtime_1.jsx)(react_select_1.ItemIndicator, { className: Select_module_scss_1.default.selectItemIndicator, children: (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "checkmark" }) }))] }))] }));
34
- });
@@ -1,57 +0,0 @@
1
- "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.SimpleSelect = void 0;
18
- const jsx_runtime_1 = require("react/jsx-runtime");
19
- const react_1 = require("react");
20
- const ThemeContext_1 = require("../../components-core/theming/ThemeContext");
21
- const Select_module_scss_1 = __importDefault(require("./Select.module.scss"));
22
- const SelectContext_1 = require("./SelectContext");
23
- const IconNative_1 = __importDefault(require("../Icon/IconNative"));
24
- const classnames_1 = __importDefault(require("classnames"));
25
- const react_compose_refs_1 = require("@radix-ui/react-compose-refs");
26
- const react_select_1 = require("@radix-ui/react-select");
27
- exports.SimpleSelect = (0, react_1.forwardRef)(function SimpleSelect(props, forwardedRef) {
28
- const { root } = (0, ThemeContext_1.useTheme)();
29
- const { enabled, onBlur, autoFocus, onValueChange, validationStatus, value, height, style, placeholder, id, triggerRef, onFocus, width, children, readOnly, emptyListNode, className } = props, rest = __rest(props, ["enabled", "onBlur", "autoFocus", "onValueChange", "validationStatus", "value", "height", "style", "placeholder", "id", "triggerRef", "onFocus", "width", "children", "readOnly", "emptyListNode", "className"]);
30
- const { options } = (0, SelectContext_1.useSelect)();
31
- const composedRef = react_1.forwardRef ? (0, react_compose_refs_1.composeRefs)(triggerRef, forwardedRef) : triggerRef;
32
- // Convert value to string for Radix UI compatibility
33
- const stringValue = (0, react_1.useMemo)(() => {
34
- return value != undefined ? String(value) : undefined;
35
- }, [value]);
36
- // Handle value changes with proper type conversion
37
- const handleValueChange = (0, react_1.useCallback)((val) => {
38
- if (readOnly)
39
- return;
40
- onValueChange(val);
41
- }, [onValueChange, readOnly]);
42
- const optionsArray = (0, react_1.useMemo)(() => Array.from(options), [options]);
43
- const selectedOption = (0, react_1.useMemo)(() => {
44
- return optionsArray.find((option) => String(option.value) === String(value));
45
- }, [optionsArray, value]);
46
- return ((0, jsx_runtime_1.jsxs)(react_select_1.Root, { value: stringValue, onValueChange: handleValueChange, children: [(0, jsx_runtime_1.jsxs)(react_select_1.Trigger, Object.assign({}, rest, { id: id, ref: composedRef, "aria-haspopup": "listbox", style: style, onFocus: onFocus, onBlur: onBlur, disabled: !enabled, className: (0, classnames_1.default)(className, Select_module_scss_1.default.selectTrigger, {
47
- [Select_module_scss_1.default.error]: validationStatus === "error",
48
- [Select_module_scss_1.default.warning]: validationStatus === "warning",
49
- [Select_module_scss_1.default.valid]: validationStatus === "valid",
50
- }), onClick: (event) => {
51
- // Prevent event propagation to parent elements (e.g., DropdownMenu)
52
- // This ensures that clicking the Select trigger doesn't close the containing DropdownMenu
53
- event.stopPropagation();
54
- }, autoFocus: autoFocus, children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(Select_module_scss_1.default.selectValue, {
55
- [Select_module_scss_1.default.placeholder]: value === undefined,
56
- }), children: selectedOption ? selectedOption.label : readOnly ? "" : placeholder }), (0, jsx_runtime_1.jsx)("span", { className: Select_module_scss_1.default.action, children: (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "chevrondown" }) })] })), (0, jsx_runtime_1.jsx)(react_select_1.Portal, { container: root, children: (0, jsx_runtime_1.jsxs)(react_select_1.Content, { className: Select_module_scss_1.default.selectDropdownContent, position: "popper", style: { maxHeight: height, minWidth: width }, children: [(0, jsx_runtime_1.jsx)(react_select_1.ScrollUpButton, { className: Select_module_scss_1.default.selectScrollUpButton, children: (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "chevronup" }) }), (0, jsx_runtime_1.jsxs)(react_select_1.Viewport, { className: Select_module_scss_1.default.selectViewport, role: "listbox", children: [children, optionsArray.length === 0 && emptyListNode] }), (0, jsx_runtime_1.jsx)(react_select_1.ScrollDownButton, { className: Select_module_scss_1.default.selectScrollDownButton, children: (0, jsx_runtime_1.jsx)(IconNative_1.default, { name: "chevrondown" }) })] }) })] }));
57
- });