xmlui 0.4.0
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/dist/Pdf-DeGhSMXe.mjs +19537 -0
- package/dist/Pdf.css +1 -0
- package/dist/apiInterceptorWorker-CwuUhYyc.mjs +9229 -0
- package/dist/array-USo-Szhp.mjs +12 -0
- package/dist/index-C24dkfpd.mjs +1434 -0
- package/dist/index-ao27SnVp.mjs +145185 -0
- package/dist/index.css +1 -0
- package/dist/nivo-bar.es-CWh0ZlxB.mjs +1666 -0
- package/dist/nivo-geo.es-BTqNt5Db.mjs +1579 -0
- package/dist/nivo-legends.es-BuIxHGSU.mjs +6916 -0
- package/dist/nivo-pie.es-BvCBFA0L.mjs +700 -0
- package/dist/react-apexcharts.min-DqWuDOyO.mjs +8881 -0
- package/dist/scripts/bin/bootstrap.js +11 -0
- package/dist/scripts/bin/build.js +256 -0
- package/dist/scripts/bin/index.js +88 -0
- package/dist/scripts/bin/preview.js +27 -0
- package/dist/scripts/bin/start.js +41 -0
- package/dist/scripts/bin/vite-ueml-plugin.js +113 -0
- package/dist/scripts/bin/viteConfig.js +112 -0
- package/dist/scripts/src/abstractions/ActionDefs.js +2 -0
- package/dist/scripts/src/abstractions/AppContextDefs.js +2 -0
- package/dist/scripts/src/abstractions/BlockScope.js +4 -0
- package/dist/scripts/src/abstractions/ComponentDefs.js +2 -0
- package/dist/scripts/src/abstractions/ComponentDescriptorDefs.js +2 -0
- package/dist/scripts/src/abstractions/ContainerDefs.js +2 -0
- package/dist/scripts/src/abstractions/FunctionDefs.js +2 -0
- package/dist/scripts/src/abstractions/RendererDefs.js +2 -0
- package/dist/scripts/src/abstractions/scripting/ScriptParserError.js +2 -0
- package/dist/scripts/src/abstractions/scripting/ScriptingSourceTree.js +2 -0
- package/dist/scripts/src/abstractions/scripting/Token.js +110 -0
- package/dist/scripts/src/components/App/App.js +253 -0
- package/dist/scripts/src/components/App/AppLayoutContext.js +9 -0
- package/dist/scripts/src/components/App/AppStateContext.js +9 -0
- package/dist/scripts/src/components/App/Sheet.js +89 -0
- package/dist/scripts/src/components/AppHeader/AppHeader.js +121 -0
- package/dist/scripts/src/components/AppState/AppState.js +29 -0
- package/dist/scripts/src/components/Avatar/Avatar.js +81 -0
- package/dist/scripts/src/components/Badge/Badge.js +56 -0
- package/dist/scripts/src/components/BarChart/BarChart.js +199 -0
- package/dist/scripts/src/components/Bookmark/Bookmark.js +11 -0
- package/dist/scripts/src/components/Button/Button.js +196 -0
- package/dist/scripts/src/components/Card/Card.js +65 -0
- package/dist/scripts/src/components/ChangeListener/ChangeListener.js +43 -0
- package/dist/scripts/src/components/Chart/Chart.js +158 -0
- package/dist/scripts/src/components/Checkbox/Checkbox.js +43 -0
- package/dist/scripts/src/components/Combobox/Combobox.js +145 -0
- package/dist/scripts/src/components/ComponentProvider.js +357 -0
- package/dist/scripts/src/components/ContentSeparator/ContentSeparator.js +40 -0
- package/dist/scripts/src/components/DatePicker/DatePicker.js +196 -0
- package/dist/scripts/src/components/DropdownMenu/DropdownMenu.js +175 -0
- package/dist/scripts/src/components/EmojiSelector/EmojiSelector.js +56 -0
- package/dist/scripts/src/components/FileInput/FileInput.js +127 -0
- package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.js +106 -0
- package/dist/scripts/src/components/FlowLayout/FlowLayout.js +139 -0
- package/dist/scripts/src/components/Footer/Footer.js +42 -0
- package/dist/scripts/src/components/Form/Form.js +320 -0
- package/dist/scripts/src/components/Form/FormContext.js +9 -0
- package/dist/scripts/src/components/Form/formActions.js +86 -0
- package/dist/scripts/src/components/FormItem/FormItem.js +204 -0
- package/dist/scripts/src/components/FormItem/HelperText.js +27 -0
- package/dist/scripts/src/components/FormItem/ItemWithLabel.js +39 -0
- package/dist/scripts/src/components/FormItem/Validations.js +346 -0
- package/dist/scripts/src/components/FormSection/FormSection.js +45 -0
- package/dist/scripts/src/components/Heading/Heading.js +206 -0
- package/dist/scripts/src/components/HoverCard/HoverCard.js +45 -0
- package/dist/scripts/src/components/Icon/ApiIcon.js +10 -0
- package/dist/scripts/src/components/Icon/Attach.js +10 -0
- package/dist/scripts/src/components/Icon/Binding.js +11 -0
- package/dist/scripts/src/components/Icon/BoardIcon.js +7 -0
- package/dist/scripts/src/components/Icon/BoxIcon.js +10 -0
- package/dist/scripts/src/components/Icon/CheckIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronDownIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronLeft.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronRight.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronUpIcon.js +7 -0
- package/dist/scripts/src/components/Icon/CodeFileIcon.js +10 -0
- package/dist/scripts/src/components/Icon/CodeSandbox.js +10 -0
- package/dist/scripts/src/components/Icon/CompactListIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ContentCopyIcon.js +7 -0
- package/dist/scripts/src/components/Icon/DatabaseIcon.js +11 -0
- package/dist/scripts/src/components/Icon/DocFileIcon.js +10 -0
- package/dist/scripts/src/components/Icon/DocIcon.js +10 -0
- package/dist/scripts/src/components/Icon/DotMenuHorizontalIcon.js +7 -0
- package/dist/scripts/src/components/Icon/DotMenuIcon.js +7 -0
- package/dist/scripts/src/components/Icon/EmailIcon.js +7 -0
- package/dist/scripts/src/components/Icon/EmptyFolderIcon.js +10 -0
- package/dist/scripts/src/components/Icon/ErrorIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ExpressionIcon.js +10 -0
- package/dist/scripts/src/components/Icon/FillPlusCricleIcon.js +7 -0
- package/dist/scripts/src/components/Icon/FilterIcon.js +10 -0
- package/dist/scripts/src/components/Icon/FolderIcon.js +10 -0
- package/dist/scripts/src/components/Icon/GlobeIcon.js +7 -0
- package/dist/scripts/src/components/Icon/HomeIcon.js +7 -0
- package/dist/scripts/src/components/Icon/HyperLinkIcon.js +7 -0
- package/dist/scripts/src/components/Icon/Icon.js +101 -0
- package/dist/scripts/src/components/Icon/ImageFileIcon.js +10 -0
- package/dist/scripts/src/components/Icon/LinkIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ListIcon.js +7 -0
- package/dist/scripts/src/components/Icon/LooseListIcon.js +7 -0
- package/dist/scripts/src/components/Icon/MoonIcon.js +10 -0
- package/dist/scripts/src/components/Icon/MoreOptionsIcon.js +7 -0
- package/dist/scripts/src/components/Icon/PDFIcon.js +10 -0
- package/dist/scripts/src/components/Icon/PenIcon.js +7 -0
- package/dist/scripts/src/components/Icon/PhoneIcon.js +7 -0
- package/dist/scripts/src/components/Icon/PhotoIcon.js +10 -0
- package/dist/scripts/src/components/Icon/PlusIcon.js +7 -0
- package/dist/scripts/src/components/Icon/SearchIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ShareIcon.js +10 -0
- package/dist/scripts/src/components/Icon/SunIcon.js +10 -0
- package/dist/scripts/src/components/Icon/TrashIcon.js +7 -0
- package/dist/scripts/src/components/Icon/TxtIcon.js +10 -0
- package/dist/scripts/src/components/Icon/UnknownFileIcon.js +10 -0
- package/dist/scripts/src/components/Icon/UnlinkIcon.js +10 -0
- package/dist/scripts/src/components/Icon/UserIcon.js +7 -0
- package/dist/scripts/src/components/Icon/WarningIcon.js +7 -0
- package/dist/scripts/src/components/Icon/XlsIcon.js +10 -0
- package/dist/scripts/src/components/IconProvider.js +249 -0
- package/dist/scripts/src/components/IconRegistryContext.js +307 -0
- package/dist/scripts/src/components/Image/Image.js +34 -0
- package/dist/scripts/src/components/Input/InputAdornment.js +14 -0
- package/dist/scripts/src/components/Input/input-abstractions.js +44 -0
- package/dist/scripts/src/components/Items/Items.js +48 -0
- package/dist/scripts/src/components/Link/Link.js +72 -0
- package/dist/scripts/src/components/List/List.js +442 -0
- package/dist/scripts/src/components/Logo/Logo.js +25 -0
- package/dist/scripts/src/components/Map/Map.js +60 -0
- package/dist/scripts/src/components/Map/world_countries.json +45307 -0
- package/dist/scripts/src/components/Markdown/Markdown.js +120 -0
- package/dist/scripts/src/components/ModalDialog/ConfirmationModalContextProvider.js +106 -0
- package/dist/scripts/src/components/ModalDialog/Dialog.js +20 -0
- package/dist/scripts/src/components/ModalDialog/ModalDialog.js +145 -0
- package/dist/scripts/src/components/MultiCombobox/MultiCombobox.js +249 -0
- package/dist/scripts/src/components/MultiSelect/MultiSelect.js +192 -0
- package/dist/scripts/src/components/NavGroup/NavGroup.js +113 -0
- package/dist/scripts/src/components/NavLink/NavLink.js +115 -0
- package/dist/scripts/src/components/NavPanel/NavPanel.js +101 -0
- package/dist/scripts/src/components/NoResult/NoResult.js +39 -0
- package/dist/scripts/src/components/NumberBox/NumberBox.js +373 -0
- package/dist/scripts/src/components/Option/Option.js +41 -0
- package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.js +22 -0
- package/dist/scripts/src/components/Pages/Pages.js +74 -0
- package/dist/scripts/src/components/Pdf/LazyPdf.js +44 -0
- package/dist/scripts/src/components/Pdf/Pdf.js +19 -0
- package/dist/scripts/src/components/PieChart/PieChart.js +184 -0
- package/dist/scripts/src/components/PositionedContainer/PositionedContainer.js +29 -0
- package/dist/scripts/src/components/ProgressBar/ProgressBar.js +38 -0
- package/dist/scripts/src/components/Queue/Queue.js +286 -0
- package/dist/scripts/src/components/Queue/queueActions.js +87 -0
- package/dist/scripts/src/components/RadioGroup/RadioGroup.js +144 -0
- package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapter.js +147 -0
- package/dist/scripts/src/components/Redirect/Redirect.js +10 -0
- package/dist/scripts/src/components/Select/Select.js +139 -0
- package/dist/scripts/src/components/Select/SelectContext.js +45 -0
- package/dist/scripts/src/components/SelectionStore/SelectionStore.js +88 -0
- package/dist/scripts/src/components/SpaceFiller/SpaceFiller.js +22 -0
- package/dist/scripts/src/components/Spinner/Spinner.js +59 -0
- package/dist/scripts/src/components/Splitter/Splitter.js +205 -0
- package/dist/scripts/src/components/Splitter/utils.js +17 -0
- package/dist/scripts/src/components/Stack/Stack.js +117 -0
- package/dist/scripts/src/components/StickyBox/StickyBox.js +33 -0
- package/dist/scripts/src/components/Switch/Switch.js +50 -0
- package/dist/scripts/src/components/Table/Table.js +499 -0
- package/dist/scripts/src/components/Table/useRowSelection.js +169 -0
- package/dist/scripts/src/components/TableColumnDef/TableColumnDef.js +44 -0
- package/dist/scripts/src/components/TableColumnDef/TableContext.js +12 -0
- package/dist/scripts/src/components/Tabs/Tabs.js +85 -0
- package/dist/scripts/src/components/Text/Text.js +175 -0
- package/dist/scripts/src/components/TextArea/TextArea.js +194 -0
- package/dist/scripts/src/components/TextArea/TextAreaResizable.js +63 -0
- package/dist/scripts/src/components/TextArea/useComposedRef.js +50 -0
- package/dist/scripts/src/components/TextBox/TextBox.js +145 -0
- package/dist/scripts/src/components/Theme/NotificationToast.js +39 -0
- package/dist/scripts/src/components/Theme/Theme.js +153 -0
- package/dist/scripts/src/components/ThemeChanger/ThemeChanger.js +125 -0
- package/dist/scripts/src/components/Toggle/Toggle.js +88 -0
- package/dist/scripts/src/components/Tree/TreeComponent.js +79 -0
- package/dist/scripts/src/components/ValidationSummary/ValidationSummary.js +59 -0
- package/dist/scripts/src/components/ViewComponentRegistryContext.js +34 -0
- package/dist/scripts/src/components/abstractions.js +2 -0
- package/dist/scripts/src/components/chart-color-schemes.js +43 -0
- package/dist/scripts/src/components/component-utils.js +32 -0
- package/dist/scripts/src/components/container-helpers.js +18 -0
- package/dist/scripts/src/components-core/ApiBoundComponent.js +189 -0
- package/dist/scripts/src/components-core/AppContext.js +17 -0
- package/dist/scripts/src/components-core/ChildrenSlot.js +10 -0
- package/dist/scripts/src/components-core/Component.js +280 -0
- package/dist/scripts/src/components-core/ComponentDecorator.js +63 -0
- package/dist/scripts/src/components-core/CompoundComponent.js +132 -0
- package/dist/scripts/src/components-core/EngineError.js +91 -0
- package/dist/scripts/src/components-core/ErrorBoundary.js +58 -0
- package/dist/scripts/src/components-core/Fragment.js +14 -0
- package/dist/scripts/src/components-core/InvalidComponent.js +15 -0
- package/dist/scripts/src/components-core/LoaderComponent.js +78 -0
- package/dist/scripts/src/components-core/RestApiProxy.js +341 -0
- package/dist/scripts/src/components-core/RootComponent.js +272 -0
- package/dist/scripts/src/components-core/RouteContext.js +45 -0
- package/dist/scripts/src/components-core/ScrollContext.js +9 -0
- package/dist/scripts/src/components-core/UnknownComponent.js +15 -0
- package/dist/scripts/src/components-core/abstractions/ComponentRenderer.js +2 -0
- package/dist/scripts/src/components-core/abstractions/LoaderRenderer.js +2 -0
- package/dist/scripts/src/components-core/abstractions/containers.js +18 -0
- package/dist/scripts/src/components-core/abstractions/treeAbstractions.js +2 -0
- package/dist/scripts/src/components-core/action/ApiAction.js +276 -0
- package/dist/scripts/src/components-core/action/DownloadFileAction.js +80 -0
- package/dist/scripts/src/components-core/action/NavigateAction.js +20 -0
- package/dist/scripts/src/components-core/action/TimedAction.js +21 -0
- package/dist/scripts/src/components-core/action/UploadAction.js +88 -0
- package/dist/scripts/src/components-core/action/actions.js +15 -0
- package/dist/scripts/src/components-core/appContext/date-functions.js +19 -0
- package/dist/scripts/src/components-core/appContext/misc-utils.js +12 -0
- package/dist/scripts/src/components-core/component-hooks.js +25 -0
- package/dist/scripts/src/components-core/constants.js +18 -0
- package/dist/scripts/src/components-core/container/Container.js +1110 -0
- package/dist/scripts/src/components-core/container/ContainerComponentDef.js +16 -0
- package/dist/scripts/src/components-core/container/buildProxy.js +54 -0
- package/dist/scripts/src/components-core/container/collectFnVarDeps.js +26 -0
- package/dist/scripts/src/components-core/container/valueExtractor.js +195 -0
- package/dist/scripts/src/components-core/descriptorHelper.js +75 -0
- package/dist/scripts/src/components-core/interception/abstractions.js +2 -0
- package/dist/scripts/src/components-core/interception/useApiInterceptorContext.js +9 -0
- package/dist/scripts/src/components-core/loader/ApiLoader.js +46 -0
- package/dist/scripts/src/components-core/loader/DataLoader.js +160 -0
- package/dist/scripts/src/components-core/loader/ExternalDataLoader.js +52 -0
- package/dist/scripts/src/components-core/loader/Loader.js +115 -0
- package/dist/scripts/src/components-core/loader/MockLoaderRenderer.js +32 -0
- package/dist/scripts/src/components-core/loader/PageableLoader.js +240 -0
- package/dist/scripts/src/components-core/renderers.js +45 -0
- package/dist/scripts/src/components-core/reportEngineError.js +59 -0
- package/dist/scripts/src/components-core/script-runner/BindingTreeEvaluationContext.js +35 -0
- package/dist/scripts/src/components-core/script-runner/ICustomOperations.js +34 -0
- package/dist/scripts/src/components-core/script-runner/LogicalThread.js +2 -0
- package/dist/scripts/src/components-core/script-runner/LoopScope.js +2 -0
- package/dist/scripts/src/components-core/script-runner/ParameterParser.js +117 -0
- package/dist/scripts/src/components-core/script-runner/TryScope.js +2 -0
- package/dist/scripts/src/components-core/script-runner/asyncProxy.js +96 -0
- package/dist/scripts/src/components-core/script-runner/bannedFunctions.js +34 -0
- package/dist/scripts/src/components-core/script-runner/custom-operations-registry.js +40 -0
- package/dist/scripts/src/components-core/script-runner/custom-ui-data.js +40 -0
- package/dist/scripts/src/components-core/script-runner/eval-tree-async.js +551 -0
- package/dist/scripts/src/components-core/script-runner/eval-tree-common.js +498 -0
- package/dist/scripts/src/components-core/script-runner/eval-tree-sync.js +434 -0
- package/dist/scripts/src/components-core/script-runner/modules.js +250 -0
- package/dist/scripts/src/components-core/script-runner/process-statement-async.js +818 -0
- package/dist/scripts/src/components-core/script-runner/process-statement-common.js +193 -0
- package/dist/scripts/src/components-core/script-runner/process-statement-sync.js +740 -0
- package/dist/scripts/src/components-core/script-runner/statement-queue.js +62 -0
- package/dist/scripts/src/components-core/script-runner/visitors.js +352 -0
- package/dist/scripts/src/components-core/theming/ThemeContext.js +43 -0
- package/dist/scripts/src/components-core/theming/ThemeProvider.js +334 -0
- package/dist/scripts/src/components-core/theming/abstractions.js +11 -0
- package/dist/scripts/src/components-core/theming/extendThemeUtils.js +114 -0
- package/dist/scripts/src/components-core/theming/hvar.js +105 -0
- package/dist/scripts/src/components-core/theming/themeVars.js +62 -0
- package/dist/scripts/src/components-core/theming/themes/base-utils.js +31 -0
- package/dist/scripts/src/components-core/theming/themes/palette.js +53 -0
- package/dist/scripts/src/components-core/theming/themes/root.js +257 -0
- package/dist/scripts/src/components-core/theming/themes/solid.js +16 -0
- package/dist/scripts/src/components-core/theming/themes/theme-colors.js +407 -0
- package/dist/scripts/src/components-core/theming/themes/xmlui.js +32 -0
- package/dist/scripts/src/components-core/theming/transformThemeVars.js +286 -0
- package/dist/scripts/src/components-core/utils/DataLoaderQueryKeyGenerator.js +34 -0
- package/dist/scripts/src/components-core/utils/LruCache.js +184 -0
- package/dist/scripts/src/components-core/utils/actionUtils.js +32 -0
- package/dist/scripts/src/components-core/utils/classnames.js +58 -0
- package/dist/scripts/src/components-core/utils/css-utils.js +127 -0
- package/dist/scripts/src/components-core/utils/date-utils.js +78 -0
- package/dist/scripts/src/components-core/utils/extractParam.js +148 -0
- package/dist/scripts/src/components-core/utils/hooks.js +221 -0
- package/dist/scripts/src/components-core/utils/mergeProps.js +45 -0
- package/dist/scripts/src/components-core/utils/misc.js +460 -0
- package/dist/scripts/src/components-core/utils/statementUtils.js +205 -0
- package/dist/scripts/src/components-core/utils/treeUtils.js +48 -0
- package/dist/scripts/src/components-core/xmlui-parser.js +52 -0
- package/dist/scripts/src/parsers/scripting/InputStream.js +59 -0
- package/dist/scripts/src/parsers/scripting/Lexer.js +1028 -0
- package/dist/scripts/src/parsers/scripting/Parser.js +2647 -0
- package/dist/scripts/src/parsers/scripting/ParserError.js +46 -0
- package/dist/scripts/src/parsers/scripting/TokenTrait.js +109 -0
- package/dist/scripts/src/parsers/scripting/code-behind-collect.js +118 -0
- package/dist/scripts/src/parsers/scripting/tree-visitor.js +602 -0
- package/dist/scripts/src/parsers/style-parser/StyleInputStream.js +39 -0
- package/dist/scripts/src/parsers/style-parser/StyleLexer.js +621 -0
- package/dist/scripts/src/parsers/style-parser/StyleParser.js +1000 -0
- package/dist/scripts/src/parsers/style-parser/errors.js +37 -0
- package/dist/scripts/src/parsers/style-parser/source-tree.js +2 -0
- package/dist/scripts/src/parsers/style-parser/style-compiler.js +513 -0
- package/dist/scripts/src/parsers/style-parser/tokens.js +42 -0
- package/dist/scripts/src/parsers/ueml/ParserError.js +54 -0
- package/dist/scripts/src/parsers/ueml/UemlHelper.js +579 -0
- package/dist/scripts/src/parsers/ueml/UemlInputStream.js +59 -0
- package/dist/scripts/src/parsers/ueml/UemlLexer.js +868 -0
- package/dist/scripts/src/parsers/ueml/UemlParser.js +1439 -0
- package/dist/scripts/src/parsers/ueml/UemlToken.js +24 -0
- package/dist/scripts/src/parsers/ueml/fileExtensions.js +6 -0
- package/dist/scripts/src/parsers/ueml/source-tree.js +2 -0
- package/dist/scripts/src/parsers/ueml/ueml-tree.js +2 -0
- package/dist/scripts/src/parsers/xmlui-parser/CharacterCodes.js +136 -0
- package/dist/scripts/src/parsers/xmlui-parser/diagnostics.js +100 -0
- package/dist/scripts/src/parsers/xmlui-parser/parser.js +476 -0
- package/dist/scripts/src/parsers/xmlui-parser/scanner.js +415 -0
- package/dist/scripts/src/parsers/xmlui-parser/syntax-kind.js +106 -0
- package/dist/scripts/src/parsers/xmlui-parser/syntax-node.js +2 -0
- package/dist/scripts/src/parsers/xmlui-parser/transform.js +922 -0
- package/dist/scripts/src/parsers/xmlui-parser/utils.js +83 -0
- package/dist/xmlui.es.d.ts +1667 -0
- package/dist/xmlui.es.js +17 -0
- package/dist/xmlui.umd.js +1589 -0
- package/package.json +175 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.menuSeparatorRenderer = exports.subMenuItemRenderer = exports.menuItemRenderer = exports.dropdownMenuComponentRenderer = void 0;
|
|
39
|
+
exports.DropdownMenu = DropdownMenu;
|
|
40
|
+
exports.MenuItem = MenuItem;
|
|
41
|
+
exports.MenuSeparator = MenuSeparator;
|
|
42
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
43
|
+
const react_1 = require("react");
|
|
44
|
+
const ReactDropdownMenu = __importStar(require("@radix-ui/react-dropdown-menu"));
|
|
45
|
+
const DropdownMenu_module_scss_1 = __importDefault(require("./DropdownMenu.module.scss"));
|
|
46
|
+
const renderers_1 = require("@components-core/renderers");
|
|
47
|
+
const themeVars_1 = require("@components-core/theming/themeVars");
|
|
48
|
+
const Button_1 = require("@components/Button/Button");
|
|
49
|
+
const ThemeContext_1 = require("@components-core/theming/ThemeContext");
|
|
50
|
+
const descriptorHelper_1 = require("@components-core/descriptorHelper");
|
|
51
|
+
const Icon_1 = require("@components/Icon/Icon");
|
|
52
|
+
const constants_1 = require("@components-core/constants");
|
|
53
|
+
function DropdownMenu({ triggerTemplate, children, label, registerComponentApi, layout, onWillOpen, alignment = "start", disabled = false, triggerButtonVariant = "ghost", triggerButtonThemeColor = "primary", }) {
|
|
54
|
+
const { root } = (0, ThemeContext_1.useTheme)();
|
|
55
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
56
|
+
(0, react_1.useEffect)(() => {
|
|
57
|
+
registerComponentApi === null || registerComponentApi === void 0 ? void 0 : registerComponentApi({
|
|
58
|
+
close: () => setOpen(false),
|
|
59
|
+
});
|
|
60
|
+
}, [registerComponentApi]);
|
|
61
|
+
return ((0, jsx_runtime_1.jsxs)(ReactDropdownMenu.Root, { open: open, onOpenChange: (isOpen) => __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
if (isOpen) {
|
|
63
|
+
const willOpenResult = yield (onWillOpen === null || onWillOpen === void 0 ? void 0 : onWillOpen());
|
|
64
|
+
if (willOpenResult === false) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
setOpen(isOpen);
|
|
69
|
+
}), children: [(0, jsx_runtime_1.jsx)(ReactDropdownMenu.Trigger, { asChild: true, disabled: disabled, children: triggerTemplate ? (triggerTemplate) : ((0, jsx_runtime_1.jsx)(Button_1.Button, { icon: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: "chevrondown" }), type: "button", variant: triggerButtonVariant, themeColor: triggerButtonThemeColor, children: label })) }), (0, jsx_runtime_1.jsx)(ReactDropdownMenu.Portal, { container: root, children: (0, jsx_runtime_1.jsx)(ReactDropdownMenu.Content, { align: alignment, style: layout, className: DropdownMenu_module_scss_1.default.DropdownMenuContent, children: children }) })] }));
|
|
70
|
+
}
|
|
71
|
+
const metadata = {
|
|
72
|
+
displayName: "DropdownMenu",
|
|
73
|
+
description: "It represents a dropdown menu with multiple menu items. Clicking it displays the available menu items.",
|
|
74
|
+
props: {
|
|
75
|
+
label: (0, descriptorHelper_1.desc)("The label to display on the button"),
|
|
76
|
+
triggerTemplate: (0, descriptorHelper_1.desc)("The trigger template to use"),
|
|
77
|
+
alignment: (0, descriptorHelper_1.desc)("The alignment of the drop-down menu"),
|
|
78
|
+
enabled: (0, descriptorHelper_1.desc)("Enables or disables the component"),
|
|
79
|
+
triggerButtonVariant: (0, descriptorHelper_1.desc)("The variant of the trigger button"),
|
|
80
|
+
triggerButtonThemeColor: (0, descriptorHelper_1.desc)("The theme color of the trigger button"),
|
|
81
|
+
},
|
|
82
|
+
themeVars: (0, themeVars_1.parseScssVar)(DropdownMenu_module_scss_1.default.themeVars),
|
|
83
|
+
defaultThemeVars: {
|
|
84
|
+
"color-bg-DropdownMenu": "$color-bg-primary",
|
|
85
|
+
"min-width-DropdownMenu": "160px",
|
|
86
|
+
"shadow-DropdownMenu": "$shadow-md",
|
|
87
|
+
"style-border-DropdownMenu-content": "solid",
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
exports.dropdownMenuComponentRenderer = (0, renderers_1.createComponentRenderer)("DropdownMenu", ({ node, extractValue, renderChild, registerComponentApi, layoutCss, lookupEventHandler, }) => {
|
|
91
|
+
var _a, _b, _c;
|
|
92
|
+
return ((0, jsx_runtime_1.jsx)(DropdownMenu, { triggerTemplate: renderChild((_a = node.props) === null || _a === void 0 ? void 0 : _a.triggerTemplate), label: extractValue((_b = node.props) === null || _b === void 0 ? void 0 : _b.label), registerComponentApi: registerComponentApi, onWillOpen: lookupEventHandler("willOpen"), layout: layoutCss, alignment: extractValue((_c = node.props) === null || _c === void 0 ? void 0 : _c.alignment), disabled: !extractValue.asOptionalBoolean(node.props.enabled, true), triggerButtonThemeColor: extractValue(node.props.triggerButtonThemeColor), triggerButtonVariant: extractValue(node.props.triggerButtonVariant), children: renderChild(node.children) }));
|
|
93
|
+
}, metadata);
|
|
94
|
+
function MenuItem({ children, onClick = constants_1.noop, label, style, icon, iconPosition = "start", }) {
|
|
95
|
+
const iconToLeft = iconPosition === "left" || iconPosition === "start";
|
|
96
|
+
return ((0, jsx_runtime_1.jsxs)(ReactDropdownMenu.Item, { style: style, className: DropdownMenu_module_scss_1.default.DropdownMenuItem, onClick: (event) => {
|
|
97
|
+
event.stopPropagation();
|
|
98
|
+
onClick(event);
|
|
99
|
+
}, children: [iconToLeft && icon, (0, jsx_runtime_1.jsx)("div", { className: DropdownMenu_module_scss_1.default.wrapper, children: label !== null && label !== void 0 ? label : children }), !iconToLeft && icon] }));
|
|
100
|
+
}
|
|
101
|
+
const menuItemMetadata = {
|
|
102
|
+
displayName: "MenuItem",
|
|
103
|
+
description: "Represents a menu item within a DropDownMenu, clicking of which triggers an action",
|
|
104
|
+
props: {
|
|
105
|
+
iconPosition: (0, descriptorHelper_1.desc)("Position of the icon displayed"),
|
|
106
|
+
icon: (0, descriptorHelper_1.desc)("Optional icon ID to display the particular icon"),
|
|
107
|
+
label: (0, descriptorHelper_1.desc)("The label to display on the button"),
|
|
108
|
+
to: (0, descriptorHelper_1.desc)("The target URL"),
|
|
109
|
+
},
|
|
110
|
+
events: {
|
|
111
|
+
click: (0, descriptorHelper_1.desc)("Triggers when the menu item is clicked"),
|
|
112
|
+
},
|
|
113
|
+
themeVars: (0, themeVars_1.parseScssVar)(DropdownMenu_module_scss_1.default.themeVars),
|
|
114
|
+
defaultThemeVars: {
|
|
115
|
+
"color-bg-MenuItem": "$color-bg-dropdown-item",
|
|
116
|
+
"color-MenuItem": "$color-text-primary",
|
|
117
|
+
"font-family-MenuItem": "$font-family",
|
|
118
|
+
"font-size-MenuItem": "inherit",
|
|
119
|
+
"padding-vertical-MenuItem": "$space-2",
|
|
120
|
+
"padding-horizontal-MenuItem": "$space-3",
|
|
121
|
+
"color-bg-MenuItem--hover": "$color-bg-dropdown-item--active",
|
|
122
|
+
"color-MenuItem--hover": "inherit",
|
|
123
|
+
"gap-MenuItem": "$space-2",
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
exports.menuItemRenderer = (0, renderers_1.createComponentRenderer)("MenuItem", ({ node, renderChild, lookupEventHandler, lookupAction, extractValue, layoutCss, }) => {
|
|
127
|
+
var _a, _b;
|
|
128
|
+
const clickEventHandler = lookupEventHandler("click");
|
|
129
|
+
let clickHandler;
|
|
130
|
+
const to = extractValue(node.props.to);
|
|
131
|
+
if (!clickEventHandler && (to === null || to === void 0 ? void 0 : to.trim())) {
|
|
132
|
+
const navigateAction = lookupAction("navigate", { signError: false });
|
|
133
|
+
clickHandler = () => {
|
|
134
|
+
navigateAction === null || navigateAction === void 0 ? void 0 : navigateAction({ pathname: to });
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return ((0, jsx_runtime_1.jsx)(MenuItem, { onClick: clickHandler, label: extractValue((_a = node.props) === null || _a === void 0 ? void 0 : _a.label), style: layoutCss, iconPosition: extractValue(node.props.iconPosition), icon: ((_b = node.props) === null || _b === void 0 ? void 0 : _b.icon) && (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: extractValue(node.props.icon) }), children: renderChild(node.children) }));
|
|
138
|
+
}, menuItemMetadata);
|
|
139
|
+
function SubMenuItem({ children, label, triggerTemplate }) {
|
|
140
|
+
const { root } = (0, ThemeContext_1.useTheme)();
|
|
141
|
+
return ((0, jsx_runtime_1.jsxs)(ReactDropdownMenu.Sub, { children: [(0, jsx_runtime_1.jsx)(ReactDropdownMenu.SubTrigger, { className: DropdownMenu_module_scss_1.default.DropdownMenuSubTrigger, asChild: true, children: triggerTemplate ? triggerTemplate : (0, jsx_runtime_1.jsx)("div", { children: label }) }), (0, jsx_runtime_1.jsx)(ReactDropdownMenu.Portal, { container: root, children: (0, jsx_runtime_1.jsx)(ReactDropdownMenu.SubContent, { className: DropdownMenu_module_scss_1.default.DropdownMenuSubContent, children: children }) })] }));
|
|
142
|
+
}
|
|
143
|
+
const subMenuItemMetadata = {
|
|
144
|
+
displayName: "SubMenuItem",
|
|
145
|
+
description: "Represents a nested menu item within another menu or menu item",
|
|
146
|
+
props: {
|
|
147
|
+
label: (0, descriptorHelper_1.desc)("The label to display as the name of the submenu"),
|
|
148
|
+
triggerTemplate: (0, descriptorHelper_1.desc)("The trigger template to use for this submenu"),
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
exports.subMenuItemRenderer = (0, renderers_1.createComponentRenderer)("SubMenuItem", ({ node, renderChild, extractValue }) => {
|
|
152
|
+
var _a, _b;
|
|
153
|
+
return ((0, jsx_runtime_1.jsx)(SubMenuItem, { label: extractValue((_a = node.props) === null || _a === void 0 ? void 0 : _a.label), triggerTemplate: renderChild((_b = node.props) === null || _b === void 0 ? void 0 : _b.triggerTemplate), children: renderChild(node.children) }));
|
|
154
|
+
}, subMenuItemMetadata);
|
|
155
|
+
// ====================================================================================================================
|
|
156
|
+
// React MenuSeparator component implementation
|
|
157
|
+
function MenuSeparator() {
|
|
158
|
+
return ((0, jsx_runtime_1.jsx)(ReactDropdownMenu.Separator, { className: DropdownMenu_module_scss_1.default.DropdownMenuSeparator }));
|
|
159
|
+
}
|
|
160
|
+
const menuSeparatorMetadata = {
|
|
161
|
+
displayName: "MenuSeparator",
|
|
162
|
+
description: "Displays a separator line between menu items",
|
|
163
|
+
themeVars: (0, themeVars_1.parseScssVar)(DropdownMenu_module_scss_1.default.themeVars),
|
|
164
|
+
defaultThemeVars: {
|
|
165
|
+
"margin-top-MenuSeparator": "$space-1",
|
|
166
|
+
"margin-bottom-MenuSeparator": "$space-1",
|
|
167
|
+
"width-MenuSeparator": "100%",
|
|
168
|
+
"height-MenuSeparator": "1px",
|
|
169
|
+
"color-MenuSeparator": "$color-border-dropdown-item",
|
|
170
|
+
"margin-horizontal-MenuSeparator": "12px",
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
exports.menuSeparatorRenderer = (0, renderers_1.createComponentRenderer)("MenuSeparator", () => {
|
|
174
|
+
return (0, jsx_runtime_1.jsx)(MenuSeparator, {});
|
|
175
|
+
}, menuSeparatorMetadata);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.emojiSelectorRenderer = void 0;
|
|
36
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
37
|
+
const renderers_1 = require("@components-core/renderers");
|
|
38
|
+
const constants_1 = require("@components-core/constants");
|
|
39
|
+
const emoji_picker_react_1 = __importStar(require("emoji-picker-react"));
|
|
40
|
+
const ThemeContext_1 = require("@components-core/theming/ThemeContext");
|
|
41
|
+
const descriptorHelper_1 = require("@components-core/descriptorHelper");
|
|
42
|
+
const EmojiSelector = ({ select = constants_1.noop, theme = emoji_picker_react_1.Theme.LIGHT, autoFocus = false }) => ((0, jsx_runtime_1.jsx)(emoji_picker_react_1.default, { autoFocusSearch: autoFocus, onEmojiClick: (emojiObject) => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
|
+
yield select(emojiObject.emoji);
|
|
44
|
+
}), lazyLoadEmojis: true, theme: theme, previewConfig: { showPreview: false }, skinTonesDisabled: true, height: 360, emojiStyle: emoji_picker_react_1.EmojiStyle.NATIVE }));
|
|
45
|
+
const metadata = {
|
|
46
|
+
displayName: "EmojiSelector",
|
|
47
|
+
description: "A panel to select an emoji from the available ones",
|
|
48
|
+
events: {
|
|
49
|
+
select: (0, descriptorHelper_1.desc)("Sign that an emoji has been selected"),
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
exports.emojiSelectorRenderer = (0, renderers_1.createComponentRenderer)("EmojiSelector", ({ node, lookupEventHandler, extractValue }) => {
|
|
53
|
+
const onActionSelect = lookupEventHandler("select");
|
|
54
|
+
const theme = (0, ThemeContext_1.useTheme)();
|
|
55
|
+
return ((0, jsx_runtime_1.jsx)(EmojiSelector, { select: onActionSelect, theme: theme.activeThemeTone, autoFocus: extractValue.asOptionalBoolean(node.props.autoFocus) }));
|
|
56
|
+
}, metadata);
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.fileInputRenderer = exports.FileInput = void 0;
|
|
30
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
31
|
+
const react_1 = require("react");
|
|
32
|
+
const Icon_1 = require("@components/Icon/Icon");
|
|
33
|
+
const FileInput_module_scss_1 = __importDefault(require("./FileInput.module.scss"));
|
|
34
|
+
const renderers_1 = require("@components-core/renderers");
|
|
35
|
+
const Button_1 = require("@components/Button/Button");
|
|
36
|
+
const input_abstractions_1 = require("@components/Input/input-abstractions");
|
|
37
|
+
const constants_1 = require("@components-core/constants");
|
|
38
|
+
const react_dropzone_1 = require("react-dropzone");
|
|
39
|
+
const misc_1 = require("@components-core/utils/misc");
|
|
40
|
+
const VisuallyHidden = __importStar(require("@radix-ui/react-visually-hidden"));
|
|
41
|
+
const TextBox_1 = require("@components/TextBox/TextBox");
|
|
42
|
+
const themeVars_1 = require("@components-core/theming/themeVars");
|
|
43
|
+
const descriptorHelper_1 = require("@components-core/descriptorHelper");
|
|
44
|
+
const FileInput = ({ id, enabled = true, buttonLabel = "Browse", buttonIcon, buttonIconPosition, variant, buttonThemeColor, buttonSize, autoFocus, validationStatus, updateState = constants_1.noop, onDidChange = constants_1.noop, onFocus = constants_1.noop, onBlur = constants_1.noop, registerComponentApi, value, initialValue, acceptsFileType, multiple = false, directory = false, }) => {
|
|
45
|
+
// Don't accept any (initial) value if it is not a File array explicitly
|
|
46
|
+
const _initialValue = isFileArray(initialValue) ? initialValue : undefined;
|
|
47
|
+
const _value = isFileArray(value) ? value : undefined;
|
|
48
|
+
const buttonRef = (0, react_1.useRef)(null);
|
|
49
|
+
const _acceptsFileType = typeof acceptsFileType === "string" ? acceptsFileType : acceptsFileType === null || acceptsFileType === void 0 ? void 0 : acceptsFileType.join(",");
|
|
50
|
+
(0, react_1.useEffect)(() => {
|
|
51
|
+
if (autoFocus) {
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
var _a;
|
|
54
|
+
(_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
55
|
+
}, 0);
|
|
56
|
+
}
|
|
57
|
+
}, [autoFocus]);
|
|
58
|
+
// --- Initialize the related field with the input's initial value
|
|
59
|
+
(0, react_1.useEffect)(() => {
|
|
60
|
+
updateState({ value: _initialValue });
|
|
61
|
+
}, [_initialValue, updateState]);
|
|
62
|
+
const handleOnBlur = (0, react_1.useCallback)(() => {
|
|
63
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur();
|
|
64
|
+
}, [onBlur]);
|
|
65
|
+
const focus = (0, react_1.useCallback)(() => {
|
|
66
|
+
var _a;
|
|
67
|
+
(_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
68
|
+
}, []);
|
|
69
|
+
// --- Handle the value change events for this input
|
|
70
|
+
const onDrop = (0, react_1.useCallback)((acceptedFiles) => {
|
|
71
|
+
if (!acceptedFiles.length)
|
|
72
|
+
return;
|
|
73
|
+
updateState({ value: acceptedFiles });
|
|
74
|
+
onDidChange(acceptedFiles);
|
|
75
|
+
}, [updateState, onDidChange]);
|
|
76
|
+
const { getRootProps, getInputProps, open } = (0, react_dropzone_1.useDropzone)({
|
|
77
|
+
disabled: !enabled,
|
|
78
|
+
multiple: multiple || directory,
|
|
79
|
+
onDrop,
|
|
80
|
+
noClick: true,
|
|
81
|
+
noKeyboard: true,
|
|
82
|
+
noDragEventsBubbling: true,
|
|
83
|
+
useFsAccessApi: directory === false,
|
|
84
|
+
});
|
|
85
|
+
// --- Manage obtaining and losing the focus
|
|
86
|
+
const handleOnFocus = (0, react_1.useCallback)(() => {
|
|
87
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus();
|
|
88
|
+
}, [onFocus]);
|
|
89
|
+
const doOpen = (0, misc_1.useEvent)(() => {
|
|
90
|
+
open();
|
|
91
|
+
});
|
|
92
|
+
(0, react_1.useEffect)(() => {
|
|
93
|
+
registerComponentApi === null || registerComponentApi === void 0 ? void 0 : registerComponentApi({
|
|
94
|
+
focus,
|
|
95
|
+
open: doOpen,
|
|
96
|
+
});
|
|
97
|
+
}, [focus, doOpen, registerComponentApi]);
|
|
98
|
+
// Solution source: https://stackoverflow.com/questions/1084925/input-type-file-show-only-button
|
|
99
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: FileInput_module_scss_1.default.container, children: [(0, jsx_runtime_1.jsxs)("button", Object.assign({}, getRootProps({
|
|
100
|
+
tabIndex: 0,
|
|
101
|
+
onFocus: handleOnFocus,
|
|
102
|
+
onBlur: handleOnBlur,
|
|
103
|
+
disabled: !enabled,
|
|
104
|
+
className: FileInput_module_scss_1.default.textBoxWrapper,
|
|
105
|
+
onClick: open,
|
|
106
|
+
ref: buttonRef,
|
|
107
|
+
type: "button",
|
|
108
|
+
}), { children: [(0, jsx_runtime_1.jsx)(VisuallyHidden.Root, { children: (0, jsx_runtime_1.jsx)("input", Object.assign({}, getInputProps({ webkitdirectory: directory ? "true" : undefined }), { accept: _acceptsFileType })) }), (0, jsx_runtime_1.jsx)(TextBox_1.TextBox, { enabled: enabled, value: (_value === null || _value === void 0 ? void 0 : _value.map((v) => v.name).join(", ")) || "", validationStatus: validationStatus, readOnly: true, tabIndex: -1 })] })), (0, jsx_runtime_1.jsx)(Button_1.Button, { id: id, disabled: !enabled, type: "button", onClick: open, icon: buttonIcon, iconPosition: buttonIconPosition, variant: variant, themeColor: buttonThemeColor, size: buttonSize, className: FileInput_module_scss_1.default.button, autoFocus: autoFocus, children: buttonLabel })] }));
|
|
109
|
+
};
|
|
110
|
+
exports.FileInput = FileInput;
|
|
111
|
+
const metadata = {
|
|
112
|
+
displayName: "FileInputBox",
|
|
113
|
+
description: "Represents an input component for textual data entry",
|
|
114
|
+
props: Object.assign(Object.assign(Object.assign({}, input_abstractions_1.inputComponentPropertyDescriptors), Button_1.buttonStylingProps), { buttonLabel: (0, descriptorHelper_1.desc)("The label of the button that opens the file dialog"), buttonIcon: (0, descriptorHelper_1.desc)("The ID of the icon to display in the button"), buttonIconPosition: (0, descriptorHelper_1.desc)("The position of the icon within the button (left, right)"), acceptsFileType: (0, descriptorHelper_1.desc)("A list of file types the open dialog accepts"), multiple: (0, descriptorHelper_1.desc)("Allow selecting multiple files?"), directory: (0, descriptorHelper_1.desc)("Allow selecting a directory?"), buttonSize: (0, descriptorHelper_1.desc)("The size of the button"), buttonThemeColor: (0, descriptorHelper_1.desc)("The theme color of the button") }),
|
|
115
|
+
events: input_abstractions_1.inputComponentEventDescriptors,
|
|
116
|
+
themeVars: (0, themeVars_1.parseScssVar)(FileInput_module_scss_1.default.themeVars),
|
|
117
|
+
};
|
|
118
|
+
exports.fileInputRenderer = (0, renderers_1.createComponentRenderer)("FileInput", ({ node, state, updateState, extractValue, lookupEventHandler, registerComponentApi }) => {
|
|
119
|
+
const iconName = extractValue.asString(node.props.buttonIcon);
|
|
120
|
+
return ((0, jsx_runtime_1.jsx)(exports.FileInput, { enabled: extractValue.asOptionalBoolean(node.props.enabled), variant: extractValue(node.props.variant), buttonThemeColor: extractValue(node.props.buttonThemeColor), buttonSize: extractValue(node.props.buttonSize), buttonIcon: (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: iconName }), buttonIconPosition: extractValue(node.props.buttonIconPosition), buttonLabel: extractValue.asOptionalString(node.props.buttonLabel), updateState: updateState, value: isFileArray(state === null || state === void 0 ? void 0 : state.value) ? state === null || state === void 0 ? void 0 : state.value : undefined, autoFocus: extractValue.asOptionalBoolean(node.props.autoFocus), onDidChange: lookupEventHandler("didChange"), onFocus: lookupEventHandler("gotFocus"), onBlur: lookupEventHandler("lostFocus"), validationStatus: extractValue(node.props.validationStatus), registerComponentApi: registerComponentApi, multiple: extractValue.asOptionalBoolean(node.props.multiple), directory: extractValue.asOptionalBoolean(node.props.directory), initialValue: extractValue(node.props.initialValue), acceptsFileType: extractValue(node.props.acceptsFileType) }));
|
|
121
|
+
}, metadata);
|
|
122
|
+
function isFile(value) {
|
|
123
|
+
return value instanceof File;
|
|
124
|
+
}
|
|
125
|
+
function isFileArray(value) {
|
|
126
|
+
return Array.isArray(value) && value.every(isFile);
|
|
127
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.fileUploadDropZoneComponentRenderer = void 0;
|
|
16
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
17
|
+
const react_1 = require("react");
|
|
18
|
+
const react_dropzone_1 = require("react-dropzone");
|
|
19
|
+
const Icon_1 = require("@components/Icon/Icon");
|
|
20
|
+
const FileUploadDropZone_module_scss_1 = __importDefault(require("./FileUploadDropZone.module.scss"));
|
|
21
|
+
const misc_1 = require("@components-core/utils/misc");
|
|
22
|
+
const renderers_1 = require("@components-core/renderers");
|
|
23
|
+
const constants_1 = require("@components-core/constants");
|
|
24
|
+
const descriptorHelper_1 = require("@components-core/descriptorHelper");
|
|
25
|
+
const themeVars_1 = require("@components-core/theming/themeVars");
|
|
26
|
+
function FileUploadDropZone({ children, onUpload = constants_1.asyncNoop, uid = "fileUploadDialog", registerComponentApi, style, allowPaste = true, text = "Drop files here", disabled = false, }) {
|
|
27
|
+
const onDrop = (0, react_1.useCallback)((acceptedFiles) => __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
if (!acceptedFiles.length) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
onUpload === null || onUpload === void 0 ? void 0 : onUpload(acceptedFiles);
|
|
32
|
+
}), [onUpload]);
|
|
33
|
+
const { getRootProps, getInputProps, isDragActive, open, inputRef } = (0, react_dropzone_1.useDropzone)({
|
|
34
|
+
onDrop,
|
|
35
|
+
noClick: true,
|
|
36
|
+
noKeyboard: true,
|
|
37
|
+
noDragEventsBubbling: true,
|
|
38
|
+
disabled,
|
|
39
|
+
});
|
|
40
|
+
const doOpen = (0, misc_1.useEvent)(() => {
|
|
41
|
+
open();
|
|
42
|
+
});
|
|
43
|
+
const handleOnPaste = (0, react_1.useCallback)((event) => {
|
|
44
|
+
var _a, _b;
|
|
45
|
+
if (!allowPaste) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (!inputRef.current) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if ((_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.files) {
|
|
52
|
+
const items = ((_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.items) || [];
|
|
53
|
+
const files = [];
|
|
54
|
+
for (let i = 0; i < items.length; i++) {
|
|
55
|
+
const item = items[i];
|
|
56
|
+
if (item.kind === "file") {
|
|
57
|
+
const file = item.getAsFile();
|
|
58
|
+
if (file !== null) {
|
|
59
|
+
files.push(file);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (files.length > 0) {
|
|
64
|
+
//the clipboardData.files doesn't necessarily contains files... so we have to double check it
|
|
65
|
+
event.stopPropagation(); //it's for nested file upload dropzones
|
|
66
|
+
event.preventDefault(); // and this one is for preventing to paste in the file name, if we a have stored file on the clipboard (copied from finder/windows explorer for example)
|
|
67
|
+
//stolen from here: https://github.com/react-dropzone/react-dropzone/issues/1210#issuecomment-1537862105
|
|
68
|
+
inputRef.current.files = event.clipboardData.files;
|
|
69
|
+
inputRef.current.dispatchEvent(new Event("change", { bubbles: true }));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}, [allowPaste, inputRef]);
|
|
73
|
+
(0, react_1.useEffect)(() => {
|
|
74
|
+
registerComponentApi({
|
|
75
|
+
open: doOpen,
|
|
76
|
+
});
|
|
77
|
+
}, [doOpen, registerComponentApi, uid]);
|
|
78
|
+
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({}, getRootProps(), { style: style, className: FileUploadDropZone_module_scss_1.default.wrapper, onPaste: handleOnPaste, children: [(0, jsx_runtime_1.jsx)("input", Object.assign({}, getInputProps())), children, isDragActive && ((0, jsx_runtime_1.jsxs)("div", { className: FileUploadDropZone_module_scss_1.default.dropPlaceholder, children: [(0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: "upload" }), text] }))] })));
|
|
79
|
+
}
|
|
80
|
+
const metadata = {
|
|
81
|
+
displayName: "FileUploadDropZone",
|
|
82
|
+
description: "A screen area to drop files to upload",
|
|
83
|
+
props: {
|
|
84
|
+
text: (0, descriptorHelper_1.desc)("Text to display"),
|
|
85
|
+
allowPaste: (0, descriptorHelper_1.desc)("Allow paste files?"),
|
|
86
|
+
},
|
|
87
|
+
events: {
|
|
88
|
+
upload: (0, descriptorHelper_1.desc)("Triggered when a file is about to upload"),
|
|
89
|
+
},
|
|
90
|
+
themeVars: (0, themeVars_1.parseScssVar)(FileUploadDropZone_module_scss_1.default.themeVars),
|
|
91
|
+
defaultThemeVars: {
|
|
92
|
+
"color-bg-FileUploadDropZone": "$color-bg",
|
|
93
|
+
"color-bg-dropping-FileUploadDropZone": "$color-bg--selected",
|
|
94
|
+
"opacity-dropping-FileUploadDropZone": "0.5",
|
|
95
|
+
"color-text-FileUploadDropZone": "$color-text",
|
|
96
|
+
light: {
|
|
97
|
+
// --- No light-specific theme vars
|
|
98
|
+
},
|
|
99
|
+
dark: {
|
|
100
|
+
// --- No dark-specific theme vars
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
exports.fileUploadDropZoneComponentRenderer = (0, renderers_1.createComponentRenderer)("FileUploadDropZone", ({ node, extractValue, renderChild, lookupEventHandler, registerComponentApi, layoutCss }) => {
|
|
105
|
+
return ((0, jsx_runtime_1.jsx)(FileUploadDropZone, { onUpload: lookupEventHandler("upload"), uid: extractValue(node.uid), registerComponentApi: registerComponentApi, style: layoutCss, allowPaste: extractValue(node.props.allowPaste), text: extractValue(node.props.text), disabled: !extractValue.asOptionalBoolean(node.props.enabled, true), children: renderChild(node.children, { type: "Stack" }) }));
|
|
106
|
+
}, metadata);
|
|
@@ -0,0 +1,139 @@
|
|
|
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.flowLayoutComponentRenderer = void 0;
|
|
18
|
+
exports.FlowLayout = FlowLayout;
|
|
19
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
20
|
+
const react_1 = require("react");
|
|
21
|
+
const FlowLayout_module_scss_1 = __importDefault(require("./FlowLayout.module.scss"));
|
|
22
|
+
const renderers_1 = require("@components-core/renderers");
|
|
23
|
+
const misc_1 = require("@components-core/utils/misc");
|
|
24
|
+
const EngineError_1 = require("@components-core/EngineError");
|
|
25
|
+
const classnames_1 = __importDefault(require("@components-core/utils/classnames"));
|
|
26
|
+
const style_compiler_1 = require("../../parsers/style-parser/style-compiler");
|
|
27
|
+
const ThemeContext_1 = require("@components-core/theming/ThemeContext");
|
|
28
|
+
const themeVars_1 = require("@components-core/theming/themeVars");
|
|
29
|
+
const descriptorHelper_1 = require("@components-core/descriptorHelper");
|
|
30
|
+
const lodash_es_1 = require("lodash-es");
|
|
31
|
+
const css_utils_1 = require("@components-core/utils/css-utils");
|
|
32
|
+
const hooks_1 = require("@components-core/utils/hooks");
|
|
33
|
+
const resolvedCssVars = {};
|
|
34
|
+
const FlowLayoutContext = (0, react_1.createContext)({
|
|
35
|
+
rowGap: 0,
|
|
36
|
+
columnGap: 0,
|
|
37
|
+
setNumberOfChildren: lodash_es_1.noop,
|
|
38
|
+
});
|
|
39
|
+
function FlowItemWrapper(_a) {
|
|
40
|
+
var { children } = _a, restProps = __rest(_a, ["children"]);
|
|
41
|
+
const { rowGap, columnGap, setNumberOfChildren } = (0, react_1.useContext)(FlowLayoutContext);
|
|
42
|
+
(0, hooks_1.useIsomorphicLayoutEffect)(() => {
|
|
43
|
+
setNumberOfChildren((prev) => prev + 1);
|
|
44
|
+
return () => {
|
|
45
|
+
setNumberOfChildren((prev) => prev - 1);
|
|
46
|
+
};
|
|
47
|
+
}, [setNumberOfChildren]);
|
|
48
|
+
const { activeTheme, root } = (0, ThemeContext_1.useTheme)();
|
|
49
|
+
const _width = restProps.width || "100%";
|
|
50
|
+
const _minWidth = restProps.minWidth || undefined;
|
|
51
|
+
const _maxWidth = restProps.maxWidth || undefined;
|
|
52
|
+
const { width = _width, minWidth, maxWidth, flex, } = (0, react_1.useMemo)(() => {
|
|
53
|
+
return ((0, style_compiler_1.compileLayout)({ width: _width, maxWidth: _maxWidth, minWidth: _minWidth }, activeTheme.themeVars, {
|
|
54
|
+
type: "Stack",
|
|
55
|
+
orientation: "horizontal",
|
|
56
|
+
}).cssProps || {});
|
|
57
|
+
}, [_maxWidth, _minWidth, _width, activeTheme.themeVars]);
|
|
58
|
+
const resolvedWidth = (0, react_1.useMemo)(() => {
|
|
59
|
+
if (width && typeof width === "string" && width.startsWith("var(")) {
|
|
60
|
+
if (!resolvedCssVars[width]) {
|
|
61
|
+
const varName = width.substring(4, width.length - 1);
|
|
62
|
+
const resolved = getComputedStyle(root).getPropertyValue(varName);
|
|
63
|
+
resolvedCssVars[width] = resolved || _width;
|
|
64
|
+
}
|
|
65
|
+
return resolvedCssVars[width];
|
|
66
|
+
}
|
|
67
|
+
return width || _width;
|
|
68
|
+
}, [_width, root, width]);
|
|
69
|
+
const isWidthPercentage = typeof resolvedWidth === "string" && resolvedWidth.endsWith("%");
|
|
70
|
+
const _columnGap = (0, css_utils_1.normalizeCssValueForCalc)(columnGap);
|
|
71
|
+
const isViewportPhone = (0, hooks_1.useMediaQuery)("(max-width: 420px)"); //TODO useContainerQuery
|
|
72
|
+
const isViewportTablet = (0, hooks_1.useMediaQuery)("(max-width: 800px)");
|
|
73
|
+
const outerWrapperStyle = {
|
|
74
|
+
minWidth,
|
|
75
|
+
maxWidth,
|
|
76
|
+
width: isWidthPercentage
|
|
77
|
+
? `min(${width} * ${isViewportPhone ? "8" : isViewportTablet ? "4" : "1"}, 100%)`
|
|
78
|
+
: `min(calc(${width} + ${_columnGap}), 100%)`,
|
|
79
|
+
paddingBottom: rowGap,
|
|
80
|
+
flex,
|
|
81
|
+
};
|
|
82
|
+
const isStarSizing = flex !== undefined;
|
|
83
|
+
if (isStarSizing) {
|
|
84
|
+
//star sizing
|
|
85
|
+
outerWrapperStyle.width = "100%";
|
|
86
|
+
outerWrapperStyle.minWidth = minWidth || "1px";
|
|
87
|
+
}
|
|
88
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: outerWrapperStyle, children: (0, jsx_runtime_1.jsx)("div", { style: { paddingRight: _columnGap }, className: FlowLayout_module_scss_1.default.flowItem, children: children }) }), isStarSizing && (0, jsx_runtime_1.jsx)("div", { className: FlowLayout_module_scss_1.default.break })] }));
|
|
89
|
+
}
|
|
90
|
+
function FlowLayout({ style, columnGap, rowGap, children }) {
|
|
91
|
+
const [numberOfChildren, setNumberOfChildren] = (0, react_1.useState)(0);
|
|
92
|
+
const safeColumnGap = numberOfChildren === 1 ? 0 : columnGap;
|
|
93
|
+
// --- Be smart about rowGap
|
|
94
|
+
const _rowGap = (0, css_utils_1.getSizeString)(rowGap);
|
|
95
|
+
const _columnGap = (0, css_utils_1.getSizeString)(safeColumnGap);
|
|
96
|
+
const outerStyle = Object.assign({ overflow: "auto" }, style);
|
|
97
|
+
const innerStyle = {
|
|
98
|
+
// We put a negative margin on the container to fill the space for the row's last columnGap
|
|
99
|
+
marginRight: `calc(-1 * ${_columnGap})`,
|
|
100
|
+
marginBottom: `calc(-1 * ${_rowGap})`,
|
|
101
|
+
};
|
|
102
|
+
const flowLayoutContextValue = (0, react_1.useMemo)(() => {
|
|
103
|
+
return {
|
|
104
|
+
rowGap: _rowGap,
|
|
105
|
+
columnGap: _columnGap,
|
|
106
|
+
setNumberOfChildren,
|
|
107
|
+
};
|
|
108
|
+
}, [_columnGap, _rowGap]);
|
|
109
|
+
return ((0, jsx_runtime_1.jsx)(FlowLayoutContext.Provider, { value: flowLayoutContextValue, children: (0, jsx_runtime_1.jsx)("div", { style: outerStyle, children: (0, jsx_runtime_1.jsx)("div", { style: { overflow: "hidden" }, children: (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(FlowLayout_module_scss_1.default.flowContainer, FlowLayout_module_scss_1.default.horizontal), style: innerStyle, children: children }) }) }) }));
|
|
110
|
+
}
|
|
111
|
+
const metadata = {
|
|
112
|
+
displayName: "FlowLayout",
|
|
113
|
+
description: "",
|
|
114
|
+
props: {
|
|
115
|
+
columnGap: (0, descriptorHelper_1.desc)("Gap between flow layout items in a row"),
|
|
116
|
+
rowGap: (0, descriptorHelper_1.desc)("Gap between flow layout rows"),
|
|
117
|
+
},
|
|
118
|
+
themeVars: (0, themeVars_1.parseScssVar)(FlowLayout_module_scss_1.default.themeVars),
|
|
119
|
+
};
|
|
120
|
+
exports.flowLayoutComponentRenderer = (0, renderers_1.createComponentRenderer)("FlowLayout", ({ node, renderChild, layoutCss, extractValue }) => {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
if (!(0, misc_1.isComponentDefChildren)(node.children)) {
|
|
123
|
+
throw new EngineError_1.NotAComponentDefError();
|
|
124
|
+
}
|
|
125
|
+
// Only calculate column gaps if there are more than 1 child
|
|
126
|
+
const columnGap = extractValue.asSize((_a = node.props) === null || _a === void 0 ? void 0 : _a.columnGap) || layoutCss.gap || 0;
|
|
127
|
+
const rowGap = extractValue.asSize((_b = node.props) === null || _b === void 0 ? void 0 : _b.rowGap) || layoutCss.gap || 0;
|
|
128
|
+
return ((0, jsx_runtime_1.jsx)(FlowLayout, { style: layoutCss, columnGap: columnGap, rowGap: rowGap, children: renderChild(node.children, {
|
|
129
|
+
wrapChild: ({ node, extractValue }, renderedChild, hints) => {
|
|
130
|
+
var _a, _b, _c;
|
|
131
|
+
if (hints === null || hints === void 0 ? void 0 : hints.opaque) {
|
|
132
|
+
return renderedChild;
|
|
133
|
+
}
|
|
134
|
+
// Handle SpaceFiller as a * width item
|
|
135
|
+
const width = node.type === "SpaceFiller" ? "*" : extractValue((_a = node.props) === null || _a === void 0 ? void 0 : _a.width);
|
|
136
|
+
return ((0, jsx_runtime_1.jsx)(FlowItemWrapper, { width: width, minWidth: extractValue((_b = node.props) === null || _b === void 0 ? void 0 : _b.minWidth), maxWidth: extractValue((_c = node.props) === null || _c === void 0 ? void 0 : _c.maxWidth), children: renderedChild }));
|
|
137
|
+
},
|
|
138
|
+
}) }));
|
|
139
|
+
}, metadata);
|
|
@@ -0,0 +1,42 @@
|
|
|
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.footerRenderer = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const Footer_module_scss_1 = __importDefault(require("./Footer.module.scss"));
|
|
9
|
+
const renderers_1 = require("@components-core/renderers");
|
|
10
|
+
const themeVars_1 = require("@components-core/theming/themeVars");
|
|
11
|
+
const base_utils_1 = require("@components-core/theming/themes/base-utils");
|
|
12
|
+
const AppLayoutContext_1 = require("@components/App/AppLayoutContext");
|
|
13
|
+
const react_dom_1 = require("react-dom");
|
|
14
|
+
const classnames_1 = __importDefault(require("@components-core/utils/classnames"));
|
|
15
|
+
// =====================================================================================================================
|
|
16
|
+
// React Footer component implementation
|
|
17
|
+
function Footer({ children, style, className, }) {
|
|
18
|
+
const appLayoutContext = (0, AppLayoutContext_1.useAppLayoutContext)();
|
|
19
|
+
const content = ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(Footer_module_scss_1.default.wrapper, className), style: style, children: children }));
|
|
20
|
+
const { footerRoot } = appLayoutContext || {};
|
|
21
|
+
if (footerRoot) {
|
|
22
|
+
return (0, react_dom_1.createPortal)(content, footerRoot);
|
|
23
|
+
}
|
|
24
|
+
return content;
|
|
25
|
+
}
|
|
26
|
+
const metadata = {
|
|
27
|
+
displayName: "Footer",
|
|
28
|
+
description: "Display an application footer",
|
|
29
|
+
themeVars: (0, themeVars_1.parseScssVar)(Footer_module_scss_1.default.themeVars),
|
|
30
|
+
defaultThemeVars: Object.assign(Object.assign({ "color-bg-Footer": "$color-bg-AppHeader", "vertical-alignment-Footer": "center", "max-content-width-Footer": "$max-content-width-App" }, (0, base_utils_1.paddingSubject)("Footer", { horizontal: "$space-4", vertical: "$space-1" })), { light: {
|
|
31
|
+
// --- No light-specific theme vars
|
|
32
|
+
}, dark: {
|
|
33
|
+
// --- No dark-specific theme vars
|
|
34
|
+
} }),
|
|
35
|
+
};
|
|
36
|
+
exports.footerRenderer = (0, renderers_1.createComponentRenderer)("Footer", ({ node, renderChild, layoutCss, layoutContext }) => {
|
|
37
|
+
return ((0, jsx_runtime_1.jsx)(Footer, { style: layoutCss, className: layoutContext === null || layoutContext === void 0 ? void 0 : layoutContext.themeClassName, children: renderChild(node.children, {
|
|
38
|
+
// Since the Footer is a flex container, it's children should behave the same as in a stack
|
|
39
|
+
type: "Stack",
|
|
40
|
+
orientation: "horizontal"
|
|
41
|
+
}) }));
|
|
42
|
+
}, metadata);
|