@qwickapps/react-framework 1.3.4 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1688 -2
- package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts +66 -0
- package/dist/__tests__/schemas/transformers/MockSerializableComponent.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +7 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/components/Html.d.ts +28 -18
- package/dist/components/Html.d.ts.map +1 -1
- package/dist/components/Logo.d.ts +12 -35
- package/dist/components/Logo.d.ts.map +1 -1
- package/dist/components/Markdown.d.ts +18 -13
- package/dist/components/Markdown.d.ts.map +1 -1
- package/dist/components/QwickApp.d.ts +16 -3
- package/dist/components/QwickApp.d.ts.map +1 -1
- package/dist/components/QwickIcon.d.ts +23 -0
- package/dist/components/QwickIcon.d.ts.map +1 -0
- package/dist/components/SafeSpan.d.ts +12 -5
- package/dist/components/SafeSpan.d.ts.map +1 -1
- package/dist/components/Scaffold.d.ts.map +1 -1
- package/dist/components/base/ModelView.d.ts +101 -0
- package/dist/components/base/ModelView.d.ts.map +1 -0
- package/dist/components/base/index.d.ts +11 -0
- package/dist/components/base/index.d.ts.map +1 -0
- package/dist/components/blocks/Article.d.ts +12 -2
- package/dist/components/blocks/Article.d.ts.map +1 -1
- package/dist/components/blocks/Code.d.ts +13 -2
- package/dist/components/blocks/Code.d.ts.map +1 -1
- package/dist/components/blocks/Content.d.ts.map +1 -1
- package/dist/components/blocks/CoverImageHeader.d.ts.map +1 -1
- package/dist/components/blocks/FeatureCard.d.ts.map +1 -1
- package/dist/components/blocks/FeatureGrid.d.ts.map +1 -1
- package/dist/components/blocks/Footer.d.ts.map +1 -1
- package/dist/components/blocks/HeroBlock.d.ts +27 -13
- package/dist/components/blocks/HeroBlock.d.ts.map +1 -1
- package/dist/components/blocks/Image.d.ts +41 -0
- package/dist/components/blocks/Image.d.ts.map +1 -0
- package/dist/components/blocks/PageBannerHeader.d.ts.map +1 -1
- package/dist/components/blocks/ProductCard.d.ts.map +1 -1
- package/dist/components/blocks/Section.d.ts +16 -2
- package/dist/components/blocks/Section.d.ts.map +1 -1
- package/dist/components/blocks/Text.d.ts +41 -0
- package/dist/components/blocks/Text.d.ts.map +1 -0
- package/dist/components/blocks/index.d.ts +4 -0
- package/dist/components/blocks/index.d.ts.map +1 -1
- package/dist/components/buttons/Button.d.ts +23 -7
- package/dist/components/buttons/Button.d.ts.map +1 -1
- package/dist/components/forms/FormBlock.d.ts +19 -13
- package/dist/components/forms/FormBlock.d.ts.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/input/ChoiceInputField.d.ts +17 -11
- package/dist/components/input/ChoiceInputField.d.ts.map +1 -1
- package/dist/components/input/HtmlInputField.d.ts +17 -11
- package/dist/components/input/HtmlInputField.d.ts.map +1 -1
- package/dist/components/input/SelectInputField.d.ts +16 -10
- package/dist/components/input/SelectInputField.d.ts.map +1 -1
- package/dist/components/input/SwitchInputField.d.ts +16 -10
- package/dist/components/input/SwitchInputField.d.ts.map +1 -1
- package/dist/components/input/TextField.d.ts.map +1 -1
- package/dist/components/input/TextInputField.d.ts +16 -11
- package/dist/components/input/TextInputField.d.ts.map +1 -1
- package/dist/components/layout/GridCell.d.ts +23 -6
- package/dist/components/layout/GridCell.d.ts.map +1 -1
- package/dist/components/layout/GridLayout.d.ts +24 -23
- package/dist/components/layout/GridLayout.d.ts.map +1 -1
- package/dist/components/pages/FormPage.d.ts.map +1 -1
- package/dist/components/pages/Page.d.ts +49 -87
- package/dist/components/pages/Page.d.ts.map +1 -1
- package/dist/components/pages/index.d.ts +2 -2
- package/dist/components/pages/index.d.ts.map +1 -1
- package/dist/config/AppConfig.d.ts +49 -0
- package/dist/config/AppConfig.d.ts.map +1 -0
- package/dist/config/AppConfigBuilder.d.ts +75 -0
- package/dist/config/AppConfigBuilder.d.ts.map +1 -0
- package/dist/config/index.d.ts +13 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/types.d.ts +130 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config.d.ts +15 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.esm.js +451 -0
- package/dist/config.js +455 -0
- package/dist/contexts/PrintModeContext.d.ts +27 -0
- package/dist/contexts/PrintModeContext.d.ts.map +1 -0
- package/dist/contexts/QwickAppContext.d.ts +2 -2
- package/dist/contexts/QwickAppContext.d.ts.map +1 -1
- package/dist/contexts/ThemeContext.d.ts.map +1 -1
- package/dist/contexts/index.d.ts +2 -0
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/usePrintMode.d.ts +39 -0
- package/dist/hooks/usePrintMode.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +20722 -16021
- package/dist/index.js +20725 -16010
- package/dist/schemas/CodeSchema.d.ts +2 -1
- package/dist/schemas/CodeSchema.d.ts.map +1 -1
- package/dist/schemas/CollapsibleLayoutSchema.d.ts +2 -1
- package/dist/schemas/CollapsibleLayoutSchema.d.ts.map +1 -1
- package/dist/schemas/ContentSchema.d.ts +2 -1
- package/dist/schemas/ContentSchema.d.ts.map +1 -1
- package/dist/schemas/GridCellSchema.d.ts +25 -0
- package/dist/schemas/GridCellSchema.d.ts.map +1 -0
- package/dist/schemas/GridLayoutSchema.d.ts +23 -0
- package/dist/schemas/GridLayoutSchema.d.ts.map +1 -0
- package/dist/schemas/HtmlSchema.d.ts +14 -0
- package/dist/schemas/HtmlSchema.d.ts.map +1 -0
- package/dist/schemas/ImageSchema.d.ts +32 -0
- package/dist/schemas/ImageSchema.d.ts.map +1 -0
- package/dist/schemas/LogoSchema.d.ts +35 -0
- package/dist/schemas/LogoSchema.d.ts.map +1 -0
- package/dist/schemas/MarkdownSchema.d.ts +14 -0
- package/dist/schemas/MarkdownSchema.d.ts.map +1 -0
- package/dist/schemas/PageTemplateSchema.d.ts +31 -0
- package/dist/schemas/PageTemplateSchema.d.ts.map +1 -0
- package/dist/schemas/PrintConfigSchema.d.ts +31 -0
- package/dist/schemas/PrintConfigSchema.d.ts.map +1 -0
- package/dist/schemas/SectionSchema.d.ts +2 -1
- package/dist/schemas/SectionSchema.d.ts.map +1 -1
- package/dist/schemas/TextSchema.d.ts +37 -0
- package/dist/schemas/TextSchema.d.ts.map +1 -0
- package/dist/schemas/ViewModelSchema.d.ts +23 -0
- package/dist/schemas/ViewModelSchema.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +15 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/transformers/ComponentTransformer.d.ts +116 -0
- package/dist/schemas/transformers/ComponentTransformer.d.ts.map +1 -0
- package/dist/schemas/transformers/ReactNodeTransformer.d.ts +53 -0
- package/dist/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -0
- package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts +66 -0
- package/dist/schemas/transformers/__tests__/MockSerializableComponent.d.ts.map +1 -0
- package/dist/schemas/transformers/registry.d.ts +15 -0
- package/dist/schemas/transformers/registry.d.ts.map +1 -0
- package/dist/schemas/types/Serializable.d.ts +46 -0
- package/dist/schemas/types/Serializable.d.ts.map +1 -0
- package/dist/utils/htmlTransform.d.ts.map +1 -1
- package/dist/utils/reactUtils.d.ts +12 -3
- package/dist/utils/reactUtils.d.ts.map +1 -1
- package/package.json +17 -3
- package/src/{components/__tests__ → __tests__/components}/AccessibilityProvider.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Article.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Breadcrumbs.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Button.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/CardListGrid.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/ChoiceInputField.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Code.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Content.integration.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Content.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/CoverImageHeader.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/ErrorBoundary.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/FeatureCard.integration.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/FeatureGrid.integration.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/FeatureGrid.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/Footer.test.tsx +4 -4
- package/src/{components/__tests__ → __tests__/components}/FormBlock.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/HeroBlock.integration.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/HeroBlock.test.tsx +233 -7
- package/src/{components/__tests__ → __tests__/components}/Html.test.tsx +11 -2
- package/src/{components/__tests__ → __tests__/components}/HtmlInputField.test.tsx +3 -3
- package/src/__tests__/components/Logo.test.js +3 -3
- package/src/{components/__tests__ → __tests__/components}/Markdown.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/PageBannerHeader.test.tsx +3 -3
- package/src/{components/__tests__ → __tests__/components}/PaletteSwitcher.test.tsx +3 -3
- package/src/{components/__tests__ → __tests__/components}/ProductCard.test.tsx +4 -4
- package/src/{components/__tests__ → __tests__/components}/SafeSpan.integration.test.tsx +2 -2
- package/src/{components/__tests__ → __tests__/components}/SafeSpan.simple.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/SafeSpan.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Section.integration.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/Section.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/SelectInputField.test.tsx +1 -1
- package/src/{components/__tests__ → __tests__/components}/TextInputField.test.tsx +3 -3
- package/src/{components/__tests__ → __tests__/components}/ThemeSwitcher.test.tsx +3 -3
- package/src/__tests__/components/base/ModelView.test.tsx +220 -0
- package/src/__tests__/components/blocks/Code.performance.test.tsx +625 -0
- package/src/__tests__/components/blocks/Code.serialization.test.tsx +507 -0
- package/src/__tests__/components/blocks/HeroBlock.serialization.test.tsx +414 -0
- package/src/__tests__/components/blocks/Image.serialization.test.tsx +257 -0
- package/src/__tests__/components/blocks/Section.serialization.test.tsx +553 -0
- package/src/__tests__/components/blocks/Text.performance.test.tsx +442 -0
- package/src/__tests__/components/blocks/Text.serialization.test.tsx +491 -0
- package/src/__tests__/components/buttons/Button.serialization.test.tsx +443 -0
- package/src/__tests__/components/input/FormComponents.serialization.test.tsx +482 -0
- package/src/__tests__/components/input/SelectInputField.serialization.test.tsx +439 -0
- package/src/__tests__/components/input/TextInputField.serialization.test.tsx +359 -0
- package/src/{components/layout/CollapsibleLayout/__tests__ → __tests__/components/layout}/CollapsibleLayout.test.tsx +4 -4
- package/src/__tests__/components/layout/GridCell.serialization.test.tsx +403 -0
- package/src/__tests__/components/layout/GridLayout.serialization.test.tsx +311 -0
- package/src/__tests__/hooks/usePrintMode.test.ts +89 -0
- package/src/__tests__/schemas/PageTemplateSchema.test.ts +161 -0
- package/src/__tests__/schemas/PrintConfigSchema.test.ts +127 -0
- package/src/__tests__/schemas/ViewModelSchema.test.ts +80 -0
- package/src/__tests__/schemas/transformers/ComponentSerializationPatterns.test.tsx +602 -0
- package/src/__tests__/schemas/transformers/ComponentTransformer.htmlPatterns.test.ts +301 -0
- package/src/__tests__/schemas/transformers/ComponentTransformer.test.ts +521 -0
- package/src/__tests__/schemas/transformers/CrossBrowserCompatibility.test.ts +586 -0
- package/src/__tests__/schemas/transformers/MockSerializableComponent.ts +103 -0
- package/src/__tests__/schemas/transformers/RealWorldScenarios.test.tsx +1165 -0
- package/src/__tests__/schemas/transformers/SerializationErrorHandling.test.ts +602 -0
- package/src/__tests__/schemas/transformers/SerializationIntegration.test.tsx +691 -0
- package/src/__tests__/schemas/transformers/SerializationPerformance.test.ts +460 -0
- package/src/__tests__/schemas/transformers/TestAutomation.test.ts +597 -0
- package/src/{utils/__tests__ → __tests__/utils}/nested-dom-fix.test.tsx +1 -1
- package/src/components/ErrorBoundary.tsx +8 -8
- package/src/components/Html.tsx +147 -44
- package/src/components/Logo.tsx +198 -100
- package/src/components/Markdown.tsx +125 -16
- package/src/components/QwickApp.tsx +64 -31
- package/src/components/QwickIcon.tsx +59 -0
- package/src/components/SafeSpan.tsx +65 -10
- package/src/components/Scaffold.tsx +2 -8
- package/src/components/base/ModelView.tsx +199 -0
- package/src/components/base/index.ts +11 -0
- package/src/components/blocks/Article.tsx +57 -18
- package/src/components/blocks/Code.md +529 -0
- package/src/components/blocks/Code.tsx +102 -15
- package/src/components/blocks/Content.tsx +25 -77
- package/src/components/blocks/CoverImageHeader.tsx +9 -4
- package/src/components/blocks/FeatureCard.tsx +1 -2
- package/src/components/blocks/FeatureGrid.tsx +19 -1
- package/src/components/blocks/Footer.tsx +13 -1
- package/src/components/blocks/HeroBlock.tsx +87 -20
- package/src/components/blocks/Image.tsx +395 -0
- package/src/components/blocks/PageBannerHeader.tsx +14 -12
- package/src/components/blocks/ProductCard.tsx +51 -52
- package/src/components/blocks/Section.tsx +113 -8
- package/src/components/blocks/Text.tsx +285 -0
- package/src/components/blocks/index.ts +4 -0
- package/src/components/buttons/Button.tsx +184 -15
- package/src/components/forms/FormBlock.tsx +70 -17
- package/src/components/index.ts +5 -0
- package/src/components/input/ChoiceInputField.tsx +48 -18
- package/src/components/input/HtmlInputField.tsx +48 -18
- package/src/components/input/SelectInputField.tsx +48 -16
- package/src/components/input/SwitchInputField.tsx +48 -17
- package/src/components/input/TextField.tsx +41 -1
- package/src/components/input/TextInputField.tsx +52 -18
- package/src/components/layout/GridCell.tsx +118 -9
- package/src/components/layout/GridLayout.tsx +125 -24
- package/src/components/pages/FormPage.tsx +0 -1
- package/src/components/pages/Page.css +304 -332
- package/src/components/pages/Page.tsx +307 -255
- package/src/components/pages/index.ts +2 -2
- package/src/config/AppConfig.ts +133 -0
- package/src/config/AppConfigBuilder.ts +421 -0
- package/src/config/__tests__/AppConfig.test.ts +385 -0
- package/src/config/__tests__/AppConfigBuilder.test.ts +432 -0
- package/src/config/index.ts +24 -0
- package/src/config/types.ts +170 -0
- package/src/config.ts +25 -0
- package/src/contexts/PrintModeContext.tsx +332 -0
- package/src/contexts/QwickAppContext.tsx +2 -2
- package/src/contexts/ThemeContext.tsx +1 -2
- package/src/contexts/index.ts +2 -0
- package/src/hooks/index.ts +5 -1
- package/src/hooks/usePrintMode.ts +73 -0
- package/src/index.ts +3 -0
- package/src/schemas/CodeSchema.ts +3 -3
- package/src/schemas/CollapsibleLayoutSchema.ts +2 -1
- package/src/schemas/ContentSchema.ts +2 -1
- package/src/schemas/GridCellSchema.ts +164 -0
- package/src/schemas/GridLayoutSchema.ts +133 -0
- package/src/schemas/HtmlSchema.ts +47 -0
- package/src/schemas/ImageSchema.ts +235 -0
- package/src/schemas/LogoSchema.ts +241 -0
- package/src/schemas/MarkdownSchema.ts +47 -0
- package/src/schemas/PageTemplateSchema.ts +186 -0
- package/src/schemas/PrintConfigSchema.ts +207 -0
- package/src/schemas/README.md +661 -0
- package/src/schemas/SectionSchema.ts +2 -1
- package/src/schemas/TextSchema.ts +329 -0
- package/src/schemas/ViewModelSchema.ts +115 -0
- package/src/schemas/index.ts +21 -2
- package/src/schemas/transformers/ComponentTransformer.ts +403 -0
- package/src/schemas/transformers/ReactNodeTransformer.ts +236 -0
- package/src/schemas/transformers/registry.ts +72 -0
- package/src/schemas/types/Serializable.ts +51 -0
- package/src/stories/AccessibilityProvider.stories.tsx +253 -253
- package/src/stories/Article.stories.tsx +433 -433
- package/src/stories/Button.stories.tsx +1 -1
- package/src/stories/CardListGrid.stories.tsx +451 -451
- package/src/stories/ChoiceInputField.stories.tsx +503 -503
- package/src/stories/Code.stories.tsx +1 -1
- package/src/stories/CollapsibleLayout.stories.tsx +1414 -1414
- package/src/stories/Content.stories.tsx +393 -393
- package/src/stories/CoverImageHeader.stories.tsx +701 -701
- package/src/stories/DataBinding.advanced.stories.tsx +432 -432
- package/src/stories/DataProvider.stories.tsx +1192 -1192
- package/src/stories/FeatureCard.stories.tsx +557 -557
- package/src/stories/FeatureGrid.stories.tsx +594 -594
- package/src/stories/Footer.stories.tsx +640 -640
- package/src/stories/FormBlock.stories.tsx +760 -760
- package/src/stories/FormComponents.stories.tsx +349 -541
- package/src/stories/GridCell.stories.tsx +417 -0
- package/src/stories/GridLayout.stories.tsx +353 -0
- package/src/stories/HeroBlock.stories.tsx +862 -373
- package/src/stories/HtmlInputField.stories.tsx +474 -474
- package/src/stories/Image.stories.tsx +819 -0
- package/src/stories/Introduction.stories.tsx +667 -667
- package/src/stories/LayoutBlocks.stories.tsx +324 -324
- package/src/stories/Logo.stories.tsx +165 -6
- package/src/stories/Markdown.stories.tsx +137 -137
- package/src/stories/ModelView.stories.tsx +477 -0
- package/src/stories/Page.stories.tsx +688 -688
- package/src/stories/PageBannerHeader.stories.tsx +864 -864
- package/src/stories/PaletteSwitcher.stories.tsx +119 -119
- package/src/stories/ProductCard.stories.tsx +424 -424
- package/src/stories/QwickApp.stories.tsx +368 -368
- package/src/stories/ResponsiveMenu.stories.tsx +249 -249
- package/src/stories/SafeSpan.stories.tsx +531 -531
- package/src/stories/Section.stories.tsx +90 -2
- package/src/stories/SelectInputField.stories.tsx +524 -524
- package/src/stories/Text.stories.tsx +560 -0
- package/src/stories/TextInputField.stories.tsx +443 -443
- package/src/stories/ThemeSwitcher.stories.tsx +123 -123
- package/src/utils/htmlTransform.tsx +74 -53
- package/src/utils/reactUtils.tsx +57 -6
- package/dist/index.bundled.css +0 -12
- /package/src/{hooks/__tests__ → __tests__/hooks}/useDataBinding.test.tsx.disabled +0 -0
- /package/src/{schemas/__tests__ → __tests__/schemas}/builders.test.ts +0 -0
- /package/src/{utils/__tests__ → __tests__/utils}/createDataDrivenComponent.test.tsx.disabled +0 -0
- /package/src/{utils/__tests__ → __tests__/utils}/htmlTransform.test.tsx +0 -0
- /package/src/{utils/__tests__ → __tests__/utils}/optional-logging.test.ts +0 -0
|
@@ -13,98 +13,98 @@ import QwickApp from '../components/QwickApp';
|
|
|
13
13
|
|
|
14
14
|
// Sample HTML input field data for different use cases
|
|
15
15
|
const sampleCmsData = {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
16
|
+
'htmlInputFields': {
|
|
17
|
+
'blog-content': {
|
|
18
|
+
label: 'Blog Post Content',
|
|
19
|
+
placeholder: 'Write your blog post content with HTML formatting...',
|
|
20
|
+
required: true,
|
|
21
|
+
multiline: true,
|
|
22
|
+
rows: 6,
|
|
23
|
+
value: '<p>Welcome to our <b>amazing</b> blog! Here you can share your <i>thoughts</i> and <u>experiences</u>.</p>'
|
|
24
|
+
},
|
|
25
|
+
'product-description': {
|
|
26
|
+
label: 'Product Description',
|
|
27
|
+
placeholder: 'Describe your product with rich formatting...',
|
|
28
|
+
required: true,
|
|
29
|
+
multiline: true,
|
|
30
|
+
rows: 4,
|
|
31
|
+
value: '<p>This <b>premium product</b> features:</p><br/>• Advanced <code>technology</code><br/>• <i>Elegant</i> design<br/>• <u>Lifetime warranty</u>'
|
|
32
|
+
},
|
|
33
|
+
'announcement-banner': {
|
|
34
|
+
label: 'Site Announcement',
|
|
35
|
+
placeholder: 'Create an announcement with HTML styling...',
|
|
36
|
+
multiline: false,
|
|
37
|
+
value: ' <b>New Feature Launch!</b> Experience our <i>enhanced</i> <code>user interface</code>'
|
|
38
|
+
},
|
|
39
|
+
'email-signature': {
|
|
40
|
+
label: 'Email Signature',
|
|
41
|
+
placeholder: 'Create your HTML email signature...',
|
|
42
|
+
multiline: true,
|
|
43
|
+
rows: 3,
|
|
44
|
+
value: '<b>John Doe</b><br/><i>Senior Developer</i><br/>📧 john@example.com | +1-555-0123'
|
|
45
|
+
},
|
|
46
|
+
'newsletter-intro': {
|
|
47
|
+
label: 'Newsletter Introduction',
|
|
48
|
+
placeholder: 'Write the newsletter intro with formatting...',
|
|
49
|
+
required: true,
|
|
50
|
+
multiline: true,
|
|
51
|
+
rows: 4,
|
|
52
|
+
value: '<p>Hello <b>subscribers</b>! Welcome to our <i>monthly newsletter</i>.</p><p>This month we are excited to share <u>exciting updates</u> and <code>new features</code>.</p>'
|
|
53
|
+
},
|
|
54
|
+
'testimonial-quote': {
|
|
55
|
+
label: 'Customer Testimonial',
|
|
56
|
+
placeholder: 'Add customer testimonial with HTML styling...',
|
|
57
|
+
multiline: true,
|
|
58
|
+
rows: 3,
|
|
59
|
+
value: '<i>"This product has <b>transformed</b> our workflow. The <code>automation features</code> are incredible!"</i><br/><br/>- <b>Sarah Johnson</b>, CEO'
|
|
60
|
+
},
|
|
61
|
+
'feature-highlight': {
|
|
62
|
+
label: 'Feature Highlight',
|
|
63
|
+
placeholder: 'Highlight key features with HTML...',
|
|
64
|
+
multiline: true,
|
|
65
|
+
rows: 5,
|
|
66
|
+
value: '<p><b> Key Features:</b></p><p>• <u>Real-time</u> collaboration<br/>• <code>API integration</code><br/>• <i>Advanced</i> analytics<br/>• <b>24/7</b> support</p>'
|
|
67
|
+
},
|
|
68
|
+
'code-snippet': {
|
|
69
|
+
label: 'Code Documentation',
|
|
70
|
+
placeholder: 'Document code with HTML formatting...',
|
|
71
|
+
multiline: true,
|
|
72
|
+
rows: 4,
|
|
73
|
+
value: '<p>Use the <code>useState</code> hook for <b>state management</b>:</p><br/><code>const [count, setCount] = useState(0);</code><br/><br/><i>Remember to import from React!</i>'
|
|
74
|
+
},
|
|
75
|
+
'event-details': {
|
|
76
|
+
label: 'Event Details',
|
|
77
|
+
placeholder: 'Add event information with styling...',
|
|
78
|
+
multiline: true,
|
|
79
|
+
rows: 5,
|
|
80
|
+
value: '<b>🎪 Annual Tech Conference 2025</b><br/><br/>📅 <i>March 15-17, 2025</i><br/>📍 <u>San Francisco Convention Center</u><br/>🎟 <code>Early bird tickets available</code>'
|
|
81
|
+
},
|
|
82
|
+
'basic-html': {
|
|
83
|
+
label: 'Basic HTML Content',
|
|
84
|
+
placeholder: 'Enter HTML content...',
|
|
85
|
+
multiline: true,
|
|
86
|
+
rows: 4
|
|
87
|
+
},
|
|
88
|
+
'disabled-field': {
|
|
89
|
+
label: 'Read-only Content',
|
|
90
|
+
value: 'This content is <b>read-only</b> and <i>cannot be edited</i>.',
|
|
91
|
+
disabled: true,
|
|
92
|
+
multiline: true,
|
|
93
|
+
rows: 2
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
96
|
};
|
|
97
97
|
|
|
98
98
|
const dataProvider = new JsonDataProvider({ data: sampleCmsData });
|
|
99
99
|
|
|
100
100
|
const meta = {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
101
|
+
title: 'Forms/HtmlInputField',
|
|
102
|
+
component: HtmlInputField,
|
|
103
|
+
parameters: {
|
|
104
|
+
layout: 'padded',
|
|
105
|
+
docs: {
|
|
106
|
+
description: {
|
|
107
|
+
component: `HtmlInputField is a rich text editor component with HTML formatting capabilities and data binding support for content creation.
|
|
108
108
|
|
|
109
109
|
**Key Features:**
|
|
110
110
|
- **Rich Text Formatting**: Built-in toolbar with bold, italic, underline, and code formatting
|
|
@@ -123,10 +123,10 @@ const meta = {
|
|
|
123
123
|
- Rich text comments and feedback
|
|
124
124
|
- Documentation and help content
|
|
125
125
|
- Any content requiring HTML formatting capabilities`,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
tags: ['autodocs'],
|
|
130
130
|
} satisfies Meta<typeof HtmlInputField>;
|
|
131
131
|
|
|
132
132
|
export default meta;
|
|
@@ -134,425 +134,425 @@ type Story = StoryObj<typeof HtmlInputField>;
|
|
|
134
134
|
|
|
135
135
|
// Traditional Usage Examples
|
|
136
136
|
export const BasicHtmlEditor: Story = {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
137
|
+
render: () => (
|
|
138
|
+
<QwickApp appId="html-input-basic" appName='Basic HTML Editor'>
|
|
139
|
+
<HtmlInputField
|
|
140
|
+
label="Content Editor"
|
|
141
|
+
placeholder="Enter HTML content..."
|
|
142
|
+
multiline={true}
|
|
143
|
+
rows={4}
|
|
144
|
+
onChange={(value) => console.log('HTML content changed:', value)}
|
|
145
|
+
/>
|
|
146
|
+
</QwickApp>
|
|
147
|
+
),
|
|
148
|
+
parameters: {
|
|
149
|
+
docs: {
|
|
150
|
+
description: {
|
|
151
|
+
story: 'Basic HTML input field with formatting toolbar and preview capabilities.',
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
155
|
};
|
|
156
156
|
|
|
157
157
|
export const BlogContentEditor: Story = {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
158
|
+
render: () => (
|
|
159
|
+
<QwickApp appId="html-input-blog" appName='Blog Content Editor'>
|
|
160
|
+
<HtmlInputField
|
|
161
|
+
label="Blog Post Content"
|
|
162
|
+
placeholder="Write your blog post content with HTML formatting..."
|
|
163
|
+
required={true}
|
|
164
|
+
multiline={true}
|
|
165
|
+
rows={6}
|
|
166
|
+
value='<p>Welcome to our <b>amazing</b> blog! Here you can share your <i>thoughts</i> and <u>experiences</u>.</p>'
|
|
167
|
+
onChange={(value) => console.log('Blog content:', value)}
|
|
168
|
+
/>
|
|
169
|
+
</QwickApp>
|
|
170
|
+
),
|
|
171
|
+
parameters: {
|
|
172
|
+
docs: {
|
|
173
|
+
description: {
|
|
174
|
+
story: 'Rich HTML editor configured for blog post content creation with initial content.',
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
178
|
};
|
|
179
179
|
|
|
180
180
|
export const ProductDescription: Story = {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
181
|
+
render: () => (
|
|
182
|
+
<QwickApp appId="html-input-product" appName='Product Description Editor'>
|
|
183
|
+
<HtmlInputField
|
|
184
|
+
label="Product Description"
|
|
185
|
+
placeholder="Describe your product with rich formatting..."
|
|
186
|
+
required={true}
|
|
187
|
+
multiline={true}
|
|
188
|
+
rows={4}
|
|
189
|
+
value='<p>This <b>premium product</b> features:</p><br/>• Advanced <code>technology</code><br/>• <i>Elegant</i> design<br/>• <u>Lifetime warranty</u>'
|
|
190
|
+
onChange={(value) => console.log('Product description:', value)}
|
|
191
|
+
/>
|
|
192
|
+
</QwickApp>
|
|
193
|
+
),
|
|
194
|
+
parameters: {
|
|
195
|
+
docs: {
|
|
196
|
+
description: {
|
|
197
|
+
story: 'HTML editor for product descriptions with formatting for features and highlights.',
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
201
|
};
|
|
202
202
|
|
|
203
203
|
export const SingleLineHtml: Story = {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
204
|
+
render: () => (
|
|
205
|
+
<QwickApp appId="html-input-single" appName='Single Line HTML'>
|
|
206
|
+
<HtmlInputField
|
|
207
|
+
label="Site Announcement"
|
|
208
|
+
placeholder="Create an announcement with HTML styling..."
|
|
209
|
+
multiline={false}
|
|
210
|
+
value=' <b>New Feature Launch!</b> Experience our <i>enhanced</i> <code>user interface</code>'
|
|
211
|
+
onChange={(value) => console.log('Announcement:', value)}
|
|
212
|
+
/>
|
|
213
|
+
</QwickApp>
|
|
214
|
+
),
|
|
215
|
+
parameters: {
|
|
216
|
+
docs: {
|
|
217
|
+
description: {
|
|
218
|
+
story: 'Single-line HTML input field for announcements and short formatted content.',
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
222
|
};
|
|
223
223
|
|
|
224
224
|
export const FormattingShowcase: Story = {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
225
|
+
render: () => (
|
|
226
|
+
<QwickApp appId="html-input-formatting" appName='HTML Formatting Showcase'>
|
|
227
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
|
228
|
+
<Alert severity="info">
|
|
229
|
+
<Typography variant="body2">
|
|
230
|
+
Use the toolbar buttons to format selected text, or click for insertion. Toggle preview mode to see the rendered output.
|
|
231
|
+
</Typography>
|
|
232
|
+
</Alert>
|
|
233
|
+
|
|
234
|
+
<HtmlInputField
|
|
235
|
+
label="Formatting Examples"
|
|
236
|
+
placeholder="Try the formatting tools above..."
|
|
237
|
+
multiline={true}
|
|
238
|
+
rows={6}
|
|
239
|
+
value='<p>Examples of <b>formatting</b>:</p><br/>• <b>Bold text</b> for emphasis<br/>• <i>Italic text</i> for style<br/>• <u>Underlined text</u> for highlighting<br/>• <code>Code snippets</code> for technical content<br/><br/><p>Mix and match: <b><i>Bold italic</i></b> and <u><code>underlined code</code></u>!</p>'
|
|
240
|
+
onChange={(value) => console.log('Formatted content:', value)}
|
|
241
|
+
/>
|
|
242
|
+
</Box>
|
|
243
|
+
</QwickApp>
|
|
244
|
+
),
|
|
245
|
+
parameters: {
|
|
246
|
+
docs: {
|
|
247
|
+
description: {
|
|
248
|
+
story: 'Showcase of HTML formatting capabilities with examples of different text styles.',
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
252
|
};
|
|
253
253
|
|
|
254
254
|
export const States: Story = {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
255
|
+
render: () => (
|
|
256
|
+
<QwickApp appId="html-input-states" appName='HTML Input States'>
|
|
257
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 800 }}>
|
|
258
|
+
<HtmlInputField
|
|
259
|
+
label="Normal State"
|
|
260
|
+
placeholder="Enter HTML content..."
|
|
261
|
+
multiline={true}
|
|
262
|
+
rows={3}
|
|
263
|
+
onChange={(value) => console.log('Normal:', value)}
|
|
264
|
+
/>
|
|
265
|
+
|
|
266
|
+
<HtmlInputField
|
|
267
|
+
label="Required Field"
|
|
268
|
+
placeholder="This field is required"
|
|
269
|
+
required={true}
|
|
270
|
+
multiline={true}
|
|
271
|
+
rows={3}
|
|
272
|
+
onChange={(value) => console.log('Required:', value)}
|
|
273
|
+
/>
|
|
274
|
+
|
|
275
|
+
<HtmlInputField
|
|
276
|
+
label="Pre-filled Content"
|
|
277
|
+
value="<p>This field has <b>pre-filled</b> <i>content</i> with <code>formatting</code>.</p>"
|
|
278
|
+
multiline={true}
|
|
279
|
+
rows={3}
|
|
280
|
+
onChange={(value) => console.log('Pre-filled:', value)}
|
|
281
|
+
/>
|
|
282
|
+
|
|
283
|
+
<HtmlInputField
|
|
284
|
+
label="Disabled Field"
|
|
285
|
+
value="This content is <b>read-only</b> and <i>cannot be edited</i>."
|
|
286
|
+
disabled={true}
|
|
287
|
+
multiline={true}
|
|
288
|
+
rows={2}
|
|
289
|
+
/>
|
|
290
|
+
</Box>
|
|
291
|
+
</QwickApp>
|
|
292
|
+
),
|
|
293
|
+
parameters: {
|
|
294
|
+
docs: {
|
|
295
|
+
description: {
|
|
296
|
+
story: 'Different HTML input field states including normal, required, pre-filled, and disabled.',
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
300
|
};
|
|
301
301
|
|
|
302
302
|
// Data Binding Examples
|
|
303
303
|
export const DataBindingBasic: Story = {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
304
|
+
render: () => (
|
|
305
|
+
<QwickApp appId="html-input-data-binding" appName='HtmlInputField Data Binding' dataSource={{ dataProvider }}>
|
|
306
|
+
<Box>
|
|
307
|
+
|
|
308
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
309
|
+
<Typography variant="h5" gutterBottom> Data-Driven HTML Editor</Typography>
|
|
310
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
311
|
+
HtmlInputField components can be completely driven by CMS data, loading content and configuration from your data source.
|
|
312
|
+
</Typography>
|
|
313
|
+
|
|
314
|
+
<Code title="Usage" language="tsx">{`<HtmlInputField dataSource="htmlInputFields.blog-content" />`}</Code>
|
|
315
|
+
|
|
316
|
+
<Code title="Data Structure" language="json">{JSON.stringify(sampleCmsData.htmlInputFields['blog-content'], null, 2)}</Code>
|
|
317
|
+
</Box>
|
|
318
318
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
319
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
320
|
+
|
|
321
|
+
</Box>
|
|
322
|
+
</QwickApp>
|
|
323
|
+
),
|
|
324
|
+
parameters: {
|
|
325
|
+
docs: {
|
|
326
|
+
description: {
|
|
327
|
+
story: 'HtmlInputField with data binding - content and configuration resolved from CMS data through dataSource.',
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
},
|
|
331
331
|
};
|
|
332
332
|
|
|
333
333
|
export const DataBindingAdvanced: Story = {
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
334
|
+
render: () => (
|
|
335
|
+
<QwickApp appId="html-input-data-advanced" appName='Advanced HtmlInputField Data Binding' dataSource={{ dataProvider }}>
|
|
336
|
+
<Box>
|
|
337
|
+
|
|
338
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
339
|
+
<Typography variant="h5" gutterBottom> Multiple Content Types</Typography>
|
|
340
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
341
|
+
Different HtmlInputField instances can load different content types and configurations from separate data sources.
|
|
342
|
+
</Typography>
|
|
343
|
+
</Box>
|
|
344
344
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
345
|
+
{/* Content Creation */}
|
|
346
|
+
<Box sx={{ mb: 4 }}>
|
|
347
|
+
<Typography variant="h4" gutterBottom>Content Creation</Typography>
|
|
348
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 800 }}>
|
|
349
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
350
|
+
<HtmlInputField dataSource="htmlInputFields.newsletter-intro" />
|
|
351
|
+
</Box>
|
|
352
|
+
</Box>
|
|
353
353
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
354
|
+
{/* Marketing Content */}
|
|
355
|
+
<Box sx={{ mb: 4 }}>
|
|
356
|
+
<Typography variant="h4" gutterBottom>Marketing & Sales</Typography>
|
|
357
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 800 }}>
|
|
358
|
+
<HtmlInputField dataSource="htmlInputFields.product-description" />
|
|
359
|
+
<HtmlInputField dataSource="htmlInputFields.testimonial-quote" />
|
|
360
|
+
<HtmlInputField dataSource="htmlInputFields.feature-highlight" />
|
|
361
|
+
</Box>
|
|
362
|
+
</Box>
|
|
363
363
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
364
|
+
{/* Communication */}
|
|
365
|
+
<Box sx={{ mb: 4 }}>
|
|
366
|
+
<Typography variant="h4" gutterBottom>Communication</Typography>
|
|
367
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, maxWidth: 800 }}>
|
|
368
|
+
<HtmlInputField dataSource="htmlInputFields.email-signature" />
|
|
369
|
+
<HtmlInputField dataSource="htmlInputFields.announcement-banner" />
|
|
370
|
+
</Box>
|
|
371
|
+
</Box>
|
|
372
|
+
|
|
373
|
+
</Box>
|
|
374
|
+
</QwickApp>
|
|
375
|
+
),
|
|
376
|
+
parameters: {
|
|
377
|
+
docs: {
|
|
378
|
+
description: {
|
|
379
|
+
story: 'Advanced data binding with multiple HTML content types showcasing different configurations and use cases.',
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
383
|
};
|
|
384
384
|
|
|
385
385
|
export const DataBindingWithFallback: Story = {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
386
|
+
render: () => (
|
|
387
|
+
<QwickApp appId="html-input-fallback" appName='HtmlInputField Data Binding with Fallback' dataSource={{ dataProvider }}>
|
|
388
|
+
<Box>
|
|
389
|
+
|
|
390
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
391
|
+
<Typography variant="h5" gutterBottom> Fallback Support</Typography>
|
|
392
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
393
|
+
HtmlInputField components gracefully handle missing data sources with fallback configurations.
|
|
394
|
+
</Typography>
|
|
395
|
+
|
|
396
|
+
<Code title="Fallback Usage" language="tsx">{`<HtmlInputField
|
|
397
|
+
dataSource="nonexistent.field"
|
|
398
|
+
label="Fallback Editor"
|
|
399
|
+
placeholder="This is fallback content"
|
|
400
|
+
multiline={true}
|
|
401
|
+
rows={4}
|
|
402
402
|
/>`}</Code>
|
|
403
|
-
|
|
403
|
+
</Box>
|
|
404
404
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
405
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 4 }}>
|
|
406
|
+
<Box>
|
|
407
|
+
<Typography variant="h6" gutterBottom>Missing Data Source (Fallback)</Typography>
|
|
408
|
+
<HtmlInputField
|
|
409
|
+
dataSource="nonexistent.field"
|
|
410
|
+
label="Fallback Editor"
|
|
411
|
+
placeholder="This is fallback content..."
|
|
412
|
+
multiline={true}
|
|
413
|
+
rows={4}
|
|
414
|
+
/>
|
|
415
|
+
</Box>
|
|
416
|
+
<Box>
|
|
417
|
+
<Typography variant="h6" gutterBottom>Valid Data Source</Typography>
|
|
418
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
419
|
+
</Box>
|
|
420
|
+
</Box>
|
|
421
|
+
|
|
422
|
+
</Box>
|
|
423
|
+
</QwickApp>
|
|
424
|
+
),
|
|
425
|
+
parameters: {
|
|
426
|
+
docs: {
|
|
427
|
+
description: {
|
|
428
|
+
story: 'HtmlInputField with fallback configuration when dataSource is missing or unavailable.',
|
|
429
|
+
},
|
|
430
|
+
},
|
|
431
|
+
},
|
|
432
432
|
};
|
|
433
433
|
|
|
434
434
|
export const RealWorldExample: Story = {
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
435
|
+
render: () => (
|
|
436
|
+
<QwickApp appId="html-input-real-world" appName='Real World HtmlInputField Example' dataSource={{ dataProvider }}>
|
|
437
|
+
<Box>
|
|
438
|
+
|
|
439
|
+
{/* Content Management System */}
|
|
440
|
+
<Box sx={{ mb: 6, p: 4, backgroundColor: 'background.paper', borderRadius: 2 }}>
|
|
441
|
+
<Typography variant="h3" gutterBottom>Content Management</Typography>
|
|
442
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.8 }}>
|
|
443
|
+
Create and manage rich content with HTML formatting capabilities
|
|
444
|
+
</Typography>
|
|
445
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 4, maxWidth: 900 }}>
|
|
446
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
447
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: { xs: '1fr', md: '1fr 1fr' }, gap: 3 }}>
|
|
448
|
+
<HtmlInputField dataSource="htmlInputFields.product-description" />
|
|
449
|
+
<HtmlInputField dataSource="htmlInputFields.announcement-banner" />
|
|
450
|
+
</Box>
|
|
451
|
+
</Box>
|
|
452
|
+
</Box>
|
|
453
|
+
|
|
454
|
+
{/* Documentation Platform */}
|
|
455
|
+
<Box sx={{ mb: 6, p: 4, backgroundColor: 'primary.main', color: 'primary.contrastText', borderRadius: 2 }}>
|
|
456
|
+
<Typography variant="h3" gutterBottom>Documentation & Support</Typography>
|
|
457
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.9 }}>
|
|
458
|
+
Create technical documentation and support content with code formatting
|
|
459
|
+
</Typography>
|
|
460
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 4, maxWidth: 900 }}>
|
|
461
|
+
<HtmlInputField dataSource="htmlInputFields.code-snippet" />
|
|
462
|
+
<HtmlInputField dataSource="htmlInputFields.feature-highlight" />
|
|
463
|
+
</Box>
|
|
464
|
+
</Box>
|
|
465
|
+
|
|
466
|
+
{/* Event Management */}
|
|
467
|
+
<Box sx={{ mb: 6, p: 4, backgroundColor: 'background.paper', borderRadius: 2 }}>
|
|
468
|
+
<Typography variant="h3" gutterBottom>Event & Communication</Typography>
|
|
469
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.8 }}>
|
|
470
|
+
Manage event details, newsletters, and customer communications
|
|
471
|
+
</Typography>
|
|
472
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 4, maxWidth: 900 }}>
|
|
473
|
+
<HtmlInputField dataSource="htmlInputFields.event-details" />
|
|
474
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: { xs: '1fr', md: '1fr 1fr' }, gap: 3 }}>
|
|
475
|
+
<HtmlInputField dataSource="htmlInputFields.newsletter-intro" />
|
|
476
|
+
<HtmlInputField dataSource="htmlInputFields.email-signature" />
|
|
477
|
+
</Box>
|
|
478
|
+
</Box>
|
|
479
|
+
</Box>
|
|
480
|
+
|
|
481
|
+
{/* Customer Testimonials */}
|
|
482
|
+
<Box sx={{ p: 4, backgroundColor: 'secondary.main', color: 'secondary.contrastText', borderRadius: 2 }}>
|
|
483
|
+
<Typography variant="h3" gutterBottom>Customer Success</Typography>
|
|
484
|
+
<Typography variant="body1" sx={{ mb: 4, opacity: 0.9 }}>
|
|
485
|
+
Showcase customer testimonials and success stories
|
|
486
|
+
</Typography>
|
|
487
|
+
<Box sx={{ maxWidth: 700 }}>
|
|
488
|
+
<HtmlInputField dataSource="htmlInputFields.testimonial-quote" />
|
|
489
|
+
</Box>
|
|
490
|
+
</Box>
|
|
491
|
+
|
|
492
|
+
</Box>
|
|
493
|
+
</QwickApp>
|
|
494
|
+
),
|
|
495
|
+
parameters: {
|
|
496
|
+
docs: {
|
|
497
|
+
description: {
|
|
498
|
+
story: 'Real-world example showing HtmlInputField in various contexts: content management, documentation, events, and testimonials.',
|
|
499
|
+
},
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
502
|
};
|
|
503
503
|
|
|
504
504
|
export const EditorFeatureShowcase: Story = {
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
505
|
+
render: () => (
|
|
506
|
+
<QwickApp appId="html-input-features" appName='HTML Editor Features Showcase' dataSource={{ dataProvider }}>
|
|
507
|
+
<Box>
|
|
508
|
+
|
|
509
|
+
<Box sx={{ p: 4, backgroundColor: 'background.paper' }}>
|
|
510
|
+
<Typography variant="h5" gutterBottom> Editor Features</Typography>
|
|
511
|
+
<Typography variant="body1" sx={{ mb: 3, opacity: 0.8 }}>
|
|
512
|
+
Comprehensive showcase of HtmlInputField features including formatting, preview, and various content types.
|
|
513
|
+
</Typography>
|
|
514
|
+
</Box>
|
|
515
515
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
516
|
+
<Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(400px, 1fr))', gap: 4 }}>
|
|
517
|
+
<Box>
|
|
518
|
+
<Typography variant="h6" gutterBottom>Rich Blog Content</Typography>
|
|
519
|
+
<HtmlInputField dataSource="htmlInputFields.blog-content" />
|
|
520
|
+
</Box>
|
|
521
|
+
|
|
522
|
+
<Box>
|
|
523
|
+
<Typography variant="h6" gutterBottom>Product Marketing</Typography>
|
|
524
|
+
<HtmlInputField dataSource="htmlInputFields.product-description" />
|
|
525
|
+
</Box>
|
|
526
|
+
|
|
527
|
+
<Box>
|
|
528
|
+
<Typography variant="h6" gutterBottom>Code Documentation</Typography>
|
|
529
|
+
<HtmlInputField dataSource="htmlInputFields.code-snippet" />
|
|
530
|
+
</Box>
|
|
531
|
+
|
|
532
|
+
<Box>
|
|
533
|
+
<Typography variant="h6" gutterBottom>Event Information</Typography>
|
|
534
|
+
<HtmlInputField dataSource="htmlInputFields.event-details" />
|
|
535
|
+
</Box>
|
|
536
|
+
|
|
537
|
+
<Box>
|
|
538
|
+
<Typography variant="h6" gutterBottom>Email Templates</Typography>
|
|
539
|
+
<HtmlInputField dataSource="htmlInputFields.email-signature" />
|
|
540
|
+
</Box>
|
|
541
|
+
|
|
542
|
+
<Box>
|
|
543
|
+
<Typography variant="h6" gutterBottom>Customer Feedback</Typography>
|
|
544
|
+
<HtmlInputField dataSource="htmlInputFields.testimonial-quote" />
|
|
545
|
+
</Box>
|
|
546
|
+
</Box>
|
|
547
|
+
|
|
548
|
+
</Box>
|
|
549
|
+
</QwickApp>
|
|
550
|
+
),
|
|
551
|
+
parameters: {
|
|
552
|
+
docs: {
|
|
553
|
+
description: {
|
|
554
|
+
story: 'Comprehensive showcase of HtmlInputField capabilities across different content types and use cases.',
|
|
555
|
+
},
|
|
556
|
+
},
|
|
557
|
+
},
|
|
558
558
|
};
|