@qoretechnologies/reqraft 0.10.65 → 0.10.66-pr.137.ga1983bf
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/README.md +53 -1
- package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
- package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
- package/dist/components/Description/AllowedValuesHelp.js +86 -0
- package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
- package/dist/components/Description/describedControl.d.ts +54 -0
- package/dist/components/Description/describedControl.d.ts.map +1 -0
- package/dist/components/Description/describedControl.js +81 -0
- package/dist/components/Description/describedControl.js.map +1 -0
- package/dist/components/Description/index.d.ts.map +1 -1
- package/dist/components/Description/index.js +3 -2
- package/dist/components/Description/index.js.map +1 -1
- package/dist/components/colorValue/colorValue.d.ts +59 -0
- package/dist/components/colorValue/colorValue.d.ts.map +1 -0
- package/dist/components/colorValue/colorValue.js +245 -0
- package/dist/components/colorValue/colorValue.js.map +1 -0
- package/dist/components/colorValue/index.d.ts +34 -0
- package/dist/components/colorValue/index.d.ts.map +1 -0
- package/dist/components/colorValue/index.js +136 -0
- package/dist/components/colorValue/index.js.map +1 -0
- package/dist/components/colorValue/labels.d.ts +12 -0
- package/dist/components/colorValue/labels.d.ts.map +1 -0
- package/dist/components/colorValue/labels.js +11 -0
- package/dist/components/colorValue/labels.js.map +1 -0
- package/dist/components/composer/Composer.d.ts +1 -1
- package/dist/components/composer/Composer.d.ts.map +1 -1
- package/dist/components/composer/Composer.js +2 -2
- package/dist/components/composer/Composer.js.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
- package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
- package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
- package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +413 -63
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
- package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.js +44 -17
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +94 -8
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
- package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +322 -124
- 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 +29 -3
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +66 -11
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +570 -176
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
- package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
- package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
- package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +25 -3
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
- package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
- package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +30 -1
- 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 +59 -22
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +102 -55
- package/dist/components/form/engine/compactRowStyles.js.map +1 -1
- package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
- package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
- package/dist/components/form/engine/compactToolbarColors.js +21 -0
- package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
- package/dist/components/form/engine/inheritProps.d.ts +29 -0
- package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
- package/dist/components/form/engine/inheritProps.js +43 -0
- package/dist/components/form/engine/inheritProps.js.map +1 -0
- package/dist/components/form/engine/operatorSummary.d.ts +26 -0
- package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
- package/dist/components/form/engine/operatorSummary.js +35 -0
- package/dist/components/form/engine/operatorSummary.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +24 -8
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +77 -109
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/readFirstColors.d.ts +30 -0
- package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
- package/dist/components/form/engine/readFirstColors.js +51 -0
- package/dist/components/form/engine/readFirstColors.js.map +1 -0
- package/dist/components/form/engine/rowFocus.d.ts +2 -0
- package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
- package/dist/components/form/engine/rowFocus.js +26 -3
- package/dist/components/form/engine/rowFocus.js.map +1 -1
- package/dist/components/form/engine/typeChoices.d.ts +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.js +2 -1
- package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
- package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
- package/dist/components/form/engine/variants/variantParts.js +25 -17
- package/dist/components/form/engine/variants/variantParts.js.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.js +7 -6
- package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +536 -114
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
- package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
- package/dist/components/form/expressions/argumentPresence.js +16 -1
- package/dist/components/form/expressions/argumentPresence.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
- package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
- package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +34 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +170 -80
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/builder/item.d.ts +6 -2
- package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/item.js +19 -5
- package/dist/components/form/expressions/builder/item.js.map +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
- package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
- package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
- package/dist/components/form/expressions/expressionOperands.js +97 -0
- package/dist/components/form/expressions/expressionOperands.js.map +1 -0
- package/dist/components/form/expressions/fieldPath.d.ts +24 -0
- package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
- package/dist/components/form/expressions/fieldPath.js +152 -0
- package/dist/components/form/expressions/fieldPath.js.map +1 -0
- package/dist/components/form/expressions/loneValue.d.ts +17 -0
- package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
- package/dist/components/form/expressions/loneValue.js +33 -0
- package/dist/components/form/expressions/loneValue.js.map +1 -0
- package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
- package/dist/components/form/expressions/mockExpressions.js +22 -5
- package/dist/components/form/expressions/mockExpressions.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +43 -10
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
- package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
- package/dist/components/form/expressions/textOfExpression.js +49 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- package/dist/components/form/expressions/types.d.ts +12 -0
- package/dist/components/form/expressions/types.d.ts.map +1 -1
- package/dist/components/form/expressions/types.js +6 -1
- package/dist/components/form/expressions/types.js.map +1 -1
- package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
- package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
- package/dist/components/form/expressions/useExpressionType.js +181 -0
- package/dist/components/form/expressions/useExpressionType.js.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.js +13 -9
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
- package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
- package/dist/components/form/expressions/wildcardExpressions.js +101 -0
- package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +43 -20
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +39 -6
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
- package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
- package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
- package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
- package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.js +24 -0
- package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
- package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +119 -62
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
- package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
- package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
- package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
- package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
- package/dist/components/form/fields/binary/Binary.js +23 -3
- package/dist/components/form/fields/binary/Binary.js.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
- package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.js +9 -1
- package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
- package/dist/components/form/fields/color/Color.d.ts +103 -16
- package/dist/components/form/fields/color/Color.d.ts.map +1 -1
- package/dist/components/form/fields/color/Color.js +616 -16
- package/dist/components/form/fields/color/Color.js.map +1 -1
- package/dist/components/form/fields/emittedValues.d.ts +34 -3
- package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
- package/dist/components/form/fields/emittedValues.js +24 -1
- package/dist/components/form/fields/emittedValues.js.map +1 -1
- package/dist/components/form/fields/file/File.d.ts +1 -1
- package/dist/components/form/fields/file/File.d.ts.map +1 -1
- package/dist/components/form/fields/file/File.js +4 -2
- package/dist/components/form/fields/file/File.js.map +1 -1
- package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +29 -8
- package/dist/components/form/fields/long-string/LongString.js.map +1 -1
- package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js +13 -9
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +6 -0
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +41 -6
- package/dist/components/form/fields/number/Number.js.map +1 -1
- package/dist/components/form/fields/object/Object.d.ts +1 -1
- package/dist/components/form/fields/object/Object.d.ts.map +1 -1
- package/dist/components/form/fields/object/Object.js +4 -2
- package/dist/components/form/fields/object/Object.js.map +1 -1
- package/dist/components/form/fields/pendingEdit.d.ts +52 -0
- package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
- package/dist/components/form/fields/pendingEdit.js +79 -0
- package/dist/components/form/fields/pendingEdit.js.map +1 -0
- package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
- package/dist/components/form/fields/radio-group/RadioGroup.js +4 -3
- package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +382 -91
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
- package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/index.js +8 -4
- package/dist/components/form/fields/schema-definition/index.js.map +1 -1
- package/dist/components/form/fields/select/Select.d.ts +10 -1
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +28 -14
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
- package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.js +25 -12
- package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
- package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
- package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
- package/dist/components/form/fields/select/unavailableRow.js +55 -0
- package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
- package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
- package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
- package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +678 -107
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
- package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplatePicker.js +451 -0
- package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
- package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
- package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateText.js +22 -16
- package/dist/components/form/fields/template/TemplateText.js.map +1 -1
- package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
- package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
- package/dist/components/form/fields/template/referenceNames.js +69 -0
- package/dist/components/form/fields/template/referenceNames.js.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +204 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +12 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +25 -1
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/form/typeSentenceForm.d.ts +17 -0
- package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
- package/dist/components/form/typeSentenceForm.js +54 -0
- package/dist/components/form/typeSentenceForm.js.map +1 -0
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.js +19 -7
- package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
- package/dist/components/log/Log.d.ts.map +1 -1
- package/dist/components/log/Log.js +20 -8
- package/dist/components/log/Log.js.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.js +19 -10
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
- package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
- package/dist/components/smartEditor/CompletionMenu.js +302 -0
- package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
- package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
- package/dist/components/smartEditor/MarkdownDoc.js +3 -3
- package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
- package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
- package/dist/components/smartEditor/SmartEditor.js +584 -190
- package/dist/components/smartEditor/SmartEditor.js.map +1 -1
- package/dist/components/smartEditor/completionStyle.d.ts +28 -0
- package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
- package/dist/components/smartEditor/completionStyle.js +79 -0
- package/dist/components/smartEditor/completionStyle.js.map +1 -0
- package/dist/components/smartEditor/contextTitle.d.ts +10 -0
- package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
- package/dist/components/smartEditor/contextTitle.js +21 -0
- package/dist/components/smartEditor/contextTitle.js.map +1 -0
- package/dist/components/smartEditor/editingAids.d.ts +64 -0
- package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
- package/dist/components/smartEditor/editingAids.js +213 -0
- package/dist/components/smartEditor/editingAids.js.map +1 -0
- package/dist/components/smartEditor/index.d.ts +6 -1
- package/dist/components/smartEditor/index.d.ts.map +1 -1
- package/dist/components/smartEditor/index.js +19 -1
- package/dist/components/smartEditor/index.js.map +1 -1
- package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
- package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
- package/dist/components/smartEditor/templateCompletions.js +380 -0
- package/dist/components/smartEditor/templateCompletions.js.map +1 -0
- package/dist/components/smartEditor/typedReferences.d.ts +34 -0
- package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
- package/dist/components/smartEditor/typedReferences.js +179 -0
- package/dist/components/smartEditor/typedReferences.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +116 -2
- package/dist/components/smartEditor/types.d.ts.map +1 -1
- package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
- package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
- package/dist/components/smartEditor/useEditingAids.js +336 -0
- package/dist/components/smartEditor/useEditingAids.js.map +1 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
- package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.js +562 -151
- package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
- package/dist/components/smartEditor/useLspHover.d.ts +33 -7
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspHover.js +364 -35
- package/dist/components/smartEditor/useLspHover.js.map +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts +6 -0
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +7 -6
- package/dist/components/smartEditor/useLspSession.js.map +1 -1
- package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
- package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
- package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
- package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
- package/dist/components/smartEditor/useTabCameIn.js +42 -0
- package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
- package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
- package/dist/components/supportTicket/AttachmentChips.js +15 -5
- package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +27 -6
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
- package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
- package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketHeader.js +20 -2
- package/dist/components/supportTicket/TicketHeader.js.map +1 -1
- package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +9 -4
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
- package/dist/components/ticketThread/TicketThread.js +38 -13
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/allowedValues.d.ts +21 -0
- package/dist/helpers/allowedValues.d.ts.map +1 -1
- package/dist/helpers/allowedValues.js +40 -1
- package/dist/helpers/allowedValues.js.map +1 -1
- package/dist/helpers/descriptionTooltip.d.ts +46 -0
- package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
- package/dist/helpers/descriptionTooltip.js +76 -0
- package/dist/helpers/descriptionTooltip.js.map +1 -0
- package/dist/helpers/domProps.d.ts +5 -0
- package/dist/helpers/domProps.d.ts.map +1 -0
- package/dist/helpers/domProps.js +47 -0
- package/dist/helpers/domProps.js.map +1 -0
- package/dist/helpers/expressions.d.ts +115 -4
- package/dist/helpers/expressions.d.ts.map +1 -1
- package/dist/helpers/expressions.js +247 -29
- package/dist/helpers/expressions.js.map +1 -1
- package/dist/helpers/hoveringPointer.d.ts +26 -0
- package/dist/helpers/hoveringPointer.d.ts.map +1 -0
- package/dist/helpers/hoveringPointer.js +29 -0
- package/dist/helpers/hoveringPointer.js.map +1 -0
- package/dist/helpers/markdownText.d.ts +14 -0
- package/dist/helpers/markdownText.d.ts.map +1 -0
- package/dist/helpers/markdownText.js +160 -0
- package/dist/helpers/markdownText.js.map +1 -0
- package/dist/helpers/noDescription.d.ts +9 -0
- package/dist/helpers/noDescription.d.ts.map +1 -0
- package/dist/helpers/noDescription.js +13 -0
- package/dist/helpers/noDescription.js.map +1 -0
- package/dist/helpers/optionUiTypes.d.ts +2 -2
- package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.js +505 -0
- package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
- package/dist/helpers/readableColors.d.ts +36 -0
- package/dist/helpers/readableColors.d.ts.map +1 -0
- package/dist/helpers/readableColors.js +116 -0
- package/dist/helpers/readableColors.js.map +1 -0
- package/dist/helpers/recordFieldReference.d.ts +15 -0
- package/dist/helpers/recordFieldReference.d.ts.map +1 -0
- package/dist/helpers/recordFieldReference.js +89 -0
- package/dist/helpers/recordFieldReference.js.map +1 -0
- package/dist/helpers/templateCatalogue.d.ts +104 -0
- package/dist/helpers/templateCatalogue.d.ts.map +1 -0
- package/dist/helpers/templateCatalogue.js +116 -0
- package/dist/helpers/templateCatalogue.js.map +1 -0
- package/dist/helpers/templateCatalogueContext.d.ts +19 -0
- package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
- package/dist/helpers/templateCatalogueContext.js +31 -0
- package/dist/helpers/templateCatalogueContext.js.map +1 -0
- package/dist/helpers/templateItems.d.ts +2 -2
- package/dist/helpers/templateItems.d.ts.map +1 -1
- package/dist/helpers/templateItems.js +6 -4
- package/dist/helpers/templateItems.js.map +1 -1
- package/dist/helpers/templateText.d.ts +1 -0
- package/dist/helpers/templateText.d.ts.map +1 -1
- package/dist/helpers/templateText.js +7 -3
- package/dist/helpers/templateText.js.map +1 -1
- package/dist/helpers/templateTree.d.ts +248 -0
- package/dist/helpers/templateTree.d.ts.map +1 -0
- package/dist/helpers/templateTree.js +892 -0
- package/dist/helpers/templateTree.js.map +1 -0
- package/dist/helpers/templateType.d.ts +28 -0
- package/dist/helpers/templateType.d.ts.map +1 -0
- package/dist/helpers/templateType.js +30 -0
- package/dist/helpers/templateType.js.map +1 -0
- package/dist/helpers/templates.d.ts +86 -16
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +305 -45
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts +27 -0
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +169 -39
- package/dist/helpers/validations.js.map +1 -1
- package/dist/helpers/webLink.d.ts +8 -0
- package/dist/helpers/webLink.d.ts.map +1 -0
- package/dist/helpers/webLink.js +29 -0
- package/dist/helpers/webLink.js.map +1 -0
- package/dist/hooks/useQorusTypes.d.ts +12 -17
- package/dist/hooks/useQorusTypes.d.ts.map +1 -1
- package/dist/hooks/useQorusTypes.js +44 -172
- package/dist/hooks/useQorusTypes.js.map +1 -1
- package/dist/hooks/useReadableIntentShade.d.ts +9 -0
- package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
- package/dist/hooks/useReadableIntentShade.js +23 -0
- package/dist/hooks/useReadableIntentShade.js.map +1 -0
- package/dist/hooks/useReadableOpacity.d.ts +6 -0
- package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
- package/dist/hooks/useReadableOpacity.js +17 -0
- package/dist/hooks/useReadableOpacity.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -1
- package/dist/index.js.map +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
- package/dist/tracking/ui/ExperimentCard.js +26 -10
- package/dist/tracking/ui/ExperimentCard.js.map +1 -1
- package/dist/tracking/ui/card.d.ts +2 -2
- package/dist/tracking/ui/card.d.ts.map +1 -1
- package/dist/tracking/ui/card.js +2 -2
- package/dist/tracking/ui/card.js.map +1 -1
- package/dist/tracking/ui/readable.d.ts +14 -0
- package/dist/tracking/ui/readable.d.ts.map +1 -0
- package/dist/tracking/ui/readable.js +60 -0
- package/dist/tracking/ui/readable.js.map +1 -0
- package/dist/utils/fetch.d.ts +9 -2
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +6 -5
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/lspClient.types.d.ts +2 -0
- package/dist/utils/lspClient.types.d.ts.map +1 -1
- package/dist/utils/websocket.d.ts +65 -2
- package/dist/utils/websocket.d.ts.map +1 -1
- package/dist/utils/websocket.js +276 -44
- package/dist/utils/websocket.js.map +1 -1
- package/package.json +14 -6
- package/.claude/CLAUDE.md +0 -317
- package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
- package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
- package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
- package/.tasks/FIELD_STACK_REPORT.md +0 -234
- package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
- package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
- package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
- package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
- package/.tasks/INDEX.md +0 -111
- package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
- package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
- package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
- package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
- package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
- package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
- package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
- package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
- package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
- package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
- package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
- package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
- package/CODE_OF_CONDUCT.md +0 -105
- package/CONTRIBUTING.MD +0 -78
- package/SECURITY.md +0 -3
- package/chromatic.config.json +0 -5
- package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
- package/design/COMPACT_INFO_DISPLAY.md +0 -87
- package/design/COMPACT_PARITY.md +0 -85
- package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
- package/design/FORM_ENGINE_COMPACT.md +0 -300
- package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
- package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
- package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
- package/design/IDE_INTEGRATION.md +0 -64
- package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
- package/design/SELECT_DIALOG_FLOOR.md +0 -86
- package/design/SMART_EDITOR_UX.md +0 -438
- package/design/TRACKING.md +0 -290
- package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
- package/src/components/Description/index.tsx +0 -254
- package/src/components/Description/markdownRendererContext.tsx +0 -29
- package/src/components/FocusedEditing/index.tsx +0 -50
- package/src/components/codeSize/index.tsx +0 -79
- package/src/components/composer/Composer.stories.tsx +0 -238
- package/src/components/composer/Composer.tsx +0 -554
- package/src/components/composer/helpers.ts +0 -74
- package/src/components/composer/index.ts +0 -2
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
- package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
- package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
- package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
- package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
- package/src/components/dpqlEditor/dpqlTags.ts +0 -114
- package/src/components/dpqlEditor/index.ts +0 -41
- package/src/components/dpqlEditor/types.ts +0 -203
- package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
- package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
- package/src/components/form/engine/CompactRow.tsx +0 -2620
- package/src/components/form/engine/CompactToolbar.tsx +0 -330
- package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
- package/src/components/form/engine/FormEngine.tsx +0 -4569
- package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
- package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
- package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
- package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
- package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
- package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
- package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
- package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
- package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
- package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
- package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
- package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
- package/src/components/form/engine/compactRowContext.ts +0 -148
- package/src/components/form/engine/compactRowStyles.ts +0 -898
- package/src/components/form/engine/compactToolbarContext.ts +0 -69
- package/src/components/form/engine/optionActions.ts +0 -128
- package/src/components/form/engine/optionsContext.ts +0 -24
- package/src/components/form/engine/readFirst.ts +0 -1077
- package/src/components/form/engine/rendererTypes.ts +0 -107
- package/src/components/form/engine/revealRow.ts +0 -123
- package/src/components/form/engine/rowFocus.ts +0 -101
- package/src/components/form/engine/rowMenuContext.ts +0 -159
- package/src/components/form/engine/rowOpenPicker.ts +0 -27
- package/src/components/form/engine/typeChoices.ts +0 -63
- package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
- package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
- package/src/components/form/engine/variants/VariantCards.tsx +0 -212
- package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
- package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
- package/src/components/form/engine/variants/focusDemo.ts +0 -145
- package/src/components/form/engine/variants/variantModel.ts +0 -223
- package/src/components/form/engine/variants/variantParts.tsx +0 -313
- package/src/components/form/expressions/DpqlRendering.tsx +0 -85
- package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
- package/src/components/form/expressions/ExpressionField.tsx +0 -503
- package/src/components/form/expressions/argumentPresence.ts +0 -213
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
- package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
- package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
- package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
- package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
- package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
- package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
- package/src/components/form/expressions/builder/index.tsx +0 -1545
- package/src/components/form/expressions/builder/item.tsx +0 -89
- package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
- package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
- package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
- package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
- package/src/components/form/expressions/mockExpressions.ts +0 -317
- package/src/components/form/expressions/renderExpressionToText.ts +0 -137
- package/src/components/form/expressions/types.ts +0 -110
- package/src/components/form/expressions/useExpressions.ts +0 -101
- package/src/components/form/expressions/useRenderExpression.ts +0 -165
- package/src/components/form/fields/Field.stories.tsx +0 -143
- package/src/components/form/fields/Field.tsx +0 -732
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
- package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
- package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
- package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
- package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
- package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
- package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
- package/src/components/form/fields/binary/Binary.tsx +0 -91
- package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
- package/src/components/form/fields/boolean/Boolean.tsx +0 -34
- package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
- package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
- package/src/components/form/fields/color/Color.stories.tsx +0 -99
- package/src/components/form/fields/color/Color.tsx +0 -46
- package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
- package/src/components/form/fields/cron/Cron.tsx +0 -80
- package/src/components/form/fields/date/Date.stories.tsx +0 -77
- package/src/components/form/fields/date/Date.tsx +0 -55
- package/src/components/form/fields/emittedValues.ts +0 -70
- package/src/components/form/fields/file/File.stories.tsx +0 -161
- package/src/components/form/fields/file/File.tsx +0 -227
- package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
- package/src/components/form/fields/long-string/LongString.tsx +0 -130
- package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
- package/src/components/form/fields/markdown/Markdown.tsx +0 -81
- package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
- package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
- package/src/components/form/fields/number/Number.stories.tsx +0 -159
- package/src/components/form/fields/number/Number.tsx +0 -160
- package/src/components/form/fields/object/Object.stories.tsx +0 -398
- package/src/components/form/fields/object/Object.tsx +0 -255
- package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
- package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
- package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
- package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
- package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
- package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
- package/src/components/form/fields/rich-text/RichText.tsx +0 -537
- package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
- package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
- package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
- package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
- package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
- package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
- package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
- package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
- package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
- package/src/components/form/fields/schema-definition/catalog.ts +0 -237
- package/src/components/form/fields/schema-definition/helpers.ts +0 -90
- package/src/components/form/fields/schema-definition/index.tsx +0 -418
- package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
- package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
- package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
- package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
- package/src/components/form/fields/schema-definition/types.ts +0 -185
- package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
- package/src/components/form/fields/select/Select.stories.tsx +0 -872
- package/src/components/form/fields/select/Select.tsx +0 -624
- package/src/components/form/fields/select/SelectCollection.tsx +0 -594
- package/src/components/form/fields/string/String.stories.tsx +0 -86
- package/src/components/form/fields/string/String.tsx +0 -43
- package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
- package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
- package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
- package/src/components/form/fields/template/TemplateField.tsx +0 -1717
- package/src/components/form/fields/template/TemplateText.tsx +0 -115
- package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
- package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
- package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
- package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
- package/src/components/form/fields/timeout/Timeout.tsx +0 -87
- package/src/components/form/fields/url/Url.stories.tsx +0 -94
- package/src/components/form/fields/url/Url.tsx +0 -85
- package/src/components/form/index.tsx +0 -47
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
- package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
- package/src/components/imageLightbox/index.ts +0 -1
- package/src/components/log/Log.stories.tsx +0 -333
- package/src/components/log/Log.tsx +0 -285
- package/src/components/menu/Menu.stories.tsx +0 -155
- package/src/components/menu/Menu.tsx +0 -312
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
- package/src/components/qonsoleSmartInput/index.ts +0 -16
- package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
- package/src/components/qonsoleSmartInput/types.ts +0 -133
- package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
- package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
- package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
- package/src/components/searchFilterBar/index.ts +0 -1
- package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
- package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
- package/src/components/smartEditor/SmartEditor.tsx +0 -808
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
- package/src/components/smartEditor/helpers.ts +0 -217
- package/src/components/smartEditor/index.ts +0 -35
- package/src/components/smartEditor/styling.ts +0 -45
- package/src/components/smartEditor/types.ts +0 -211
- package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
- package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
- package/src/components/smartEditor/useLspHover.ts +0 -230
- package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
- package/src/components/smartEditor/useLspSession.ts +0 -231
- package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
- package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
- package/src/components/supportTicket/AttachmentChips.tsx +0 -147
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
- package/src/components/supportTicket/ReferencePicker.tsx +0 -563
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
- package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
- package/src/components/supportTicket/TicketHeader.tsx +0 -247
- package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
- package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
- package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
- package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
- package/src/components/supportTicket/attachmentAccess.ts +0 -97
- package/src/components/supportTicket/fileToAttachment.ts +0 -24
- package/src/components/supportTicket/index.ts +0 -10
- package/src/components/supportTicket/meta.ts +0 -206
- package/src/components/supportTicket/ticketModel.ts +0 -131
- package/src/components/supportTicket/useLoadedImages.ts +0 -73
- package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
- package/src/components/ticketReferences/TicketReferences.tsx +0 -906
- package/src/components/ticketReferences/index.ts +0 -2
- package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
- package/src/components/ticketThread/TicketThread.tsx +0 -719
- package/src/components/ticketThread/index.ts +0 -6
- package/src/contexts/FetchContext.tsx +0 -25
- package/src/contexts/ReqraftContext.tsx +0 -9
- package/src/contexts/StorageContext.tsx +0 -33
- package/src/global.d.ts +0 -4
- package/src/helpers/allowedValues.ts +0 -249
- package/src/helpers/choiceChip.ts +0 -227
- package/src/helpers/common.ts +0 -326
- package/src/helpers/dpqlDetection.ts +0 -209
- package/src/helpers/expressions.ts +0 -140
- package/src/helpers/optionUiTypes.ts +0 -199
- package/src/helpers/options.ts +0 -150
- package/src/helpers/providerValue.ts +0 -125
- package/src/helpers/scrollbar.ts +0 -32
- package/src/helpers/singleLineString.ts +0 -61
- package/src/helpers/templateItems.ts +0 -81
- package/src/helpers/templateText.ts +0 -350
- package/src/helpers/templates.ts +0 -602
- package/src/helpers/validations.ts +0 -2085
- package/src/hooks/useArgSchema.ts +0 -37
- package/src/hooks/useCoarsePointer.ts +0 -30
- package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
- package/src/hooks/useFetch/useFetch.tsx +0 -154
- package/src/hooks/usePhoneViewport.ts +0 -34
- package/src/hooks/useQorusTypes.ts +0 -233
- package/src/hooks/useReqraftProperty.ts +0 -16
- package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
- package/src/hooks/useStorage/useStorage.ts +0 -35
- package/src/hooks/useTemplates.ts +0 -123
- package/src/hooks/useValidation.ts +0 -9
- package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
- package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
- package/src/hooks/useWhyDidYouUpdate.ts +0 -38
- package/src/index.tsx +0 -86
- package/src/providers/FetchProvider.tsx +0 -40
- package/src/providers/ReqraftProvider.tsx +0 -52
- package/src/providers/StorageProvider.tsx +0 -131
- package/src/stores/currentUser/currentUser.stories.tsx +0 -100
- package/src/stores/currentUser/currentUser.tsx +0 -94
- package/src/stories/Data/fileFieldArgSchema.json +0 -86
- package/src/stories/Tests/utils.ts +0 -320
- package/src/stories/storyNetwork.ts +0 -92
- package/src/stories/tracking.tsx +0 -206
- package/src/tracking/browser/attach.ts +0 -186
- package/src/tracking/browser/env.ts +0 -78
- package/src/tracking/core/consent.ts +0 -37
- package/src/tracking/core/engagement.ts +0 -47
- package/src/tracking/core/experiments.ts +0 -258
- package/src/tracking/core/hash.ts +0 -26
- package/src/tracking/core/ids.ts +0 -25
- package/src/tracking/core/observable.ts +0 -23
- package/src/tracking/core/queue.ts +0 -131
- package/src/tracking/core/sections.ts +0 -166
- package/src/tracking/core/storage.ts +0 -69
- package/src/tracking/core/tracker.ts +0 -417
- package/src/tracking/core/types.ts +0 -162
- package/src/tracking/core/utm.ts +0 -23
- package/src/tracking/index.ts +0 -72
- package/src/tracking/markup.ts +0 -17
- package/src/tracking/react/Experiment.tsx +0 -44
- package/src/tracking/react/TrackingProvider.tsx +0 -56
- package/src/tracking/react/hooks.ts +0 -106
- package/src/tracking/react/index.ts +0 -13
- package/src/tracking/testing.ts +0 -108
- package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
- package/src/tracking/ui/ExperimentCard.tsx +0 -667
- package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
- package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
- package/src/tracking/ui/anchor.ts +0 -180
- package/src/tracking/ui/card.ts +0 -464
- package/src/tracking/ui/client.ts +0 -117
- package/src/tracking/ui/index.ts +0 -77
- package/src/tracking/ui/types.ts +0 -110
- package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
- package/src/types/Form.ts +0 -29
- package/src/types.ts +0 -14
- package/src/utils/datetime.ts +0 -10
- package/src/utils/fetch.ts +0 -457
- package/src/utils/lspClient.ts +0 -711
- package/src/utils/lspClient.types.ts +0 -211
- package/src/utils/queryUnlessCancelled.ts +0 -28
- package/src/utils/websocket.ts +0 -293
- package/vite.config.ts +0 -58
- package/vitest.config.ts +0 -69
|
@@ -1,872 +0,0 @@
|
|
|
1
|
-
import { ReqoreButton, ReqoreP } from '@qoretechnologies/reqore';
|
|
2
|
-
import { StoryObj } from '@storybook/react-vite';
|
|
3
|
-
import { expect, fireEvent, waitFor, within } from 'storybook/test';
|
|
4
|
-
import { useState } from 'react';
|
|
5
|
-
import { StoryMeta } from '../../../../types';
|
|
6
|
-
import { SelectFormField } from './Select';
|
|
7
|
-
import {
|
|
8
|
-
SELECT_DIALOG_MIN_HEIGHT,
|
|
9
|
-
SELECT_DIALOG_MIN_WIDTH,
|
|
10
|
-
UNAVAILABLE_ITEM_CLASS,
|
|
11
|
-
} from './SelectCollection';
|
|
12
|
-
|
|
13
|
-
const meta = {
|
|
14
|
-
component: SelectFormField,
|
|
15
|
-
title: 'Components/Form/Select',
|
|
16
|
-
args: {
|
|
17
|
-
onChange: undefined,
|
|
18
|
-
},
|
|
19
|
-
render(args) {
|
|
20
|
-
const [value, setValue] = useState(args.value);
|
|
21
|
-
return (
|
|
22
|
-
<SelectFormField
|
|
23
|
-
{...args}
|
|
24
|
-
value={value}
|
|
25
|
-
onChange={(value) => {
|
|
26
|
-
args.onChange?.(value);
|
|
27
|
-
setValue(value);
|
|
28
|
-
}}
|
|
29
|
-
/>
|
|
30
|
-
);
|
|
31
|
-
},
|
|
32
|
-
} as StoryMeta<typeof SelectFormField>;
|
|
33
|
-
|
|
34
|
-
export default meta;
|
|
35
|
-
type Story = StoryObj<typeof meta>;
|
|
36
|
-
|
|
37
|
-
export const Items: Story = {
|
|
38
|
-
args: {
|
|
39
|
-
items: [
|
|
40
|
-
{ display_name: 'Item 1', value: 'item1' },
|
|
41
|
-
{ display_name: 'Item 2', value: 'item2' },
|
|
42
|
-
],
|
|
43
|
-
},
|
|
44
|
-
parameters: {
|
|
45
|
-
docs: {
|
|
46
|
-
description: {
|
|
47
|
-
story:
|
|
48
|
-
'Renders the Select field with two simple items and no value. Clicking the trigger opens the popover with the item list.',
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
async play({ canvasElement }) {
|
|
53
|
-
const canvas = within(canvasElement);
|
|
54
|
-
await fireEvent.click(canvas.getByRole('button'));
|
|
55
|
-
await waitFor(() => expect(document.querySelector('.reqore-popover-content')).toBeInTheDocument(), {
|
|
56
|
-
timeout: 1000,
|
|
57
|
-
});
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
export const WithValueLabel: Story = {
|
|
62
|
-
args: {
|
|
63
|
-
value: 'seconds',
|
|
64
|
-
valueLabel: 's',
|
|
65
|
-
items: [{ value: 'ms' }, { value: 'seconds' }, { value: 'minutes' }],
|
|
66
|
-
},
|
|
67
|
-
parameters: {
|
|
68
|
-
docs: {
|
|
69
|
-
description: {
|
|
70
|
-
story:
|
|
71
|
-
'Renders the Select field with a `valueLabel` override — the closed trigger shows the short "s" for the selected value, while opening the popover still lists the full item names.',
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
async play({ canvasElement }) {
|
|
76
|
-
const canvas = within(canvasElement);
|
|
77
|
-
await expect(canvas.getByText('s')).toBeInTheDocument();
|
|
78
|
-
await fireEvent.click(canvas.getByText('s'));
|
|
79
|
-
await waitFor(
|
|
80
|
-
() => expect(within(document.body).getByText('seconds')).toBeInTheDocument(),
|
|
81
|
-
{ timeout: 5000 }
|
|
82
|
-
);
|
|
83
|
-
await expect(within(document.body).getByText('minutes')).toBeInTheDocument();
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
export const ItemsWithDescription: Story = {
|
|
88
|
-
parameters: {
|
|
89
|
-
docs: {
|
|
90
|
-
description: {
|
|
91
|
-
story:
|
|
92
|
-
'Renders the Select field with twenty items, each carrying a description, icon or image. Opening the picker mounts a modal collection with all twenty entries.',
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
args: {
|
|
97
|
-
forceDropdown: false,
|
|
98
|
-
items: [
|
|
99
|
-
{ display_name: 'Item 1', desc: 'This is item 1', value: 'item1', icon: 'MoneyEuroCircleFill', groups: ['Miscellaneous'] },
|
|
100
|
-
{ display_name: 'Item 2', desc: 'This is item 2', value: 'item2', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
101
|
-
{ display_name: 'Item 3', short_desc: 'This is item 3', value: 'item3', icon: 'AppleFill' },
|
|
102
|
-
{ display_name: 'Item 4', short_desc: 'This is item 4', value: 'item4', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
103
|
-
{ display_name: 'Item 5', desc: 'This is item 5', value: 'item5', icon: 'MoneyEuroCircleFill' },
|
|
104
|
-
{ display_name: 'Item 6', desc: 'This is item 6', value: 'item6', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
105
|
-
{ display_name: 'Item 7', short_desc: 'This is item 7', value: 'item7', icon: 'AppleFill' },
|
|
106
|
-
{ display_name: 'Item 8', short_desc: 'This is item 8', value: 'item8', groups: ['Comparators'], image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
107
|
-
{ display_name: 'Item 9', desc: 'This is item 9', value: 'item9', icon: 'MoneyEuroCircleFill' },
|
|
108
|
-
{ display_name: 'Item 10', desc: 'This is item 10', value: 'item10', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
109
|
-
{ display_name: 'Item 11', short_desc: 'This is item 11', value: 'item11', icon: 'AppleFill', groups: ['Comparators'] },
|
|
110
|
-
{ display_name: 'Item 12', short_desc: 'This is item 12', value: 'item12', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
111
|
-
{ display_name: 'Item 13', desc: 'This is item 13', value: 'item13', icon: 'MoneyEuroCircleFill' },
|
|
112
|
-
{ display_name: 'Item 14', desc: 'This is item 14', value: 'item14', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
113
|
-
{ display_name: 'Item 15', short_desc: 'This is item 15', value: 'item15', icon: 'AppleFill' },
|
|
114
|
-
{ display_name: 'Item 16', short_desc: 'This is item 16', value: 'item16', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
115
|
-
{ display_name: 'Item 17', desc: 'This is item 17', value: 'item17', icon: 'MoneyEuroCircleFill' },
|
|
116
|
-
{ display_name: 'Item 18', desc: 'This is item 18', value: 'item18', image: 'https://avatars.githubusercontent.com/u/8861481?v=4', groups: ['Comparators'] },
|
|
117
|
-
{ display_name: 'Item 19', short_desc: 'This is item 19', value: 'item19', icon: 'AppleFill' },
|
|
118
|
-
{ display_name: 'Item 20', short_desc: 'This is item 20', value: 'item20', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
119
|
-
],
|
|
120
|
-
},
|
|
121
|
-
async play({ canvasElement }) {
|
|
122
|
-
const canvas = within(canvasElement);
|
|
123
|
-
await fireEvent.click(canvas.getByRole('button'));
|
|
124
|
-
await waitFor(() => expect(document.querySelector('.reqore-modal')).toBeInTheDocument(), { timeout: 1000 });
|
|
125
|
-
await waitFor(
|
|
126
|
-
() => expect(document.querySelectorAll('.reqore-collection-item').length).toBe(20),
|
|
127
|
-
{ timeout: 1000 }
|
|
128
|
-
);
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
export const ItemsWithDescriptionAndMessages: Story = {
|
|
133
|
-
parameters: {
|
|
134
|
-
docs: {
|
|
135
|
-
description: {
|
|
136
|
-
story:
|
|
137
|
-
'Renders the Select field with two items that carry inline messages of different intents. The picker modal shows the messages beneath each item.',
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
},
|
|
141
|
-
args: {
|
|
142
|
-
forceDropdown: false,
|
|
143
|
-
items: [
|
|
144
|
-
{
|
|
145
|
-
display_name: 'Item 1',
|
|
146
|
-
value: 'item1',
|
|
147
|
-
desc: 'This is item 1',
|
|
148
|
-
messages: [{ title: 'Test', intent: 'danger', content: 'This is a test' }],
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
display_name: 'Item 2',
|
|
152
|
-
value: 'item2',
|
|
153
|
-
desc: 'This is item 2',
|
|
154
|
-
messages: [
|
|
155
|
-
{ title: 'Test', intent: 'success', content: 'This is a test' },
|
|
156
|
-
{ intent: 'warning', content: 'This is a test' },
|
|
157
|
-
],
|
|
158
|
-
},
|
|
159
|
-
],
|
|
160
|
-
},
|
|
161
|
-
async play({ canvasElement }) {
|
|
162
|
-
const canvas = within(canvasElement);
|
|
163
|
-
await fireEvent.click(canvas.getByRole('button'));
|
|
164
|
-
await waitFor(() => expect(document.querySelector('.reqore-modal')).toBeInTheDocument(), { timeout: 1000 });
|
|
165
|
-
await waitFor(
|
|
166
|
-
() => expect(document.querySelectorAll('.reqore-collection-item').length).toBe(2),
|
|
167
|
-
{ timeout: 1000 }
|
|
168
|
-
);
|
|
169
|
-
},
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
export const DisabledItemsWithIntent: Story = {
|
|
173
|
-
args: {
|
|
174
|
-
items: [
|
|
175
|
-
{ display_name: 'Item 1', value: 'item1' },
|
|
176
|
-
{ display_name: 'Item 2', value: 'item2' },
|
|
177
|
-
{ display_name: 'Disabled item', disabled: true, value: 'item3' },
|
|
178
|
-
{ display_name: 'Item with intent', intent: 'success', value: 'item4' },
|
|
179
|
-
{ display_name: 'Disabled Item with Intent', intent: 'danger', disabled: true, value: 'item5' },
|
|
180
|
-
],
|
|
181
|
-
},
|
|
182
|
-
parameters: {
|
|
183
|
-
docs: {
|
|
184
|
-
description: {
|
|
185
|
-
story:
|
|
186
|
-
'Renders the Select field with a mix of enabled, disabled and intent-tagged items — the disabled entries are non-interactive while success/danger items carry their intent styling.',
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
},
|
|
190
|
-
async play({ canvasElement }) {
|
|
191
|
-
const canvas = within(canvasElement);
|
|
192
|
-
await fireEvent.click(canvas.getByRole('button'));
|
|
193
|
-
await waitFor(() => expect(document.querySelector('.reqore-popover-content')).toBeInTheDocument(), { timeout: 1000 });
|
|
194
|
-
},
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
export const DisabledItemsWithIntentAndDescriptions: Story = {
|
|
198
|
-
args: {
|
|
199
|
-
forceDropdown: false,
|
|
200
|
-
items: [
|
|
201
|
-
{ display_name: 'Item 1', desc: 'This is item 1', value: 'item1' },
|
|
202
|
-
{ display_name: 'Item 2', short_desc: 'This is item 2', value: 'item2' },
|
|
203
|
-
{ display_name: 'Disabled item', disabled: true, short_desc: 'This is item 3', value: 'item3' },
|
|
204
|
-
{ display_name: 'Item with intent', intent: 'success', short_desc: 'This is item 4', value: 'item4' },
|
|
205
|
-
{ display_name: 'Disabled Item with Intent', intent: 'danger', disabled: true, short_desc: 'This is item 5', value: 'item5' },
|
|
206
|
-
],
|
|
207
|
-
},
|
|
208
|
-
parameters: {
|
|
209
|
-
docs: {
|
|
210
|
-
description: {
|
|
211
|
-
story:
|
|
212
|
-
'Renders the Select field with five items mixing intents, descriptions and disabled states — the picker modal shows all five so their combined presentation can be reviewed.',
|
|
213
|
-
},
|
|
214
|
-
},
|
|
215
|
-
},
|
|
216
|
-
async play({ canvasElement }) {
|
|
217
|
-
const canvas = within(canvasElement);
|
|
218
|
-
await fireEvent.click(canvas.getByRole('button'));
|
|
219
|
-
await waitFor(() => expect(document.querySelector('.reqore-modal')).toBeInTheDocument(), { timeout: 1000 });
|
|
220
|
-
await waitFor(
|
|
221
|
-
() => expect(document.querySelectorAll('.reqore-collection-item').length).toBe(5),
|
|
222
|
-
{ timeout: 1000 }
|
|
223
|
-
);
|
|
224
|
-
},
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
export const WithValue: Story = {
|
|
228
|
-
args: {
|
|
229
|
-
value: 'item2',
|
|
230
|
-
items: [
|
|
231
|
-
{ display_name: 'Item 1', value: 'item1' },
|
|
232
|
-
{ display_name: 'Item 2', value: 'item2' },
|
|
233
|
-
],
|
|
234
|
-
},
|
|
235
|
-
parameters: {
|
|
236
|
-
docs: {
|
|
237
|
-
description: {
|
|
238
|
-
story:
|
|
239
|
-
'Renders the Select field with two items and item2 pre-selected — the trigger shows the selected label and clicking it opens the popover.',
|
|
240
|
-
},
|
|
241
|
-
},
|
|
242
|
-
},
|
|
243
|
-
async play({ canvasElement }) {
|
|
244
|
-
const canvas = within(canvasElement);
|
|
245
|
-
await expect(canvas.getByRole('button')).toBeInTheDocument();
|
|
246
|
-
await fireEvent.click(canvas.getByRole('button'));
|
|
247
|
-
await waitFor(() => expect(document.querySelector('.reqore-popover-content')).toBeInTheDocument(), { timeout: 1000 });
|
|
248
|
-
},
|
|
249
|
-
};
|
|
250
|
-
|
|
251
|
-
export const WithValueAndErrors: Story = {
|
|
252
|
-
args: {
|
|
253
|
-
value: 'item2',
|
|
254
|
-
items: [
|
|
255
|
-
{ display_name: 'Item 1', desc: 'This is item 1', intent: 'danger', value: 'item1' },
|
|
256
|
-
{ display_name: 'Item 2', desc: 'This is item 1', value: 'item2', image: 'https://avatars.githubusercontent.com/u/8861481?v=4' },
|
|
257
|
-
],
|
|
258
|
-
},
|
|
259
|
-
parameters: {
|
|
260
|
-
docs: {
|
|
261
|
-
description: {
|
|
262
|
-
story:
|
|
263
|
-
'Renders the Select field with a danger-intent item in the list, but the selected value points at the healthy item — the trigger stays clean while the picker highlights the danger item.',
|
|
264
|
-
},
|
|
265
|
-
},
|
|
266
|
-
},
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
export const WithValueAndErrorsSelected: Story = {
|
|
270
|
-
args: {
|
|
271
|
-
value: 'item1',
|
|
272
|
-
items: [
|
|
273
|
-
{ display_name: 'Item 1', desc: 'This is item 1', intent: 'danger', value: 'item1' },
|
|
274
|
-
{ display_name: 'Item 2', desc: 'This is item 1', value: 'item2' },
|
|
275
|
-
],
|
|
276
|
-
},
|
|
277
|
-
parameters: {
|
|
278
|
-
docs: {
|
|
279
|
-
description: {
|
|
280
|
-
story:
|
|
281
|
-
'Renders the Select field with the danger-intent item pre-selected — the trigger carries the danger styling so the operator can see the selected item has an error.',
|
|
282
|
-
},
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
export const WithValueAndWarningsSelected: Story = {
|
|
288
|
-
args: {
|
|
289
|
-
value: 'item1',
|
|
290
|
-
items: [
|
|
291
|
-
{ display_name: 'Item 1', desc: 'This is item 1', metadata: { needs_auth: true }, value: 'item1' },
|
|
292
|
-
{ display_name: 'Item 2', desc: 'This is item 1', value: 'item2' },
|
|
293
|
-
],
|
|
294
|
-
},
|
|
295
|
-
parameters: {
|
|
296
|
-
docs: {
|
|
297
|
-
description: {
|
|
298
|
-
story:
|
|
299
|
-
'Renders the Select field with a pre-selected item whose metadata declares needs_auth — the trigger surfaces the warning so the operator knows the item needs configuration.',
|
|
300
|
-
},
|
|
301
|
-
},
|
|
302
|
-
},
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
export const AutoSelect: Story = {
|
|
306
|
-
args: {
|
|
307
|
-
autoSelect: true,
|
|
308
|
-
items: [{ display_name: 'Item 1', value: 'item1' }],
|
|
309
|
-
},
|
|
310
|
-
parameters: {
|
|
311
|
-
docs: {
|
|
312
|
-
description: {
|
|
313
|
-
story:
|
|
314
|
-
'Renders the Select field with autoSelect and a single item — the field auto-selects the only option and the trigger shows its label on mount.',
|
|
315
|
-
},
|
|
316
|
-
},
|
|
317
|
-
},
|
|
318
|
-
async play({ canvasElement }) {
|
|
319
|
-
const canvas = within(canvasElement);
|
|
320
|
-
await waitFor(() => expect(canvas.getByText('Item 1')).toBeInTheDocument(), { timeout: 500 });
|
|
321
|
-
},
|
|
322
|
-
};
|
|
323
|
-
|
|
324
|
-
export const AutoSelectWithShortDescriptions: Story = {
|
|
325
|
-
args: {
|
|
326
|
-
autoSelect: true,
|
|
327
|
-
items: [{ display_name: 'Item 1', short_desc: 'Short item 1 description', value: 'item1' }],
|
|
328
|
-
},
|
|
329
|
-
parameters: {
|
|
330
|
-
docs: {
|
|
331
|
-
description: {
|
|
332
|
-
story:
|
|
333
|
-
'Renders the Select field with autoSelect and a single item that carries a short description — the field auto-selects and the trigger shows both the label and the short description.',
|
|
334
|
-
},
|
|
335
|
-
},
|
|
336
|
-
},
|
|
337
|
-
async play({ canvasElement }) {
|
|
338
|
-
const canvas = within(canvasElement);
|
|
339
|
-
await waitFor(() => expect(canvas.getByText('Item 1')).toBeInTheDocument(), { timeout: 500 });
|
|
340
|
-
},
|
|
341
|
-
};
|
|
342
|
-
|
|
343
|
-
export const AutoSelectWithDescriptions: Story = {
|
|
344
|
-
args: {
|
|
345
|
-
autoSelect: true,
|
|
346
|
-
items: [{ display_name: 'Item 1', desc: 'This is item 1', value: 'item1' }],
|
|
347
|
-
},
|
|
348
|
-
parameters: {
|
|
349
|
-
docs: {
|
|
350
|
-
description: {
|
|
351
|
-
story:
|
|
352
|
-
'Renders the Select field with autoSelect and a single item that carries a full description — the field auto-selects and the trigger shows the label with the description.',
|
|
353
|
-
},
|
|
354
|
-
},
|
|
355
|
-
},
|
|
356
|
-
async play({ canvasElement }) {
|
|
357
|
-
const canvas = within(canvasElement);
|
|
358
|
-
await waitFor(() => expect(canvas.getByText('Item 1')).toBeInTheDocument(), { timeout: 500 });
|
|
359
|
-
},
|
|
360
|
-
};
|
|
361
|
-
|
|
362
|
-
export const ItemValuesAreObjectsAndCanBeSelected: Story = {
|
|
363
|
-
args: {
|
|
364
|
-
forceDropdown: false,
|
|
365
|
-
value: { id: { type: 'string', value: 'item1' } },
|
|
366
|
-
items: [
|
|
367
|
-
{ value: { id: { type: 'string', value: 'item1' } } },
|
|
368
|
-
{
|
|
369
|
-
display_name: 'Item 2',
|
|
370
|
-
desc: 'This is item 2',
|
|
371
|
-
value: { id: { type: 'string', value: 'item2' } },
|
|
372
|
-
},
|
|
373
|
-
],
|
|
374
|
-
},
|
|
375
|
-
parameters: {
|
|
376
|
-
docs: {
|
|
377
|
-
description: {
|
|
378
|
-
story:
|
|
379
|
-
'Renders the Select field with items whose values are hashes rather than primitives. The unlabelled first item shows its JSON as the trigger label; picking the second item swaps the selection to its display_name.',
|
|
380
|
-
},
|
|
381
|
-
},
|
|
382
|
-
},
|
|
383
|
-
async play({ canvasElement }) {
|
|
384
|
-
const canvas = within(canvasElement);
|
|
385
|
-
await waitFor(
|
|
386
|
-
() => expect(canvas.getByText('{"id":{"type":"string","value":"item1"}}')).toBeInTheDocument(),
|
|
387
|
-
{ timeout: 500 }
|
|
388
|
-
);
|
|
389
|
-
await fireEvent.click(canvas.getByRole('button'));
|
|
390
|
-
await waitFor(() => expect(document.querySelector('.reqore-modal')).toBeInTheDocument(), { timeout: 1000 });
|
|
391
|
-
const item2 = Array.from(document.querySelectorAll('.reqore-collection-item')).find(
|
|
392
|
-
(el) => el.textContent?.includes('Item 2')
|
|
393
|
-
);
|
|
394
|
-
await fireEvent.click(item2!);
|
|
395
|
-
await waitFor(() => expect(canvas.getByText('Item 2')).toBeInTheDocument(), { timeout: 1000 });
|
|
396
|
-
},
|
|
397
|
-
};
|
|
398
|
-
|
|
399
|
-
const PATH_ITEMS = [
|
|
400
|
-
{
|
|
401
|
-
display_name: 'status from create',
|
|
402
|
-
short_desc: '$.create.status (int)',
|
|
403
|
-
value: '$.create.status',
|
|
404
|
-
},
|
|
405
|
-
{
|
|
406
|
-
display_name: 'body from create',
|
|
407
|
-
short_desc: '$.create.body (auto)',
|
|
408
|
-
value: '$.create.body',
|
|
409
|
-
},
|
|
410
|
-
{
|
|
411
|
-
display_name: 'headers from create',
|
|
412
|
-
short_desc: '$.create.headers (hash)',
|
|
413
|
-
value: '$.create.headers',
|
|
414
|
-
},
|
|
415
|
-
];
|
|
416
|
-
|
|
417
|
-
export const Creatable: Story = {
|
|
418
|
-
args: {
|
|
419
|
-
canCreateItems: true,
|
|
420
|
-
items: PATH_ITEMS,
|
|
421
|
-
value: '$.create.status',
|
|
422
|
-
},
|
|
423
|
-
parameters: {
|
|
424
|
-
docs: {
|
|
425
|
-
description: {
|
|
426
|
-
story:
|
|
427
|
-
'Renders the Select field as a chip plus a searchable list. The chosen value reads as the label its producer gave it, and a value the list does not offer can be typed and created — the case a reference path lands in once it goes deeper than the candidates reach.',
|
|
428
|
-
},
|
|
429
|
-
},
|
|
430
|
-
},
|
|
431
|
-
};
|
|
432
|
-
|
|
433
|
-
export const CreatableWithValueOutsideTheList: Story = {
|
|
434
|
-
args: {
|
|
435
|
-
canCreateItems: true,
|
|
436
|
-
items: PATH_ITEMS,
|
|
437
|
-
value: '$.create.body.items[0].sku',
|
|
438
|
-
},
|
|
439
|
-
parameters: {
|
|
440
|
-
docs: {
|
|
441
|
-
description: {
|
|
442
|
-
story:
|
|
443
|
-
'Renders a creatable Select holding a value no item offers. The chip is drawn from the value itself, so a hand-entered path still reads as a chosen value rather than as an empty field.',
|
|
444
|
-
},
|
|
445
|
-
},
|
|
446
|
-
},
|
|
447
|
-
};
|
|
448
|
-
|
|
449
|
-
export const CreatableEmpty: Story = {
|
|
450
|
-
args: {
|
|
451
|
-
canCreateItems: true,
|
|
452
|
-
items: PATH_ITEMS,
|
|
453
|
-
},
|
|
454
|
-
parameters: {
|
|
455
|
-
docs: {
|
|
456
|
-
description: {
|
|
457
|
-
story:
|
|
458
|
-
'Renders a creatable Select with nothing chosen yet — the empty state says so rather than showing a blank text box.',
|
|
459
|
-
},
|
|
460
|
-
},
|
|
461
|
-
},
|
|
462
|
-
};
|
|
463
|
-
|
|
464
|
-
export const CreatableOffersToCreate: Story = {
|
|
465
|
-
args: {
|
|
466
|
-
canCreateItems: true,
|
|
467
|
-
items: PATH_ITEMS,
|
|
468
|
-
},
|
|
469
|
-
parameters: {
|
|
470
|
-
docs: {
|
|
471
|
-
description: {
|
|
472
|
-
story:
|
|
473
|
-
'Typing a value no candidate matches offers to create it, above the candidates that do match. This is the affordance a single-value field had no way to express before: the list stays a list, and the value outside it is still reachable.',
|
|
474
|
-
},
|
|
475
|
-
},
|
|
476
|
-
},
|
|
477
|
-
async play({ canvasElement }) {
|
|
478
|
-
const canvas = within(canvasElement);
|
|
479
|
-
const input = canvas.getByRole('textbox');
|
|
480
|
-
await fireEvent.change(input, { target: { value: '$.create.body.items[0].sku' } });
|
|
481
|
-
await waitFor(
|
|
482
|
-
() => expect(document.querySelector('.reqore-popover-content')).toBeInTheDocument(),
|
|
483
|
-
{ timeout: 2000 }
|
|
484
|
-
);
|
|
485
|
-
},
|
|
486
|
-
};
|
|
487
|
-
|
|
488
|
-
// ── per-item row affordances ──────────────────────────────────────────────
|
|
489
|
-
|
|
490
|
-
/**
|
|
491
|
-
* A caller's row control, as a component the item NAMES rather than one it
|
|
492
|
-
* renders. Items travel through `JSON.stringify(items)` memo keys, and a React
|
|
493
|
-
* element is circular through its fibre — `{ as, props }` is what survives.
|
|
494
|
-
*/
|
|
495
|
-
const ExplainThisItem = ({ explanation }: { explanation?: string }) => (
|
|
496
|
-
<ReqoreButton
|
|
497
|
-
size='tiny'
|
|
498
|
-
minimal
|
|
499
|
-
flat
|
|
500
|
-
compact
|
|
501
|
-
fixed
|
|
502
|
-
icon='QuestionLine'
|
|
503
|
-
className='select-item-explanation'
|
|
504
|
-
aria-label='What this is'
|
|
505
|
-
tooltip={{ handler: 'click', content: explanation, maxWidth: '360px' }}
|
|
506
|
-
// Reading is not choosing: the whole row is one click target.
|
|
507
|
-
onClick={(event) => event.stopPropagation()}
|
|
508
|
-
/>
|
|
509
|
-
);
|
|
510
|
-
|
|
511
|
-
/** Whatever a caller wants inside the row's own hover. */
|
|
512
|
-
const ItemProse = ({ text }: { text?: string }) => <ReqoreP>{text}</ReqoreP>;
|
|
513
|
-
|
|
514
|
-
const EXPLAINED_ITEMS = [
|
|
515
|
-
'Coverage: process',
|
|
516
|
-
'Coverage: runtime',
|
|
517
|
-
'Event: posted',
|
|
518
|
-
'Value: equals',
|
|
519
|
-
'Value: partial match',
|
|
520
|
-
'String: matches regex',
|
|
521
|
-
].map((display_name) => ({
|
|
522
|
-
display_name,
|
|
523
|
-
value: display_name,
|
|
524
|
-
short_desc: `What ${display_name} checks, in one line.`,
|
|
525
|
-
desc: `What ${display_name} checks, in one line.`,
|
|
526
|
-
title_actions: [{ as: ExplainThisItem, props: { explanation: `All of what ${display_name} is for.` } }],
|
|
527
|
-
tooltip: {
|
|
528
|
-
handler: 'hover' as const,
|
|
529
|
-
delay: 0,
|
|
530
|
-
placement: 'bottom-start' as const,
|
|
531
|
-
maxWidth: '360px',
|
|
532
|
-
content: { as: ItemProse, props: { text: `All of what ${display_name} is for.` } },
|
|
533
|
-
},
|
|
534
|
-
}));
|
|
535
|
-
|
|
536
|
-
const openTheCollection = async (canvasElement: HTMLElement) => {
|
|
537
|
-
await fireEvent.click(within(canvasElement).getByRole('button'));
|
|
538
|
-
await waitFor(
|
|
539
|
-
() => expect(document.querySelector('.reqraft-select-dialog .reqore-collection-item')).toBeTruthy(),
|
|
540
|
-
{ timeout: 5000 }
|
|
541
|
-
);
|
|
542
|
-
};
|
|
543
|
-
|
|
544
|
-
const firstRow = () =>
|
|
545
|
-
document.querySelector('.reqraft-select-dialog .reqore-collection-item') as HTMLElement;
|
|
546
|
-
|
|
547
|
-
export const ItemActionsInTheTitleBar: Story = {
|
|
548
|
-
args: {
|
|
549
|
-
forceDropdown: false,
|
|
550
|
-
items: EXPLAINED_ITEMS,
|
|
551
|
-
},
|
|
552
|
-
parameters: {
|
|
553
|
-
docs: {
|
|
554
|
-
description: {
|
|
555
|
-
story:
|
|
556
|
-
"Each offered item carries a control through `title_actions`, which renders it in the row's title bar, inline with the name. An item's `actions` render in the row BODY under the description and cost every entry a line of its own — measured at 31px of a 73px row on a list of twenty-nine. Both seams exist; this is the one for a single icon on a long list.",
|
|
557
|
-
},
|
|
558
|
-
},
|
|
559
|
-
},
|
|
560
|
-
async play({ canvasElement }) {
|
|
561
|
-
await openTheCollection(canvasElement);
|
|
562
|
-
const row = firstRow();
|
|
563
|
-
/* `:scope >`: `Element.querySelector` matches against the whole document
|
|
564
|
-
and then keeps what is inside the element, so a bare
|
|
565
|
-
`.reqore-panel-content x` finds a control in the row's own TITLE — the
|
|
566
|
-
modal around the collection is a panel too. */
|
|
567
|
-
await expect(
|
|
568
|
-
row.querySelector(':scope > .reqore-panel-title .select-item-explanation')
|
|
569
|
-
).toBeTruthy();
|
|
570
|
-
await expect(
|
|
571
|
-
row.querySelector(':scope > .reqore-panel-content .select-item-explanation')
|
|
572
|
-
).toBeNull();
|
|
573
|
-
},
|
|
574
|
-
};
|
|
575
|
-
|
|
576
|
-
export const ItemTooltipOnTheRow: Story = {
|
|
577
|
-
args: {
|
|
578
|
-
forceDropdown: false,
|
|
579
|
-
items: EXPLAINED_ITEMS,
|
|
580
|
-
},
|
|
581
|
-
parameters: {
|
|
582
|
-
docs: {
|
|
583
|
-
description: {
|
|
584
|
-
story:
|
|
585
|
-
"The per-item `tooltip` puts content on the ROW's own hover: the whole entry is the target, and the list pays nothing in height for something that is not on screen until a pointer rests. The content is a `{ as, props }` descriptor rather than a node, so an item still survives the `JSON.stringify(items)` memo key it travels under.",
|
|
586
|
-
},
|
|
587
|
-
},
|
|
588
|
-
},
|
|
589
|
-
async play({ canvasElement }) {
|
|
590
|
-
await openTheCollection(canvasElement);
|
|
591
|
-
await fireEvent.mouseEnter(firstRow());
|
|
592
|
-
await waitFor(
|
|
593
|
-
() =>
|
|
594
|
-
expect(
|
|
595
|
-
document.querySelector('[data-popper-placement]')?.textContent
|
|
596
|
-
).toContain('All of what Coverage: process is for.'),
|
|
597
|
-
{ timeout: 5000 }
|
|
598
|
-
);
|
|
599
|
-
},
|
|
600
|
-
};
|
|
601
|
-
|
|
602
|
-
const REFUSED_ITEMS = [
|
|
603
|
-
{
|
|
604
|
-
display_name: 'Coverage: process',
|
|
605
|
-
value: 'process_coverage',
|
|
606
|
-
short_desc: 'Passes when the process you name ran code.',
|
|
607
|
-
desc: 'Passes when the process you name ran code.',
|
|
608
|
-
},
|
|
609
|
-
{
|
|
610
|
-
display_name: 'Step: result',
|
|
611
|
-
value: 'step_result',
|
|
612
|
-
short_desc: 'Passes when the named step reported this result.',
|
|
613
|
-
desc: 'Passes when the named step reported this result.',
|
|
614
|
-
disabled: true,
|
|
615
|
-
unavailable: {
|
|
616
|
-
intent: 'warning' as const,
|
|
617
|
-
content:
|
|
618
|
-
'Unavailable because some dependencies are not fulfilled: "Interface Kind" must be "workflow"',
|
|
619
|
-
},
|
|
620
|
-
},
|
|
621
|
-
{
|
|
622
|
-
display_name: 'File: written',
|
|
623
|
-
value: 'file_written',
|
|
624
|
-
short_desc: 'Passes when the target wrote the file.',
|
|
625
|
-
desc: 'Passes when the target wrote the file.',
|
|
626
|
-
disabled: true,
|
|
627
|
-
messages: [
|
|
628
|
-
{ intent: 'danger' as const, content: 'This sandbox denies the FILESYSTEM domain.' },
|
|
629
|
-
],
|
|
630
|
-
},
|
|
631
|
-
{
|
|
632
|
-
display_name: 'Value: equals',
|
|
633
|
-
value: 'value_equals',
|
|
634
|
-
short_desc: 'Passes when the value is exactly equal.',
|
|
635
|
-
desc: 'Passes when the value is exactly equal.',
|
|
636
|
-
},
|
|
637
|
-
];
|
|
638
|
-
|
|
639
|
-
export const UnavailableItemsSayWhy: Story = {
|
|
640
|
-
args: {
|
|
641
|
-
forceDropdown: false,
|
|
642
|
-
items: REFUSED_ITEMS,
|
|
643
|
-
},
|
|
644
|
-
parameters: {
|
|
645
|
-
docs: {
|
|
646
|
-
description: {
|
|
647
|
-
story:
|
|
648
|
-
"A value that cannot be picked is disabled and says why, never hidden — a choice that vanishes takes its own explanation with it. Two things refuse one and they render identically: the value's own `depends_on`, judged against the form it stands in (row 2), and a refusal the server had already decided as `disabled` with a message (row 3), for what only the server can know. The reason reads FIRST, above the description a `messages` entry would have landed under; the name is dimmed and the cursor says `not-allowed`; and the row keeps every pointer event, because reqore's `disabled` is `pointer-events: none` and would take the row's tooltip with it. What makes the row inert is having no click handler at all.",
|
|
649
|
-
},
|
|
650
|
-
},
|
|
651
|
-
},
|
|
652
|
-
async play({ canvasElement }) {
|
|
653
|
-
await openTheCollection(canvasElement);
|
|
654
|
-
const rows = () =>
|
|
655
|
-
[...document.querySelectorAll<HTMLElement>('.reqraft-select-dialog .reqore-collection-item')];
|
|
656
|
-
await waitFor(() => expect(rows().length).toBe(4), { timeout: 5000 });
|
|
657
|
-
/* By name, not by index: the collection sorts its rows, so a positional
|
|
658
|
-
lookup asserts about whichever row the sort happened to put there. */
|
|
659
|
-
const rowNamed = (label: string) =>
|
|
660
|
-
rows().find((row) =>
|
|
661
|
-
row.querySelector(':scope > .reqore-panel-title')?.textContent?.includes(label)
|
|
662
|
-
) as HTMLElement;
|
|
663
|
-
|
|
664
|
-
await expect(rows().filter((row) => row.className.includes(UNAVAILABLE_ITEM_CLASS)).length).toBe(
|
|
665
|
-
2
|
|
666
|
-
);
|
|
667
|
-
|
|
668
|
-
// The one thing this must never do: `DisabledElement` would make it `none`
|
|
669
|
-
// and take the row's tooltip with it.
|
|
670
|
-
const gated = rowNamed('Step: result');
|
|
671
|
-
await expect(getComputedStyle(gated).pointerEvents).toBe('auto');
|
|
672
|
-
await expect(getComputedStyle(gated).cursor).toBe('not-allowed');
|
|
673
|
-
await expect(getComputedStyle(rowNamed('Value: equals')).cursor).toBe('pointer');
|
|
674
|
-
|
|
675
|
-
// A served refusal is promoted out of `messages` and printed once, above
|
|
676
|
-
// the description rather than under it.
|
|
677
|
-
const text =
|
|
678
|
-
(rowNamed('File: written').querySelector(':scope > .reqore-panel-content') as HTMLElement)
|
|
679
|
-
.textContent || '';
|
|
680
|
-
await expect(text.indexOf('FILESYSTEM')).toBeGreaterThan(-1);
|
|
681
|
-
await expect(text.indexOf('FILESYSTEM')).toBeLessThan(text.indexOf('wrote the file'));
|
|
682
|
-
},
|
|
683
|
-
};
|
|
684
|
-
|
|
685
|
-
/** The dialog box itself — the element `re-resizable` sizes and drags. */
|
|
686
|
-
const selectDialog = () => document.querySelector('.reqraft-select-dialog') as HTMLElement;
|
|
687
|
-
|
|
688
|
-
const dialogSize = () => {
|
|
689
|
-
const rect = selectDialog().getBoundingClientRect();
|
|
690
|
-
return { width: Math.round(rect.width), height: Math.round(rect.height) };
|
|
691
|
-
};
|
|
692
|
-
|
|
693
|
-
/** Whether a part of the picker is whole inside the dialog, not cut off by it. */
|
|
694
|
-
const isWholeInsideTheDialog = (selector: string) => {
|
|
695
|
-
const box = selectDialog().getBoundingClientRect();
|
|
696
|
-
const part = selectDialog().querySelector(selector)?.getBoundingClientRect();
|
|
697
|
-
|
|
698
|
-
if (!part) {
|
|
699
|
-
return false;
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
return (
|
|
703
|
-
part.width > 0 &&
|
|
704
|
-
part.height > 0 &&
|
|
705
|
-
part.left >= box.left - 0.5 &&
|
|
706
|
-
part.right <= box.right + 0.5 &&
|
|
707
|
-
part.top >= box.top - 0.5 &&
|
|
708
|
-
part.bottom <= box.bottom + 0.5
|
|
709
|
-
);
|
|
710
|
-
};
|
|
711
|
-
|
|
712
|
-
/**
|
|
713
|
-
* Drag one of the dialog's resize handles, found by the cursor it sets.
|
|
714
|
-
*
|
|
715
|
-
* The first `col-resize` is the right edge and the first `row-resize` the top
|
|
716
|
-
* one, so a negative dx and a positive dy both shrink. The pointer is kept
|
|
717
|
-
* inside the box because the reqore we pin still clips the drawer, which
|
|
718
|
-
* amputates the outer half of every handle.
|
|
719
|
-
*/
|
|
720
|
-
const dragTheDialogBy = async (cursor: string, dx: number, dy: number) => {
|
|
721
|
-
const box = selectDialog();
|
|
722
|
-
const handle = [...box.querySelectorAll<HTMLElement>('div')].find((el) =>
|
|
723
|
-
(el.getAttribute('style') || '').includes(`cursor: ${cursor}`)
|
|
724
|
-
);
|
|
725
|
-
await expect(handle).toBeTruthy();
|
|
726
|
-
|
|
727
|
-
const rect = handle!.getBoundingClientRect();
|
|
728
|
-
const boxRect = box.getBoundingClientRect();
|
|
729
|
-
const x = Math.min(Math.max(rect.left + rect.width / 2, boxRect.left + 2), boxRect.right - 2);
|
|
730
|
-
const y = Math.min(Math.max(rect.top + rect.height / 2, boxRect.top + 2), boxRect.bottom - 2);
|
|
731
|
-
|
|
732
|
-
fireEvent.mouseDown(handle!, { clientX: x, clientY: y, button: 0 });
|
|
733
|
-
fireEvent.mouseMove(document, { clientX: x + dx, clientY: y + dy });
|
|
734
|
-
fireEvent.mouseUp(document, { clientX: x + dx, clientY: y + dy });
|
|
735
|
-
};
|
|
736
|
-
|
|
737
|
-
export const CannotBeDraggedBelowItsContent: Story = {
|
|
738
|
-
args: {
|
|
739
|
-
forceDropdown: false,
|
|
740
|
-
items: EXPLAINED_ITEMS,
|
|
741
|
-
},
|
|
742
|
-
parameters: {
|
|
743
|
-
docs: {
|
|
744
|
-
description: {
|
|
745
|
-
story:
|
|
746
|
-
'Drags the picker far past its minimum on both axes and shows that it stops at the size its own content needs — a row that fits, the search field, and the close control — rather than at the smaller floor the dialog chrome asks for.',
|
|
747
|
-
},
|
|
748
|
-
},
|
|
749
|
-
},
|
|
750
|
-
async play({ canvasElement }) {
|
|
751
|
-
await openTheCollection(canvasElement);
|
|
752
|
-
await waitFor(() => expect(dialogSize().width).toBe(700));
|
|
753
|
-
|
|
754
|
-
// Far past any floor, on both axes, the way it was reported: the picker
|
|
755
|
-
// was dragged to roughly 45px wide and still held a search box, a list and
|
|
756
|
-
// a close button stacked in a column nobody could read.
|
|
757
|
-
await dragTheDialogBy('col-resize', -3000, 0);
|
|
758
|
-
await dragTheDialogBy('row-resize', 0, 3000);
|
|
759
|
-
|
|
760
|
-
// The width at which a 300px collection row stops overhanging the dialog,
|
|
761
|
-
// and the height at which the header, the search field and one whole row
|
|
762
|
-
// all fit - the row taken at its tallest, the described row this same
|
|
763
|
-
// picker is also used with.
|
|
764
|
-
await waitFor(() =>
|
|
765
|
-
expect(dialogSize()).toEqual({
|
|
766
|
-
width: SELECT_DIALOG_MIN_WIDTH,
|
|
767
|
-
height: SELECT_DIALOG_MIN_HEIGHT,
|
|
768
|
-
})
|
|
769
|
-
);
|
|
770
|
-
|
|
771
|
-
// And what the floor was measured FOR is what has to be whole at it.
|
|
772
|
-
await expect(isWholeInsideTheDialog('.reqore-collection-item')).toBe(true);
|
|
773
|
-
await expect(isWholeInsideTheDialog('input')).toBe(true);
|
|
774
|
-
await expect(isWholeInsideTheDialog('.reqore-drawer-close-button')).toBe(true);
|
|
775
|
-
},
|
|
776
|
-
};
|
|
777
|
-
|
|
778
|
-
/**
|
|
779
|
-
* Narrow the story's own viewport for the duration of `body`, then put it back.
|
|
780
|
-
*
|
|
781
|
-
* `page.viewport` is the same call qlip makes to capture a story at phone size,
|
|
782
|
-
* and it is reached through a DYNAMIC import: `vitest/browser` throws on import
|
|
783
|
-
* outside Browser Mode, so a static one would take the Storybook dev server
|
|
784
|
-
* down with it. Where the call is unavailable — the dev server, a docs render —
|
|
785
|
-
* the body simply runs at whatever width it already had, and the assertion
|
|
786
|
-
* below is written against the live viewport so it stays true there.
|
|
787
|
-
*/
|
|
788
|
-
const withViewport = async (
|
|
789
|
-
width: number,
|
|
790
|
-
height: number,
|
|
791
|
-
/** `narrowed` is false where the call was unavailable — see above. */
|
|
792
|
-
body: (narrowed: boolean) => Promise<void>
|
|
793
|
-
) => {
|
|
794
|
-
let resize: ((w: number, h: number) => Promise<void>) | undefined;
|
|
795
|
-
try {
|
|
796
|
-
({
|
|
797
|
-
page: { viewport: resize },
|
|
798
|
-
} = (await import('vitest/browser')) as never);
|
|
799
|
-
} catch {
|
|
800
|
-
resize = undefined;
|
|
801
|
-
}
|
|
802
|
-
|
|
803
|
-
const was = { width: window.innerWidth, height: window.innerHeight };
|
|
804
|
-
await resize?.(width, height);
|
|
805
|
-
try {
|
|
806
|
-
await body(!!resize && window.innerWidth === width);
|
|
807
|
-
} finally {
|
|
808
|
-
// Unconditional: a viewport left narrowed is a 320px browser for every
|
|
809
|
-
// story that runs after this one in the same file.
|
|
810
|
-
await resize?.(was.width, was.height);
|
|
811
|
-
}
|
|
812
|
-
};
|
|
813
|
-
|
|
814
|
-
/**
|
|
815
|
-
* On a phone the floor is the SCREEN, not the content.
|
|
816
|
-
*
|
|
817
|
-
* `min(320px, 90vw)` / `min(180px, 90vh)` — the cap is the other half of the
|
|
818
|
-
* floor, and it only engages below about a 356px viewport, which is why the
|
|
819
|
-
* story above cannot see it: at the width the test browser runs at, `320px` is
|
|
820
|
-
* simply the smaller of the two. A floor wider than the screen would be a
|
|
821
|
-
* dialog whose edges cannot both be reached, which is worse than a cramped one;
|
|
822
|
-
* 90vw is reqore's own maximum for a centred modal, so the floor stops exactly
|
|
823
|
-
* where the ceiling is.
|
|
824
|
-
*/
|
|
825
|
-
export const ItsFloorIsCappedAtTheScreen: Story = {
|
|
826
|
-
args: {
|
|
827
|
-
forceDropdown: false,
|
|
828
|
-
items: EXPLAINED_ITEMS,
|
|
829
|
-
},
|
|
830
|
-
parameters: {
|
|
831
|
-
// Captured at the width the assertion below runs at, so the picture is the
|
|
832
|
-
// capped dialog rather than a phone-sized story of a desktop-sized one.
|
|
833
|
-
qlip: { viewport: { width: 320, height: 800 } },
|
|
834
|
-
docs: {
|
|
835
|
-
description: {
|
|
836
|
-
story:
|
|
837
|
-
'Drags the picker past its floor on a 320px-wide screen — the floor gives way to the viewport (90vw / 90vh) instead of holding a 320x180 box the screen cannot show, which is the cap the desktop story never reaches.',
|
|
838
|
-
},
|
|
839
|
-
},
|
|
840
|
-
},
|
|
841
|
-
async play({ canvasElement }) {
|
|
842
|
-
await withViewport(320, 800, async (narrowed) => {
|
|
843
|
-
await openTheCollection(canvasElement);
|
|
844
|
-
await dragTheDialogBy('col-resize', -3000, 0);
|
|
845
|
-
await dragTheDialogBy('row-resize', 0, 3000);
|
|
846
|
-
|
|
847
|
-
/* The floor AS DECLARED, resolved against the viewport this is actually
|
|
848
|
-
running in — 288x180 at 320x800, and the plain 320x180 anywhere wide
|
|
849
|
-
enough that the cap does not bite. One assertion, true in both, and it
|
|
850
|
-
is the formula itself rather than a number copied out of it. */
|
|
851
|
-
const capped = {
|
|
852
|
-
width: Math.min(SELECT_DIALOG_MIN_WIDTH, Math.round(window.innerWidth * 0.9)),
|
|
853
|
-
height: Math.min(SELECT_DIALOG_MIN_HEIGHT, Math.round(window.innerHeight * 0.9)),
|
|
854
|
-
};
|
|
855
|
-
await waitFor(() => expect(dialogSize()).toEqual(capped), { timeout: 5000 });
|
|
856
|
-
|
|
857
|
-
// And the claim the cap exists to make: the dialog is never wider or
|
|
858
|
-
// taller than the screen it has to be read on.
|
|
859
|
-
await expect(dialogSize().width).toBeLessThanOrEqual(window.innerWidth);
|
|
860
|
-
await expect(dialogSize().height).toBeLessThanOrEqual(window.innerHeight);
|
|
861
|
-
|
|
862
|
-
if (!narrowed) {
|
|
863
|
-
return;
|
|
864
|
-
}
|
|
865
|
-
/* Where the viewport really was narrowed — the test browser, which is
|
|
866
|
-
the run that gates — the cap is the branch that answered, and saying
|
|
867
|
-
so is what stops this story passing as a second copy of the desktop
|
|
868
|
-
one. */
|
|
869
|
-
await expect(dialogSize().width).toBeLessThan(SELECT_DIALOG_MIN_WIDTH);
|
|
870
|
-
});
|
|
871
|
-
},
|
|
872
|
-
};
|