@qoretechnologies/reqraft 0.10.25 → 0.10.26
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/.claude/CLAUDE.md +52 -23
- package/design/COMPACT_ENGINE_REDESIGN.md +156 -0
- package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +353 -0
- package/dist/components/FocusedEditing/index.d.ts +9 -1
- package/dist/components/FocusedEditing/index.d.ts.map +1 -1
- package/dist/components/FocusedEditing/index.js +2 -2
- package/dist/components/FocusedEditing/index.js.map +1 -1
- package/dist/components/composer/Composer.d.ts +108 -0
- package/dist/components/composer/Composer.d.ts.map +1 -0
- package/dist/components/composer/Composer.js +238 -0
- package/dist/components/composer/Composer.js.map +1 -0
- package/dist/components/composer/helpers.d.ts +21 -0
- package/dist/components/composer/helpers.d.ts.map +1 -0
- package/dist/components/composer/helpers.js +75 -0
- package/dist/components/composer/helpers.js.map +1 -0
- package/dist/components/composer/index.d.ts +3 -0
- package/dist/components/composer/index.d.ts.map +1 -0
- package/dist/components/composer/index.js +19 -0
- package/dist/components/composer/index.js.map +1 -0
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +307 -110
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +123 -106
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +107 -11
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +618 -179
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +9 -0
- package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowContext.js.map +1 -1
- package/dist/components/form/engine/compactRowStyles.d.ts +7 -3
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +88 -51
- package/dist/components/form/engine/compactRowStyles.js.map +1 -1
- package/dist/components/form/engine/compactToolbarContext.d.ts +1 -0
- package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
- package/dist/components/form/engine/optionActions.d.ts +28 -0
- package/dist/components/form/engine/optionActions.d.ts.map +1 -0
- package/dist/components/form/engine/optionActions.js +18 -0
- package/dist/components/form/engine/optionActions.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +63 -2
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +121 -6
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/rendererTypes.d.ts +35 -0
- package/dist/components/form/engine/rendererTypes.d.ts.map +1 -0
- package/dist/components/form/engine/rendererTypes.js +63 -0
- package/dist/components/form/engine/rendererTypes.js.map +1 -0
- package/dist/components/form/engine/variants/VariantCalmTable.d.ts +6 -0
- package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -0
- package/dist/components/form/engine/variants/VariantCalmTable.js +94 -0
- package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -0
- package/dist/components/form/engine/variants/VariantCards.d.ts +6 -0
- package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -0
- package/dist/components/form/engine/variants/VariantCards.js +80 -0
- package/dist/components/form/engine/variants/VariantCards.js.map +1 -0
- package/dist/components/form/engine/variants/VariantFocus.d.ts +7 -0
- package/dist/components/form/engine/variants/VariantFocus.d.ts.map +1 -0
- package/dist/components/form/engine/variants/VariantFocus.js +138 -0
- package/dist/components/form/engine/variants/VariantFocus.js.map +1 -0
- package/dist/components/form/engine/variants/VariantMinimal.d.ts +6 -0
- package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -0
- package/dist/components/form/engine/variants/VariantMinimal.js +73 -0
- package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -0
- package/dist/components/form/engine/variants/focusDemo.d.ts +13 -0
- package/dist/components/form/engine/variants/focusDemo.d.ts.map +1 -0
- package/dist/components/form/engine/variants/focusDemo.js +139 -0
- package/dist/components/form/engine/variants/focusDemo.js.map +1 -0
- package/dist/components/form/engine/variants/variantModel.d.ts +70 -0
- package/dist/components/form/engine/variants/variantModel.d.ts.map +1 -0
- package/dist/components/form/engine/variants/variantModel.js +133 -0
- package/dist/components/form/engine/variants/variantModel.js.map +1 -0
- package/dist/components/form/engine/variants/variantParts.d.ts +79 -0
- package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -0
- package/dist/components/form/engine/variants/variantParts.js +191 -0
- package/dist/components/form/engine/variants/variantParts.js.map +1 -0
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +13 -2
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/useExpressions.d.ts.map +1 -1
- package/dist/components/form/expressions/useExpressions.js +4 -1
- package/dist/components/form/expressions/useExpressions.js.map +1 -1
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +5 -3
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +2 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +8 -26
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts +3 -0
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +42 -8
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/binary/Binary.d.ts +15 -0
- package/dist/components/form/fields/binary/Binary.d.ts.map +1 -0
- package/dist/components/form/fields/binary/Binary.js +74 -0
- package/dist/components/form/fields/binary/Binary.js.map +1 -0
- package/dist/components/form/fields/boolean/Boolean.js +1 -1
- package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js +5 -4
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +29 -12
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.d.ts +8 -2
- package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.js +52 -16
- package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +2 -0
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.d.ts +21 -0
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -0
- package/dist/components/imageLightbox/ImageLightbox.js +169 -0
- package/dist/components/imageLightbox/ImageLightbox.js.map +1 -0
- package/dist/components/imageLightbox/index.d.ts +2 -0
- package/dist/components/imageLightbox/index.d.ts.map +1 -0
- package/dist/components/imageLightbox/index.js +18 -0
- package/dist/components/imageLightbox/index.js.map +1 -0
- package/dist/components/searchFilterBar/SearchFilterBar.d.ts +33 -0
- package/dist/components/searchFilterBar/SearchFilterBar.d.ts.map +1 -0
- package/dist/components/searchFilterBar/SearchFilterBar.js +76 -0
- package/dist/components/searchFilterBar/SearchFilterBar.js.map +1 -0
- package/dist/components/searchFilterBar/index.d.ts +2 -0
- package/dist/components/searchFilterBar/index.d.ts.map +1 -0
- package/dist/components/searchFilterBar/index.js +18 -0
- package/dist/components/searchFilterBar/index.js.map +1 -0
- package/dist/components/supportTicket/AttachmentChips.d.ts +10 -0
- package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -0
- package/dist/components/supportTicket/AttachmentChips.js +122 -0
- package/dist/components/supportTicket/AttachmentChips.js.map +1 -0
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +43 -0
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -0
- package/dist/components/supportTicket/InterfaceReferenceTags.js +31 -0
- package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -0
- package/dist/components/supportTicket/ReferencePicker.d.ts +87 -0
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -0
- package/dist/components/supportTicket/ReferencePicker.js +295 -0
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -0
- package/dist/components/supportTicket/TicketHeader.d.ts +86 -0
- package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -0
- package/dist/components/supportTicket/TicketHeader.js +149 -0
- package/dist/components/supportTicket/TicketHeader.js.map +1 -0
- package/dist/components/supportTicket/TicketMetaTags.d.ts +32 -0
- package/dist/components/supportTicket/TicketMetaTags.d.ts.map +1 -0
- package/dist/components/supportTicket/TicketMetaTags.js +21 -0
- package/dist/components/supportTicket/TicketMetaTags.js.map +1 -0
- package/dist/components/supportTicket/TicketReplyBox.d.ts +63 -0
- package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -0
- package/dist/components/supportTicket/TicketReplyBox.js +115 -0
- package/dist/components/supportTicket/TicketReplyBox.js.map +1 -0
- package/dist/components/supportTicket/attachmentAccess.d.ts +37 -0
- package/dist/components/supportTicket/attachmentAccess.d.ts.map +1 -0
- package/dist/components/supportTicket/attachmentAccess.js +132 -0
- package/dist/components/supportTicket/attachmentAccess.js.map +1 -0
- package/dist/components/supportTicket/fileToAttachment.d.ts +9 -0
- package/dist/components/supportTicket/fileToAttachment.d.ts.map +1 -0
- package/dist/components/supportTicket/fileToAttachment.js +28 -0
- package/dist/components/supportTicket/fileToAttachment.js.map +1 -0
- package/dist/components/supportTicket/index.d.ts +11 -0
- package/dist/components/supportTicket/index.d.ts.map +1 -0
- package/dist/components/supportTicket/index.js +27 -0
- package/dist/components/supportTicket/index.js.map +1 -0
- package/dist/components/supportTicket/meta.d.ts +71 -0
- package/dist/components/supportTicket/meta.d.ts.map +1 -0
- package/dist/components/supportTicket/meta.js +115 -0
- package/dist/components/supportTicket/meta.js.map +1 -0
- package/dist/components/supportTicket/ticketModel.d.ts +102 -0
- package/dist/components/supportTicket/ticketModel.d.ts.map +1 -0
- package/dist/components/supportTicket/ticketModel.js +3 -0
- package/dist/components/supportTicket/ticketModel.js.map +1 -0
- package/dist/components/ticketReferences/TicketReferences.d.ts +52 -0
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -0
- package/dist/components/ticketReferences/TicketReferences.js +492 -0
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -0
- package/dist/components/ticketReferences/index.d.ts +3 -0
- package/dist/components/ticketReferences/index.d.ts.map +1 -0
- package/dist/components/ticketReferences/index.js +6 -0
- package/dist/components/ticketReferences/index.js.map +1 -0
- package/dist/components/ticketThread/TicketThread.d.ts +57 -0
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -0
- package/dist/components/ticketThread/TicketThread.js +299 -0
- package/dist/components/ticketThread/TicketThread.js.map +1 -0
- package/dist/components/ticketThread/index.d.ts +3 -0
- package/dist/components/ticketThread/index.d.ts.map +1 -0
- package/dist/components/ticketThread/index.js +7 -0
- package/dist/components/ticketThread/index.js.map +1 -0
- package/dist/helpers/common.d.ts +5 -0
- package/dist/helpers/common.d.ts.map +1 -1
- package/dist/helpers/common.js +20 -1
- package/dist/helpers/common.js.map +1 -1
- package/dist/helpers/scrollbar.d.ts +2 -0
- package/dist/helpers/scrollbar.d.ts.map +1 -0
- package/dist/helpers/scrollbar.js +25 -0
- package/dist/helpers/scrollbar.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/StorageProvider.d.ts +13 -0
- package/dist/providers/StorageProvider.d.ts.map +1 -1
- package/dist/providers/StorageProvider.js +29 -5
- package/dist/providers/StorageProvider.js.map +1 -1
- package/package.json +6 -5
- package/src/components/FocusedEditing/index.tsx +17 -2
- package/src/components/composer/Composer.stories.tsx +238 -0
- package/src/components/composer/Composer.tsx +545 -0
- package/src/components/composer/helpers.ts +74 -0
- package/src/components/composer/index.ts +2 -0
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +74 -2
- package/src/components/form/engine/CompactRow.tsx +561 -283
- package/src/components/form/engine/CompactToolbar.tsx +216 -182
- package/src/components/form/engine/FormEngine.stories.tsx +1736 -162
- package/src/components/form/engine/FormEngine.tsx +886 -170
- package/src/components/form/engine/FormEngineRemote.stories.tsx +377 -0
- package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +8 -0
- package/src/components/form/engine/compactRowContext.ts +14 -0
- package/src/components/form/engine/compactRowStyles.ts +273 -146
- package/src/components/form/engine/compactToolbarContext.ts +1 -0
- package/src/components/form/engine/optionActions.ts +40 -0
- package/src/components/form/engine/readFirst.ts +169 -10
- package/src/components/form/engine/rendererTypes.ts +55 -0
- package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +159 -0
- package/src/components/form/engine/variants/VariantCalmTable.tsx +242 -0
- package/src/components/form/engine/variants/VariantCards.tsx +212 -0
- package/src/components/form/engine/variants/VariantFocus.tsx +382 -0
- package/src/components/form/engine/variants/VariantMinimal.tsx +170 -0
- package/src/components/form/engine/variants/focusDemo.ts +145 -0
- package/src/components/form/engine/variants/variantModel.ts +216 -0
- package/src/components/form/engine/variants/variantParts.tsx +313 -0
- package/src/components/form/expressions/ExpressionField.stories.tsx +84 -2
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +213 -19
- package/src/components/form/expressions/builder/index.tsx +12 -1
- package/src/components/form/expressions/useExpressions.ts +4 -1
- package/src/components/form/fields/Field.stories.tsx +40 -0
- package/src/components/form/fields/Field.tsx +10 -1
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +13 -36
- package/src/components/form/fields/array/ArrayAutoField.stories.tsx +64 -0
- package/src/components/form/fields/auto/AutoFormField.stories.tsx +146 -2
- package/src/components/form/fields/auto/AutoFormField.tsx +42 -1
- package/src/components/form/fields/binary/Binary.stories.tsx +122 -0
- package/src/components/form/fields/binary/Binary.tsx +81 -0
- package/src/components/form/fields/boolean/Boolean.stories.tsx +58 -0
- package/src/components/form/fields/boolean/Boolean.tsx +1 -1
- package/src/components/form/fields/byte-size/ByteSize.stories.tsx +24 -0
- package/src/components/form/fields/color/Color.stories.tsx +30 -0
- package/src/components/form/fields/cron/Cron.stories.tsx +8 -0
- package/src/components/form/fields/date/Date.stories.tsx +22 -0
- package/src/components/form/fields/file/File.stories.tsx +48 -0
- package/src/components/form/fields/long-string/LongString.stories.tsx +24 -0
- package/src/components/form/fields/markdown/Markdown.stories.tsx +8 -0
- package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +14 -10
- package/src/components/form/fields/number/Number.stories.tsx +31 -0
- package/src/components/form/fields/object/Object.stories.tsx +88 -0
- package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +24 -0
- package/src/components/form/fields/rich-text/RichText.stories.tsx +23 -0
- package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +72 -0
- package/src/components/form/fields/select/Select.stories.tsx +108 -0
- package/src/components/form/fields/select/Select.tsx +38 -12
- package/src/components/form/fields/select/SelectCollection.tsx +78 -17
- package/src/components/form/fields/string/String.stories.tsx +16 -0
- package/src/components/form/fields/template/TemplateField.stories.tsx +160 -0
- package/src/components/form/fields/url/Url.stories.tsx +24 -0
- package/src/components/form/index.tsx +2 -0
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +238 -0
- package/src/components/imageLightbox/ImageLightbox.tsx +236 -0
- package/src/components/imageLightbox/index.ts +1 -0
- package/src/components/log/Log.stories.tsx +96 -0
- package/src/components/menu/Menu.stories.tsx +54 -0
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +83 -37
- package/src/components/searchFilterBar/SearchFilterBar.tsx +131 -0
- package/src/components/searchFilterBar/index.ts +1 -0
- package/src/components/smartEditor/SmartEditor.stories.tsx +32 -0
- package/src/components/supportTicket/AttachmentChips.stories.tsx +171 -0
- package/src/components/supportTicket/AttachmentChips.tsx +147 -0
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +171 -0
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +96 -0
- package/src/components/supportTicket/ReferencePicker.stories.tsx +519 -0
- package/src/components/supportTicket/ReferencePicker.tsx +563 -0
- package/src/components/supportTicket/TicketConversation.stories.tsx +121 -0
- package/src/components/supportTicket/TicketHeader.stories.tsx +183 -0
- package/src/components/supportTicket/TicketHeader.tsx +247 -0
- package/src/components/supportTicket/TicketMetaTags.stories.tsx +103 -0
- package/src/components/supportTicket/TicketMetaTags.tsx +85 -0
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +351 -0
- package/src/components/supportTicket/TicketReplyBox.tsx +146 -0
- package/src/components/supportTicket/attachmentAccess.ts +97 -0
- package/src/components/supportTicket/fileToAttachment.ts +24 -0
- package/src/components/supportTicket/index.ts +10 -0
- package/src/components/supportTicket/meta.ts +185 -0
- package/src/components/supportTicket/ticketModel.ts +131 -0
- package/src/components/ticketReferences/TicketReferences.stories.tsx +315 -0
- package/src/components/ticketReferences/TicketReferences.tsx +886 -0
- package/src/components/ticketReferences/index.ts +2 -0
- package/src/components/ticketThread/TicketThread.stories.tsx +828 -0
- package/src/components/ticketThread/TicketThread.tsx +704 -0
- package/src/components/ticketThread/index.ts +6 -0
- package/src/helpers/common.ts +19 -0
- package/src/helpers/scrollbar.ts +32 -0
- package/src/hooks/useFetch/useFetch.stories.tsx +30 -0
- package/src/hooks/useStorage/useStorage.stories.tsx +82 -0
- package/src/hooks/useWebSocket/useWebsocket.stories.tsx +127 -1
- package/src/index.tsx +8 -1
- package/src/providers/StorageProvider.tsx +30 -4
- package/src/stores/currentUser/currentUser.stories.tsx +49 -0
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
ReqoreControlGroup,
|
|
5
5
|
ReqoreMessage,
|
|
6
6
|
ReqoreModal,
|
|
7
|
-
ReqoreP,
|
|
8
7
|
} from '@qoretechnologies/reqore';
|
|
9
8
|
import { IReqoreCollectionItemProps } from '@qoretechnologies/reqore/dist/components/Collection/item';
|
|
10
9
|
import { TReqoreBadge } from '@qoretechnologies/reqore/dist/components/Button';
|
|
@@ -12,7 +11,7 @@ import { TReqoreIntent } from '@qoretechnologies/reqore/dist/constants/theme';
|
|
|
12
11
|
import { IReqoreIconName } from '@qoretechnologies/reqore/dist/types/icons';
|
|
13
12
|
import { capitalize, isEqual, size } from 'lodash';
|
|
14
13
|
import { useMemo, useState } from 'react';
|
|
15
|
-
import
|
|
14
|
+
import { Description } from '../../../Description';
|
|
16
15
|
|
|
17
16
|
const PositiveColorEffect = {
|
|
18
17
|
gradient: {
|
|
@@ -25,6 +24,7 @@ const PositiveColorEffect = {
|
|
|
25
24
|
|
|
26
25
|
export interface ISelectFieldCollectionItem {
|
|
27
26
|
value?: unknown;
|
|
27
|
+
name?: unknown;
|
|
28
28
|
display_name?: string;
|
|
29
29
|
desc?: string;
|
|
30
30
|
short_desc?: string;
|
|
@@ -42,16 +42,76 @@ export interface ISelectFieldCollectionItem {
|
|
|
42
42
|
export interface ISelectFieldCollectionProps {
|
|
43
43
|
onClose: () => void;
|
|
44
44
|
items: ISelectFieldCollectionItem[];
|
|
45
|
-
getItemDescription: (value: unknown) => string;
|
|
46
45
|
value?: unknown;
|
|
47
46
|
onItemSelect: (item: ISelectFieldCollectionItem) => void;
|
|
48
47
|
filters?: string[];
|
|
49
48
|
}
|
|
50
49
|
|
|
50
|
+
const normalizeSelectItemDescription = (value: unknown): string | undefined => {
|
|
51
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const seen = new Set<string>();
|
|
56
|
+
|
|
57
|
+
return value
|
|
58
|
+
.split('\n')
|
|
59
|
+
.filter((line) => {
|
|
60
|
+
const normalized = line.trim().replace(/\s+/g, ' ').toLocaleLowerCase();
|
|
61
|
+
|
|
62
|
+
if (!normalized) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (seen.has(normalized)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
seen.add(normalized);
|
|
71
|
+
return true;
|
|
72
|
+
})
|
|
73
|
+
.join('\n')
|
|
74
|
+
.trim();
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export const getSelectItemDescription = (
|
|
78
|
+
item: Pick<ISelectFieldCollectionItem, 'desc' | 'short_desc'>
|
|
79
|
+
): string | undefined => {
|
|
80
|
+
const desc = normalizeSelectItemDescription(item.desc);
|
|
81
|
+
const shortDesc = normalizeSelectItemDescription(item.short_desc);
|
|
82
|
+
return desc ?? shortDesc;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export const getSelectItemShortDescription = (
|
|
86
|
+
item: Pick<ISelectFieldCollectionItem, 'desc' | 'short_desc'> | undefined,
|
|
87
|
+
defaultDesc = ''
|
|
88
|
+
): string | undefined => {
|
|
89
|
+
if (!item) {
|
|
90
|
+
return defaultDesc || undefined;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const shortDescription = normalizeSelectItemDescription(item.short_desc);
|
|
94
|
+
|
|
95
|
+
return shortDescription || defaultDesc || undefined;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export const getSelectItemDescriptionProps = (
|
|
99
|
+
item: Pick<ISelectFieldCollectionItem, 'desc' | 'short_desc'>
|
|
100
|
+
): { longDescription?: string; shortDescription?: string } => {
|
|
101
|
+
const longDescription = normalizeSelectItemDescription(item.desc);
|
|
102
|
+
|
|
103
|
+
if (longDescription) {
|
|
104
|
+
return { longDescription };
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const shortDescription = normalizeSelectItemDescription(item.short_desc);
|
|
108
|
+
|
|
109
|
+
return { shortDescription };
|
|
110
|
+
};
|
|
111
|
+
|
|
51
112
|
export const SelectFieldCollection = ({
|
|
52
113
|
onClose,
|
|
53
114
|
items,
|
|
54
|
-
getItemDescription,
|
|
55
115
|
value,
|
|
56
116
|
onItemSelect,
|
|
57
117
|
filters,
|
|
@@ -100,8 +160,10 @@ export const SelectFieldCollection = ({
|
|
|
100
160
|
transparent={false}
|
|
101
161
|
size='tiny'
|
|
102
162
|
showLayoutSwitch={false}
|
|
103
|
-
items={filteredItems.map(
|
|
104
|
-
|
|
163
|
+
items={filteredItems.map((item): IReqoreCollectionItemProps => {
|
|
164
|
+
const { longDescription, shortDescription } = getSelectItemDescriptionProps(item);
|
|
165
|
+
|
|
166
|
+
return {
|
|
105
167
|
label: item.display_name || item.value?.toString(),
|
|
106
168
|
size: 'tiny',
|
|
107
169
|
groups: item.groups,
|
|
@@ -109,8 +171,14 @@ export const SelectFieldCollection = ({
|
|
|
109
171
|
responsiveTitle: false,
|
|
110
172
|
content: (
|
|
111
173
|
<ReqoreControlGroup vertical fluid>
|
|
112
|
-
{
|
|
113
|
-
|
|
174
|
+
{longDescription || shortDescription ? (
|
|
175
|
+
<Description
|
|
176
|
+
longDescription={longDescription || ''}
|
|
177
|
+
shortDescription={shortDescription}
|
|
178
|
+
size='small'
|
|
179
|
+
margin='none'
|
|
180
|
+
/>
|
|
181
|
+
) : null}
|
|
114
182
|
{item.actions?.map(({ as: Component = ReqoreButton, props, ...rest }, index) => (
|
|
115
183
|
<Component
|
|
116
184
|
key={index}
|
|
@@ -148,13 +216,6 @@ export const SelectFieldCollection = ({
|
|
|
148
216
|
size: '20px',
|
|
149
217
|
rounded: true,
|
|
150
218
|
},
|
|
151
|
-
tooltip: !!item.desc
|
|
152
|
-
? {
|
|
153
|
-
delay: 800,
|
|
154
|
-
content: <ReactMarkdown>{getItemDescription(item.value)}</ReactMarkdown>,
|
|
155
|
-
maxWidth: '70vw',
|
|
156
|
-
}
|
|
157
|
-
: undefined,
|
|
158
219
|
onClick: !item.disabled
|
|
159
220
|
? (e) => {
|
|
160
221
|
if (e.currentTarget.contains(e.target as Node)) {
|
|
@@ -163,8 +224,8 @@ export const SelectFieldCollection = ({
|
|
|
163
224
|
}
|
|
164
225
|
}
|
|
165
226
|
: undefined,
|
|
166
|
-
}
|
|
167
|
-
)}
|
|
227
|
+
};
|
|
228
|
+
})}
|
|
168
229
|
actions={filters?.map((filter) => ({
|
|
169
230
|
label: capitalize(filter.replace('_', ' ')),
|
|
170
231
|
badge: items.filter((item) => item[filter]).length,
|
|
@@ -38,6 +38,14 @@ export const Default: Story = {
|
|
|
38
38
|
args: {
|
|
39
39
|
value: 'Qore',
|
|
40
40
|
},
|
|
41
|
+
parameters: {
|
|
42
|
+
docs: {
|
|
43
|
+
description: {
|
|
44
|
+
story:
|
|
45
|
+
'Renders the String field pre-populated with "Qore". Clicking clear empties the input and fires onClearClick; typing new text updates the value and fires onChange.',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
41
49
|
play: async ({ canvasElement, args }) => {
|
|
42
50
|
const canvas = within(canvasElement);
|
|
43
51
|
const input = canvas.getByLabelText('Name');
|
|
@@ -60,6 +68,14 @@ export const Sensitive: Story = {
|
|
|
60
68
|
sensitive: true,
|
|
61
69
|
value: 'password',
|
|
62
70
|
},
|
|
71
|
+
parameters: {
|
|
72
|
+
docs: {
|
|
73
|
+
description: {
|
|
74
|
+
story:
|
|
75
|
+
'Renders the String field in sensitive mode — the input renders as type="password" so the value is masked.',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
63
79
|
play: async ({ canvasElement }) => {
|
|
64
80
|
const canvas = within(canvasElement);
|
|
65
81
|
const input = canvas.getByLabelText('Name');
|
|
@@ -209,6 +209,14 @@ export const StringComponent: StoryObj<typeof meta> = {
|
|
|
209
209
|
value: 'Some string',
|
|
210
210
|
type: 'string',
|
|
211
211
|
},
|
|
212
|
+
parameters: {
|
|
213
|
+
docs: {
|
|
214
|
+
description: {
|
|
215
|
+
story:
|
|
216
|
+
'Renders TemplateField wrapping a LongString component with a plain string value — the field shows the literal string in a textarea, no template selected.',
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
},
|
|
212
220
|
};
|
|
213
221
|
|
|
214
222
|
export const BooleanComponent: StoryObj<typeof meta> = {
|
|
@@ -218,6 +226,14 @@ export const BooleanComponent: StoryObj<typeof meta> = {
|
|
|
218
226
|
allowTemplates: true,
|
|
219
227
|
componentFromType: true,
|
|
220
228
|
},
|
|
229
|
+
parameters: {
|
|
230
|
+
docs: {
|
|
231
|
+
description: {
|
|
232
|
+
story:
|
|
233
|
+
'Renders TemplateField for a boolean value with templates allowed — the boolean toggle is shown with the template toggle available on the side.',
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
},
|
|
221
237
|
};
|
|
222
238
|
|
|
223
239
|
export const NumberComponent: StoryObj<typeof meta> = {
|
|
@@ -227,6 +243,14 @@ export const NumberComponent: StoryObj<typeof meta> = {
|
|
|
227
243
|
allowTemplates: true,
|
|
228
244
|
componentFromType: true,
|
|
229
245
|
},
|
|
246
|
+
parameters: {
|
|
247
|
+
docs: {
|
|
248
|
+
description: {
|
|
249
|
+
story:
|
|
250
|
+
'Renders TemplateField for an int value of 25 with templates allowed — the numeric input is shown alongside the template toggle.',
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
},
|
|
230
254
|
};
|
|
231
255
|
|
|
232
256
|
export const AutoComponent: StoryObj<typeof meta> = {
|
|
@@ -235,6 +259,14 @@ export const AutoComponent: StoryObj<typeof meta> = {
|
|
|
235
259
|
allowTemplates: true,
|
|
236
260
|
component: auto,
|
|
237
261
|
},
|
|
262
|
+
parameters: {
|
|
263
|
+
docs: {
|
|
264
|
+
description: {
|
|
265
|
+
story:
|
|
266
|
+
'Renders TemplateField wrapping the AutoFormField dispatcher — the operator can pick a type from the auto picker or switch to a template value.',
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
},
|
|
238
270
|
};
|
|
239
271
|
|
|
240
272
|
export const AllowedValuesWithTemplate: StoryObj<typeof meta> = {
|
|
@@ -249,6 +281,14 @@ export const AllowedValuesWithTemplate: StoryObj<typeof meta> = {
|
|
|
249
281
|
],
|
|
250
282
|
component: auto,
|
|
251
283
|
},
|
|
284
|
+
parameters: {
|
|
285
|
+
docs: {
|
|
286
|
+
description: {
|
|
287
|
+
story:
|
|
288
|
+
'Renders TemplateField restricted to a single allowed value ("Test") but with templates also allowed — the operator can pick the allowed value or switch to a template.',
|
|
289
|
+
},
|
|
290
|
+
},
|
|
291
|
+
},
|
|
252
292
|
};
|
|
253
293
|
|
|
254
294
|
export const TemplateValue: StoryObj<typeof meta> = {
|
|
@@ -257,6 +297,14 @@ export const TemplateValue: StoryObj<typeof meta> = {
|
|
|
257
297
|
type: 'int',
|
|
258
298
|
value: '$local:id',
|
|
259
299
|
},
|
|
300
|
+
parameters: {
|
|
301
|
+
docs: {
|
|
302
|
+
description: {
|
|
303
|
+
story:
|
|
304
|
+
'Renders TemplateField for an int wrapped over the Number component with a template value ($local:id) — the template selector replaces the number input.',
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
},
|
|
260
308
|
};
|
|
261
309
|
|
|
262
310
|
export const ElementTypeInListShowsCorrectTemplates: StoryObj<typeof meta> = {
|
|
@@ -271,6 +319,14 @@ export const ElementTypeInListShowsCorrectTemplates: StoryObj<typeof meta> = {
|
|
|
271
319
|
{ type: 'number', value: 3 },
|
|
272
320
|
],
|
|
273
321
|
},
|
|
322
|
+
parameters: {
|
|
323
|
+
docs: {
|
|
324
|
+
description: {
|
|
325
|
+
story:
|
|
326
|
+
'Renders TemplateField in list mode with three number items. Adding a new item and opening the templates popover shows the templates that resolve to the number element type.',
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
},
|
|
274
330
|
play: async () => {
|
|
275
331
|
await _testsClickButton({ label: 'Add new item for "Test"' });
|
|
276
332
|
await _testsOpenTemplates();
|
|
@@ -280,6 +336,14 @@ export const ElementTypeInListShowsCorrectTemplates: StoryObj<typeof meta> = {
|
|
|
280
336
|
|
|
281
337
|
export const ShowsTemplatesList: StoryObj<typeof meta> = {
|
|
282
338
|
...TemplateValue,
|
|
339
|
+
parameters: {
|
|
340
|
+
docs: {
|
|
341
|
+
description: {
|
|
342
|
+
story:
|
|
343
|
+
'Renders TemplateField with the $local:id template value, then opens the templates popover — the operator sees the available templates that resolve to an int.',
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
},
|
|
283
347
|
play: async () => {
|
|
284
348
|
await _testsOpenTemplates();
|
|
285
349
|
},
|
|
@@ -287,6 +351,14 @@ export const ShowsTemplatesList: StoryObj<typeof meta> = {
|
|
|
287
351
|
|
|
288
352
|
export const ShowsTemplatesListForString: StoryObj<typeof meta> = {
|
|
289
353
|
...StringComponent,
|
|
354
|
+
parameters: {
|
|
355
|
+
docs: {
|
|
356
|
+
description: {
|
|
357
|
+
story:
|
|
358
|
+
'Renders TemplateField over a LongString component with a plain string value, then opens the templates popover — the templates list is shown for a string target type.',
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
},
|
|
290
362
|
play: async () => {
|
|
291
363
|
await _testsOpenTemplates();
|
|
292
364
|
},
|
|
@@ -294,6 +366,14 @@ export const ShowsTemplatesListForString: StoryObj<typeof meta> = {
|
|
|
294
366
|
|
|
295
367
|
export const ShowsTemplatesListForBoolean: StoryObj<typeof meta> = {
|
|
296
368
|
...BooleanComponent,
|
|
369
|
+
parameters: {
|
|
370
|
+
docs: {
|
|
371
|
+
description: {
|
|
372
|
+
story:
|
|
373
|
+
'Renders TemplateField for a boolean value, switches to template mode and opens the templates popover — the templates list is shown for a boolean target type.',
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
},
|
|
297
377
|
play: async () => {
|
|
298
378
|
await _testsSetTemplate();
|
|
299
379
|
await _testsOpenTemplates();
|
|
@@ -302,6 +382,14 @@ export const ShowsTemplatesListForBoolean: StoryObj<typeof meta> = {
|
|
|
302
382
|
|
|
303
383
|
export const ShowsTemplatesListForNumber: StoryObj<typeof meta> = {
|
|
304
384
|
...NumberComponent,
|
|
385
|
+
parameters: {
|
|
386
|
+
docs: {
|
|
387
|
+
description: {
|
|
388
|
+
story:
|
|
389
|
+
'Renders TemplateField for an int value, then opens the templates popover — the templates list is shown for an int target type.',
|
|
390
|
+
},
|
|
391
|
+
},
|
|
392
|
+
},
|
|
305
393
|
play: async () => {
|
|
306
394
|
await _testsOpenTemplates();
|
|
307
395
|
},
|
|
@@ -314,6 +402,14 @@ export const TemplateValueCanBeRemoved: StoryObj<typeof meta> = {
|
|
|
314
402
|
allowTemplates: true,
|
|
315
403
|
componentFromType: true,
|
|
316
404
|
},
|
|
405
|
+
parameters: {
|
|
406
|
+
docs: {
|
|
407
|
+
description: {
|
|
408
|
+
story:
|
|
409
|
+
'Renders TemplateField holding a $config:boolean template value. Clicking the template-remove action clears the template and the underlying boolean checkbox is shown instead.',
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
},
|
|
317
413
|
play: async () => {
|
|
318
414
|
await expect(document.querySelector('.template-selector')).toBeInTheDocument();
|
|
319
415
|
|
|
@@ -333,6 +429,14 @@ export const TemplateWithFunctions: StoryObj<typeof meta> = {
|
|
|
333
429
|
fluid: false,
|
|
334
430
|
expressions: storyExpressions as any,
|
|
335
431
|
},
|
|
432
|
+
parameters: {
|
|
433
|
+
docs: {
|
|
434
|
+
description: {
|
|
435
|
+
story:
|
|
436
|
+
'Renders TemplateField with allowFunctions enabled — the template menu now exposes a "Use Expression" entry alongside the plain templates.',
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
},
|
|
336
440
|
play: async () => {
|
|
337
441
|
await _testsOpenTemplateMenu();
|
|
338
442
|
await _testsWaitForText('Use Expression');
|
|
@@ -358,6 +462,14 @@ export const TemplateWithFunctionValue: StoryObj<typeof meta> = {
|
|
|
358
462
|
fluid: false,
|
|
359
463
|
expressions: storyExpressions as any,
|
|
360
464
|
},
|
|
465
|
+
parameters: {
|
|
466
|
+
docs: {
|
|
467
|
+
description: {
|
|
468
|
+
story:
|
|
469
|
+
'Renders TemplateField holding a substr function value with three arguments — the expression builder shows the function name and each argument slot.',
|
|
470
|
+
},
|
|
471
|
+
},
|
|
472
|
+
},
|
|
361
473
|
};
|
|
362
474
|
|
|
363
475
|
export const TemplateWithNestedFunctionValue: StoryObj<typeof meta> = {
|
|
@@ -389,6 +501,14 @@ export const TemplateWithNestedFunctionValue: StoryObj<typeof meta> = {
|
|
|
389
501
|
fluid: false,
|
|
390
502
|
expressions: storyExpressions as any,
|
|
391
503
|
},
|
|
504
|
+
parameters: {
|
|
505
|
+
docs: {
|
|
506
|
+
description: {
|
|
507
|
+
story:
|
|
508
|
+
'Renders TemplateField holding a substr function whose second argument is itself a PLUS-INT expression — the expression builder shows the nested function inline within the outer call.',
|
|
509
|
+
},
|
|
510
|
+
},
|
|
511
|
+
},
|
|
392
512
|
};
|
|
393
513
|
|
|
394
514
|
export const TemplateCanBeSelected: StoryObj<typeof meta> = {
|
|
@@ -397,6 +517,14 @@ export const TemplateCanBeSelected: StoryObj<typeof meta> = {
|
|
|
397
517
|
defaultType: 'string',
|
|
398
518
|
defaultInternalType: 'string',
|
|
399
519
|
},
|
|
520
|
+
parameters: {
|
|
521
|
+
docs: {
|
|
522
|
+
description: {
|
|
523
|
+
story:
|
|
524
|
+
'Renders TemplateField for a string, opens the templates popover and clicks the Interface ID template — the field switches to the $local:id template value.',
|
|
525
|
+
},
|
|
526
|
+
},
|
|
527
|
+
},
|
|
400
528
|
play: async ({ canvasElement, ...rest }) => {
|
|
401
529
|
const canvas = within(canvasElement);
|
|
402
530
|
|
|
@@ -410,6 +538,14 @@ export const TemplateCanBeSelected: StoryObj<typeof meta> = {
|
|
|
410
538
|
};
|
|
411
539
|
|
|
412
540
|
export const ValueIsResetWhenChangingToCustom: StoryObj<typeof meta> = {
|
|
541
|
+
parameters: {
|
|
542
|
+
docs: {
|
|
543
|
+
description: {
|
|
544
|
+
story:
|
|
545
|
+
'Renders TemplateField over a number type holding a $config:something template value. Clicking template-remove resets the value to undefined and fires onChange with the cleared value.',
|
|
546
|
+
},
|
|
547
|
+
},
|
|
548
|
+
},
|
|
413
549
|
render: (args) => {
|
|
414
550
|
const [value, setValue] = useState(args.value);
|
|
415
551
|
|
|
@@ -449,6 +585,14 @@ export const TemplatesWithMultipleLevels: StoryObj<typeof meta> = {
|
|
|
449
585
|
type: 'string',
|
|
450
586
|
templates: buildTemplates(multiLevelTemplates as any),
|
|
451
587
|
},
|
|
588
|
+
parameters: {
|
|
589
|
+
docs: {
|
|
590
|
+
description: {
|
|
591
|
+
story:
|
|
592
|
+
'Renders TemplateField for a string with a hierarchical template catalogue. Drilling into "Testing Hash" narrows the list to templates that resolve to a string (Testing Int Item is filtered out).',
|
|
593
|
+
},
|
|
594
|
+
},
|
|
595
|
+
},
|
|
452
596
|
play: async () => {
|
|
453
597
|
await _testsOpenTemplates();
|
|
454
598
|
await _testsClickButton({ label: 'Testing Hash' });
|
|
@@ -458,6 +602,14 @@ export const TemplatesWithMultipleLevels: StoryObj<typeof meta> = {
|
|
|
458
602
|
};
|
|
459
603
|
|
|
460
604
|
export const TemplatesWithMultipleLevelsAndHashField: StoryObj<typeof meta> = {
|
|
605
|
+
parameters: {
|
|
606
|
+
docs: {
|
|
607
|
+
description: {
|
|
608
|
+
story:
|
|
609
|
+
'Renders TemplateField for a hash type with a hierarchical template catalogue — switching to template mode and opening the popover exposes the nested template groups.',
|
|
610
|
+
},
|
|
611
|
+
},
|
|
612
|
+
},
|
|
461
613
|
render: (args) => {
|
|
462
614
|
const [value, setValue] = useState(args.value);
|
|
463
615
|
|
|
@@ -486,6 +638,14 @@ export const TemplatesWithMultipleLevelsAndHashField: StoryObj<typeof meta> = {
|
|
|
486
638
|
|
|
487
639
|
export const TemplateWithItemsCanBeSelected: StoryObj<typeof meta> = {
|
|
488
640
|
...TemplatesWithMultipleLevelsAndHashField,
|
|
641
|
+
parameters: {
|
|
642
|
+
docs: {
|
|
643
|
+
description: {
|
|
644
|
+
story:
|
|
645
|
+
'Renders TemplateField for a hash type with a hierarchical catalogue. Selecting an item from a nested group updates the template value to the picked entry (Testing Hash).',
|
|
646
|
+
},
|
|
647
|
+
},
|
|
648
|
+
},
|
|
489
649
|
play: async (args) => {
|
|
490
650
|
await TemplatesWithMultipleLevelsAndHashField.play(args);
|
|
491
651
|
await _testsClickButton({ selector: '.reqore-menu-item-left-action' });
|
|
@@ -30,6 +30,14 @@ export default meta;
|
|
|
30
30
|
type Story = StoryObj<typeof meta>;
|
|
31
31
|
|
|
32
32
|
export const Default: Story = {
|
|
33
|
+
parameters: {
|
|
34
|
+
docs: {
|
|
35
|
+
description: {
|
|
36
|
+
story:
|
|
37
|
+
'Renders the Url field with no value. Typing into the address input recomposes the URL and fires onChange after the debounce; because no protocol is selected, the composed value keeps a bare "://" prefix.',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
33
41
|
play: async ({ canvasElement, args }) => {
|
|
34
42
|
const canvas = within(canvasElement);
|
|
35
43
|
const input = canvas.getByLabelText('URL address');
|
|
@@ -49,6 +57,14 @@ export const WithValue: Story = {
|
|
|
49
57
|
args: {
|
|
50
58
|
value: 'https://example.com',
|
|
51
59
|
},
|
|
60
|
+
parameters: {
|
|
61
|
+
docs: {
|
|
62
|
+
description: {
|
|
63
|
+
story:
|
|
64
|
+
'Renders the Url field pre-populated with "https://example.com" — the URL is split across the https protocol selector and the example.com address input.',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
},
|
|
52
68
|
play: async ({ canvasElement }) => {
|
|
53
69
|
const canvas = within(canvasElement);
|
|
54
70
|
await expect(await canvas.findByDisplayValue('example.com')).toBeInTheDocument();
|
|
@@ -60,6 +76,14 @@ export const KeepsSeparatorInsideAddress: Story = {
|
|
|
60
76
|
args: {
|
|
61
77
|
value: 'https://proxy/forward?to=http://inner',
|
|
62
78
|
},
|
|
79
|
+
parameters: {
|
|
80
|
+
docs: {
|
|
81
|
+
description: {
|
|
82
|
+
story:
|
|
83
|
+
'Renders the Url field with a URL whose query-string embeds a second "://". The protocol split only consumes the leading separator; the inner "://" survives inside the address input.',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
63
87
|
play: async ({ canvasElement }) => {
|
|
64
88
|
const canvas = within(canvasElement);
|
|
65
89
|
// `://` inside the address survives the protocol/address split.
|
|
@@ -22,6 +22,8 @@ export * from './fields/select/SelectCollection';
|
|
|
22
22
|
export * from './fields/string/String';
|
|
23
23
|
export * from './fields/template/TemplateField';
|
|
24
24
|
export * from './engine/FormEngine';
|
|
25
|
+
export * from './engine/optionActions';
|
|
26
|
+
export * from './engine/rendererTypes';
|
|
25
27
|
export * from './expressions/types';
|
|
26
28
|
export * from './expressions/useExpressions';
|
|
27
29
|
// Named (not wildcard) so the `_resetRenderExpressionTransportForTests`
|