@pure-ds/storybook 0.1.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/.storybook/addons/description/preview.js +15 -0
- package/.storybook/addons/description/register.js +60 -0
- package/.storybook/addons/html-preview/Panel.jsx +327 -0
- package/.storybook/addons/html-preview/constants.js +6 -0
- package/.storybook/addons/html-preview/preview.js +178 -0
- package/.storybook/addons/html-preview/register.js +16 -0
- package/.storybook/addons/pds-configurator/SearchTool.js +44 -0
- package/.storybook/addons/pds-configurator/Tool.js +30 -0
- package/.storybook/addons/pds-configurator/constants.js +9 -0
- package/.storybook/addons/pds-configurator/preview.js +159 -0
- package/.storybook/addons/pds-configurator/register.js +24 -0
- package/.storybook/docs.css +35 -0
- package/.storybook/htmlPreview.css +103 -0
- package/.storybook/htmlPreview.js +271 -0
- package/.storybook/main.js +160 -0
- package/.storybook/preview-body.html +48 -0
- package/.storybook/preview-head.html +11 -0
- package/.storybook/preview.js +1563 -0
- package/README.md +266 -0
- package/bin/index.js +40 -0
- package/dist/pds-reference.json +2101 -0
- package/package.json +45 -0
- package/pds.config.js +6 -0
- package/public/assets/css/app.css +1216 -0
- package/public/assets/data/auto-design-advanced.json +704 -0
- package/public/assets/data/auto-design-simple.json +123 -0
- package/public/assets/img/icon-512x512.png +0 -0
- package/public/assets/img/logo-trans.png +0 -0
- package/public/assets/img/logo.png +0 -0
- package/public/assets/js/app.js +15088 -0
- package/public/assets/js/app.js.map +7 -0
- package/public/assets/js/lit.js +1176 -0
- package/public/assets/js/lit.js.map +7 -0
- package/public/assets/js/pds.js +9801 -0
- package/public/assets/js/pds.js.map +7 -0
- package/public/assets/pds/components/pds-calendar.js +837 -0
- package/public/assets/pds/components/pds-drawer.js +857 -0
- package/public/assets/pds/components/pds-icon.js +338 -0
- package/public/assets/pds/components/pds-jsonform.js +1775 -0
- package/public/assets/pds/components/pds-richtext.js +1035 -0
- package/public/assets/pds/components/pds-scrollrow.js +331 -0
- package/public/assets/pds/components/pds-splitpanel.js +401 -0
- package/public/assets/pds/components/pds-tabstrip.js +251 -0
- package/public/assets/pds/components/pds-toaster.js +446 -0
- package/public/assets/pds/components/pds-upload.js +657 -0
- package/public/assets/pds/custom-elements.json +2003 -0
- package/public/assets/pds/icons/pds-icons.svg +498 -0
- package/public/assets/pds/pds-css-complete.json +1861 -0
- package/public/assets/pds/pds-runtime-config.json +11 -0
- package/public/assets/pds/pds.css-data.json +2152 -0
- package/public/assets/pds/styles/pds-components.css +1944 -0
- package/public/assets/pds/styles/pds-components.css.js +3895 -0
- package/public/assets/pds/styles/pds-primitives.css +352 -0
- package/public/assets/pds/styles/pds-primitives.css.js +711 -0
- package/public/assets/pds/styles/pds-styles.css +3761 -0
- package/public/assets/pds/styles/pds-styles.css.js +7529 -0
- package/public/assets/pds/styles/pds-tokens.css +699 -0
- package/public/assets/pds/styles/pds-tokens.css.js +1405 -0
- package/public/assets/pds/styles/pds-utilities.css +763 -0
- package/public/assets/pds/styles/pds-utilities.css.js +1533 -0
- package/public/assets/pds/vscode-custom-data.json +824 -0
- package/scripts/build-pds-reference.mjs +807 -0
- package/scripts/generate-stories.js +542 -0
- package/scripts/package-build.js +86 -0
- package/src/js/app.js +17 -0
- package/src/js/common/ask.js +208 -0
- package/src/js/common/common.js +20 -0
- package/src/js/common/font-loader.js +200 -0
- package/src/js/common/msg.js +90 -0
- package/src/js/lit.js +40 -0
- package/src/js/pds-core/pds-config.js +1162 -0
- package/src/js/pds-core/pds-enhancer-metadata.js +75 -0
- package/src/js/pds-core/pds-enhancers.js +357 -0
- package/src/js/pds-core/pds-enums.js +86 -0
- package/src/js/pds-core/pds-generator.js +5317 -0
- package/src/js/pds-core/pds-ontology.js +256 -0
- package/src/js/pds-core/pds-paths.js +109 -0
- package/src/js/pds-core/pds-query.js +571 -0
- package/src/js/pds-core/pds-registry.js +129 -0
- package/src/js/pds-core/pds.d.ts +129 -0
- package/src/js/pds.d.ts +408 -0
- package/src/js/pds.js +1579 -0
- package/src/pds-core/pds-api.js +105 -0
- package/stories/GettingStarted.md +96 -0
- package/stories/GettingStarted.stories.js +144 -0
- package/stories/WhatIsPDS.md +194 -0
- package/stories/WhatIsPDS.stories.js +144 -0
- package/stories/components/PdsCalendar.stories.js +263 -0
- package/stories/components/PdsDrawer.stories.js +623 -0
- package/stories/components/PdsIcon.stories.js +78 -0
- package/stories/components/PdsJsonform.stories.js +1444 -0
- package/stories/components/PdsRichtext.stories.js +367 -0
- package/stories/components/PdsScrollrow.stories.js +140 -0
- package/stories/components/PdsSplitpanel.stories.js +502 -0
- package/stories/components/PdsTabstrip.stories.js +442 -0
- package/stories/components/PdsToaster.stories.js +186 -0
- package/stories/components/PdsUpload.stories.js +66 -0
- package/stories/enhancements/Dropdowns.stories.js +185 -0
- package/stories/enhancements/InteractiveStates.stories.js +625 -0
- package/stories/enhancements/MeshGradients.stories.js +320 -0
- package/stories/enhancements/OpenGroups.stories.js +227 -0
- package/stories/enhancements/RangeSliders.stories.js +232 -0
- package/stories/enhancements/RequiredFields.stories.js +189 -0
- package/stories/enhancements/Toggles.stories.js +167 -0
- package/stories/foundations/Colors.stories.js +283 -0
- package/stories/foundations/Icons.stories.js +305 -0
- package/stories/foundations/SmartSurfaces.stories.js +367 -0
- package/stories/foundations/Spacing.stories.js +175 -0
- package/stories/foundations/Typography.stories.js +960 -0
- package/stories/foundations/ZIndex.stories.js +325 -0
- package/stories/patterns/BorderEffects.stories.js +72 -0
- package/stories/patterns/Layout.stories.js +99 -0
- package/stories/patterns/Utilities.stories.js +107 -0
- package/stories/primitives/Accordion.stories.js +359 -0
- package/stories/primitives/Alerts.stories.js +64 -0
- package/stories/primitives/Badges.stories.js +183 -0
- package/stories/primitives/Buttons.stories.js +229 -0
- package/stories/primitives/Cards.stories.js +353 -0
- package/stories/primitives/FormGroups.stories.js +569 -0
- package/stories/primitives/Forms.stories.js +131 -0
- package/stories/primitives/Media.stories.js +203 -0
- package/stories/primitives/Tables.stories.js +232 -0
- package/stories/reference/ReferenceCatalog.stories.js +28 -0
- package/stories/reference/reference-catalog.js +413 -0
- package/stories/reference/reference-docs.js +302 -0
- package/stories/reference/reference-helpers.js +310 -0
- package/stories/utilities/GridSystem.stories.js +208 -0
- package/stories/utils/PdsAsk.stories.js +420 -0
- package/stories/utils/toast-utils.js +148 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toast utility for displaying form data in stories
|
|
3
|
+
* Handles objects, FormData, and truncates large binary data
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const MAX_STRING_LENGTH = 1000;
|
|
7
|
+
const MAX_BINARY_PREVIEW = 50;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Converts various data types to a displayable JSON string
|
|
11
|
+
* @param {*} data - Can be an object, FormData, or any serializable data
|
|
12
|
+
* @returns {Promise<void>}
|
|
13
|
+
*/
|
|
14
|
+
export async function toastFormData(data) {
|
|
15
|
+
let obj = data;
|
|
16
|
+
|
|
17
|
+
// Convert FormData to plain object
|
|
18
|
+
if (data instanceof FormData) {
|
|
19
|
+
obj = {};
|
|
20
|
+
for (const [key, value] of data.entries()) {
|
|
21
|
+
// Handle File objects
|
|
22
|
+
if (value instanceof File) {
|
|
23
|
+
const fileInfo = {
|
|
24
|
+
name: value.name,
|
|
25
|
+
size: value.size,
|
|
26
|
+
type: value.type,
|
|
27
|
+
lastModified: new Date(value.lastModified).toISOString(),
|
|
28
|
+
__truncated: true,
|
|
29
|
+
__note: 'Binary data not shown'
|
|
30
|
+
};
|
|
31
|
+
// Handle multiple files with same name
|
|
32
|
+
if (obj[key]) {
|
|
33
|
+
obj[key] = Array.isArray(obj[key]) ? [...obj[key], fileInfo] : [obj[key], fileInfo];
|
|
34
|
+
} else {
|
|
35
|
+
obj[key] = fileInfo;
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
// Handle multiple values with same key (checkboxes, multi-select)
|
|
39
|
+
if (obj[key]) {
|
|
40
|
+
obj[key] = Array.isArray(obj[key]) ? [...obj[key], value] : [obj[key], value];
|
|
41
|
+
} else {
|
|
42
|
+
obj[key] = value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Convert arrays to comma-separated strings for display
|
|
48
|
+
for (const key in obj) {
|
|
49
|
+
if (Array.isArray(obj[key])) {
|
|
50
|
+
// Check if it's an array of file objects
|
|
51
|
+
if (obj[key][0]?.__truncated) {
|
|
52
|
+
// Keep file arrays as arrays
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
// Convert value arrays to comma-separated string
|
|
56
|
+
obj[key] = obj[key].join(', ');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Recursively truncate large strings and binary data
|
|
62
|
+
const truncateData = (item) => {
|
|
63
|
+
if (item === null || item === undefined) return item;
|
|
64
|
+
|
|
65
|
+
if (typeof item === 'string') {
|
|
66
|
+
if (item.length > MAX_STRING_LENGTH) {
|
|
67
|
+
return item.substring(0, MAX_STRING_LENGTH) + `... (truncated, ${item.length} chars total)`;
|
|
68
|
+
}
|
|
69
|
+
return item;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (Array.isArray(item)) {
|
|
73
|
+
return item.map(truncateData);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (typeof item === 'object') {
|
|
77
|
+
// Handle File objects that might be nested in regular objects
|
|
78
|
+
if (item instanceof File) {
|
|
79
|
+
return {
|
|
80
|
+
name: item.name,
|
|
81
|
+
size: item.size,
|
|
82
|
+
type: item.type,
|
|
83
|
+
lastModified: new Date(item.lastModified).toISOString(),
|
|
84
|
+
__truncated: true,
|
|
85
|
+
__note: 'Binary data not shown'
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Handle Blob objects
|
|
90
|
+
if (item instanceof Blob) {
|
|
91
|
+
return {
|
|
92
|
+
size: item.size,
|
|
93
|
+
type: item.type,
|
|
94
|
+
__truncated: true,
|
|
95
|
+
__note: 'Binary data not shown'
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Handle ArrayBuffer and typed arrays
|
|
100
|
+
if (item instanceof ArrayBuffer || ArrayBuffer.isView(item)) {
|
|
101
|
+
const size = item.byteLength || item.length;
|
|
102
|
+
return {
|
|
103
|
+
type: item.constructor.name,
|
|
104
|
+
size: size,
|
|
105
|
+
preview: size > 0 ? `[${Array.from(new Uint8Array(item.buffer || item).slice(0, MAX_BINARY_PREVIEW)).join(', ')}${size > MAX_BINARY_PREVIEW ? '...' : ''}]` : '[]',
|
|
106
|
+
__truncated: true,
|
|
107
|
+
__note: `Binary data preview (${size} bytes total)`
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const result = {};
|
|
112
|
+
for (const key in item) {
|
|
113
|
+
if (item.hasOwnProperty(key)) {
|
|
114
|
+
result[key] = truncateData(item[key]);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return item;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const truncated = truncateData(obj);
|
|
124
|
+
const formatted = JSON.stringify(truncated, null, 2);
|
|
125
|
+
|
|
126
|
+
// Ensure pds-toaster exists and show the toast
|
|
127
|
+
let toaster = document.querySelector('pds-toaster');
|
|
128
|
+
if (!toaster) {
|
|
129
|
+
toaster = document.createElement('pds-toaster');
|
|
130
|
+
document.body.appendChild(toaster);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Wait for the custom element to be defined before calling methods
|
|
134
|
+
await customElements.whenDefined('pds-toaster');
|
|
135
|
+
|
|
136
|
+
toaster.toast(formatted, {
|
|
137
|
+
type: 'success',
|
|
138
|
+
duration: 5000
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Also log to console for debugging
|
|
142
|
+
console.log('Form data:', truncated);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Make toastFormData available globally for inline event handlers
|
|
146
|
+
if (typeof window !== 'undefined') {
|
|
147
|
+
window.toastFormData = toastFormData;
|
|
148
|
+
}
|