@happyvertical/smrt-fields 0.40.60 → 0.40.62
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/AGENTS.md +58 -12
- package/README.md +143 -42
- package/dist/__smrt-register__.d.ts +2 -0
- package/dist/__smrt-register__.d.ts.map +1 -0
- package/dist/cache.d.ts +18 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/chunks/FieldPolicyCollection--RxukfCX.js +1218 -0
- package/dist/chunks/FieldPolicyCollection--RxukfCX.js.map +1 -0
- package/dist/collections/FieldPolicyCollection.d.ts +95 -0
- package/dist/collections/FieldPolicyCollection.d.ts.map +1 -0
- package/dist/collections/FieldPolicySuggestionCollection.d.ts +160 -0
- package/dist/collections/FieldPolicySuggestionCollection.d.ts.map +1 -0
- package/dist/collections/FieldUsageCounterCollection.d.ts +143 -0
- package/dist/collections/FieldUsageCounterCollection.d.ts.map +1 -0
- package/dist/deterministic-id.d.ts +18 -0
- package/dist/deterministic-id.d.ts.map +1 -0
- package/dist/field-definitions.d.ts +85 -0
- package/dist/field-definitions.d.ts.map +1 -0
- package/dist/field-policy-resolver.d.ts +46 -0
- package/dist/field-policy-resolver.d.ts.map +1 -0
- package/dist/index.d.ts +15 -532
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1813 -628
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +1487 -191
- package/dist/models/FieldPolicy.d.ts +163 -0
- package/dist/models/FieldPolicy.d.ts.map +1 -0
- package/dist/models/FieldPolicySuggestion.d.ts +132 -0
- package/dist/models/FieldPolicySuggestion.d.ts.map +1 -0
- package/dist/models/FieldUsageCounter.d.ts +178 -0
- package/dist/models/FieldUsageCounter.d.ts.map +1 -0
- package/dist/models/FieldUsageReportReceipt.d.ts +25 -0
- package/dist/models/FieldUsageReportReceipt.d.ts.map +1 -0
- package/dist/permissions.d.ts +9 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/playground.d.ts +2 -0
- package/dist/playground.d.ts.map +1 -0
- package/dist/playground.js +39 -0
- package/dist/playground.js.map +1 -0
- package/dist/settings-catalog.d.ts +73 -0
- package/dist/settings-catalog.d.ts.map +1 -0
- package/dist/smrt-knowledge.json +449 -9
- package/dist/svelte/__tests__/FieldPolicyControlPanel.test.js +277 -0
- package/dist/svelte/__tests__/FieldPolicyGear.test.js +503 -0
- package/dist/svelte/__tests__/FormHelp.test.js +138 -0
- package/dist/svelte/__tests__/ModeUX.test.js +109 -0
- package/dist/svelte/__tests__/ObjectForm.test.js +687 -0
- package/dist/svelte/__tests__/ObjectFormGeneratedApi.integration.test.js +436 -0
- package/dist/svelte/__tests__/PolicyField.test.js +373 -0
- package/dist/svelte/__tests__/UsageLearning.test.js +140 -0
- package/dist/svelte/__tests__/fixtures/AdvancedFieldsFixture.svelte +30 -0
- package/dist/svelte/__tests__/fixtures/AdvancedFieldsFixture.svelte.d.ts +9 -0
- package/dist/svelte/__tests__/fixtures/AdvancedFieldsFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/DomPrefillFixture.svelte +33 -0
- package/dist/svelte/__tests__/fixtures/DomPrefillFixture.svelte.d.ts +10 -0
- package/dist/svelte/__tests__/fixtures/DomPrefillFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/FormHelpFixture.svelte +19 -0
- package/dist/svelte/__tests__/fixtures/FormHelpFixture.svelte.d.ts +10 -0
- package/dist/svelte/__tests__/fixtures/FormHelpFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/GeneratedApiGearFixture.svelte +18 -0
- package/dist/svelte/__tests__/fixtures/GeneratedApiGearFixture.svelte.d.ts +11 -0
- package/dist/svelte/__tests__/fixtures/GeneratedApiGearFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/GracefulDegradeFixture.svelte +11 -0
- package/dist/svelte/__tests__/fixtures/GracefulDegradeFixture.svelte.d.ts +19 -0
- package/dist/svelte/__tests__/fixtures/GracefulDegradeFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ModeSwitchFixture.svelte +18 -0
- package/dist/svelte/__tests__/fixtures/ModeSwitchFixture.svelte.d.ts +8 -0
- package/dist/svelte/__tests__/fixtures/ModeSwitchFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/NoIdFixture.svelte +24 -0
- package/dist/svelte/__tests__/fixtures/NoIdFixture.svelte.d.ts +13 -0
- package/dist/svelte/__tests__/fixtures/NoIdFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormActionsFixture.svelte +37 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormActionsFixture.svelte.d.ts +15 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormActionsFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormFixture.svelte +17 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormFixture.svelte.d.ts +10 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormRegistryFixture.svelte +25 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormRegistryFixture.svelte.d.ts +10 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormRegistryFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSnippetFixture.svelte +34 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSnippetFixture.svelte.d.ts +10 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSnippetFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSourceFixture.svelte +29 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSourceFixture.svelte.d.ts +11 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSourceFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSourceSnippetFixture.svelte +33 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSourceSnippetFixture.svelte.d.ts +9 -0
- package/dist/svelte/__tests__/fixtures/ObjectFormSourceSnippetFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/PolicyDataTableFixture.svelte +40 -0
- package/dist/svelte/__tests__/fixtures/PolicyDataTableFixture.svelte.d.ts +8 -0
- package/dist/svelte/__tests__/fixtures/PolicyDataTableFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/PrefillFixture.svelte +26 -0
- package/dist/svelte/__tests__/fixtures/PrefillFixture.svelte.d.ts +13 -0
- package/dist/svelte/__tests__/fixtures/PrefillFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ProviderFieldFixture.svelte +39 -0
- package/dist/svelte/__tests__/fixtures/ProviderFieldFixture.svelte.d.ts +17 -0
- package/dist/svelte/__tests__/fixtures/ProviderFieldFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/RegistryInput.svelte +15 -0
- package/dist/svelte/__tests__/fixtures/RegistryInput.svelte.d.ts +5 -0
- package/dist/svelte/__tests__/fixtures/RegistryInput.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/RevealPrefillFixture.svelte +29 -0
- package/dist/svelte/__tests__/fixtures/RevealPrefillFixture.svelte.d.ts +14 -0
- package/dist/svelte/__tests__/fixtures/RevealPrefillFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/SettingsCatalogStub.svelte +24 -0
- package/dist/svelte/__tests__/fixtures/SettingsCatalogStub.svelte.d.ts +14 -0
- package/dist/svelte/__tests__/fixtures/SettingsCatalogStub.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/SnippetFixture.svelte +28 -0
- package/dist/svelte/__tests__/fixtures/SnippetFixture.svelte.d.ts +13 -0
- package/dist/svelte/__tests__/fixtures/SnippetFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/SuggestionGearFixture.svelte +23 -0
- package/dist/svelte/__tests__/fixtures/SuggestionGearFixture.svelte.d.ts +10 -0
- package/dist/svelte/__tests__/fixtures/SuggestionGearFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/ToggleModeButton.svelte +14 -0
- package/dist/svelte/__tests__/fixtures/ToggleModeButton.svelte.d.ts +19 -0
- package/dist/svelte/__tests__/fixtures/ToggleModeButton.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/fixtures/TooltipFixture.svelte +25 -0
- package/dist/svelte/__tests__/fixtures/TooltipFixture.svelte.d.ts +14 -0
- package/dist/svelte/__tests__/fixtures/TooltipFixture.svelte.d.ts.map +1 -0
- package/dist/svelte/__tests__/settings-catalog.test.js +161 -0
- package/dist/svelte/components/AdvancedFields.svelte +49 -0
- package/dist/svelte/components/AdvancedFields.svelte.d.ts +17 -0
- package/dist/svelte/components/AdvancedFields.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FieldInput.svelte +159 -0
- package/dist/svelte/components/FieldInput.svelte.d.ts +5 -0
- package/dist/svelte/components/FieldInput.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FieldPolicyControlPanel.svelte +288 -0
- package/dist/svelte/components/FieldPolicyControlPanel.svelte.d.ts +29 -0
- package/dist/svelte/components/FieldPolicyControlPanel.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FieldPolicyEditor.svelte +417 -0
- package/dist/svelte/components/FieldPolicyEditor.svelte.d.ts +18 -0
- package/dist/svelte/components/FieldPolicyEditor.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FieldPolicyGearButton.svelte +24 -0
- package/dist/svelte/components/FieldPolicyGearButton.svelte.d.ts +8 -0
- package/dist/svelte/components/FieldPolicyGearButton.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FieldPolicyGearProvider.svelte +169 -0
- package/dist/svelte/components/FieldPolicyGearProvider.svelte.d.ts +20 -0
- package/dist/svelte/components/FieldPolicyGearProvider.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FieldPolicyProvider.svelte +89 -0
- package/dist/svelte/components/FieldPolicyProvider.svelte.d.ts +35 -0
- package/dist/svelte/components/FieldPolicyProvider.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FieldPolicySuggestionQueue.svelte +135 -0
- package/dist/svelte/components/FieldPolicySuggestionQueue.svelte.d.ts +11 -0
- package/dist/svelte/components/FieldPolicySuggestionQueue.svelte.d.ts.map +1 -0
- package/dist/svelte/components/FormHelp.svelte +157 -0
- package/dist/svelte/components/FormHelp.svelte.d.ts +15 -0
- package/dist/svelte/components/FormHelp.svelte.d.ts.map +1 -0
- package/dist/svelte/components/ModeSwitch.svelte +47 -0
- package/dist/svelte/components/ModeSwitch.svelte.d.ts +10 -0
- package/dist/svelte/components/ModeSwitch.svelte.d.ts.map +1 -0
- package/dist/svelte/components/ObjectForm.svelte +440 -0
- package/dist/svelte/components/ObjectForm.svelte.d.ts +50 -0
- package/dist/svelte/components/ObjectForm.svelte.d.ts.map +1 -0
- package/dist/svelte/components/ObjectFormSourceProvider.svelte +18 -0
- package/dist/svelte/components/ObjectFormSourceProvider.svelte.d.ts +11 -0
- package/dist/svelte/components/ObjectFormSourceProvider.svelte.d.ts.map +1 -0
- package/dist/svelte/components/PolicyField.svelte +338 -0
- package/dist/svelte/components/PolicyField.svelte.d.ts +80 -0
- package/dist/svelte/components/PolicyField.svelte.d.ts.map +1 -0
- package/dist/svelte/context.svelte.d.ts +54 -0
- package/dist/svelte/context.svelte.d.ts.map +1 -0
- package/dist/svelte/context.svelte.js +55 -0
- package/dist/svelte/data-table.d.ts +17 -0
- package/dist/svelte/data-table.d.ts.map +1 -0
- package/dist/svelte/data-table.js +19 -0
- package/dist/svelte/field-policy-editor.d.ts +81 -0
- package/dist/svelte/field-policy-editor.d.ts.map +1 -0
- package/dist/svelte/field-policy-editor.js +120 -0
- package/dist/svelte/gear-context.svelte.d.ts +16 -0
- package/dist/svelte/gear-context.svelte.d.ts.map +1 -0
- package/dist/svelte/gear-context.svelte.js +15 -0
- package/dist/svelte/index.d.ts +63 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +41 -0
- package/dist/svelte/input-registry.d.ts +21 -0
- package/dist/svelte/input-registry.d.ts.map +1 -0
- package/dist/svelte/input-registry.js +26 -0
- package/dist/svelte/object-form-source-context.svelte.d.ts +4 -0
- package/dist/svelte/object-form-source-context.svelte.d.ts.map +1 -0
- package/dist/svelte/object-form-source-context.svelte.js +8 -0
- package/dist/svelte/object-form-source.svelte.d.ts +18 -0
- package/dist/svelte/object-form-source.svelte.d.ts.map +1 -0
- package/dist/svelte/object-form-source.svelte.js +99 -0
- package/dist/svelte/object-form.d.ts +6 -0
- package/dist/svelte/object-form.d.ts.map +1 -0
- package/dist/svelte/object-form.js +38 -0
- package/dist/svelte/playground/FieldPolicyFormPreview.svelte +212 -0
- package/dist/svelte/playground/FieldPolicyFormPreview.svelte.d.ts +4 -0
- package/dist/svelte/playground/FieldPolicyFormPreview.svelte.d.ts.map +1 -0
- package/dist/svelte/playground/ObjectFormPreview.svelte +129 -0
- package/dist/svelte/playground/ObjectFormPreview.svelte.d.ts +4 -0
- package/dist/svelte/playground/ObjectFormPreview.svelte.d.ts.map +1 -0
- package/dist/svelte/playground.d.ts +20 -0
- package/dist/svelte/playground.d.ts.map +1 -0
- package/dist/svelte/playground.js +38 -0
- package/dist/svelte/settings-catalog.d.ts +54 -0
- package/dist/svelte/settings-catalog.d.ts.map +1 -0
- package/dist/svelte/settings-catalog.js +116 -0
- package/dist/svelte/suggestions.d.ts +38 -0
- package/dist/svelte/suggestions.d.ts.map +1 -0
- package/dist/svelte/suggestions.js +68 -0
- package/dist/svelte/types.d.ts +101 -0
- package/dist/svelte/types.d.ts.map +1 -0
- package/dist/svelte/types.js +4 -0
- package/dist/svelte/usage-capture.d.ts +63 -0
- package/dist/svelte/usage-capture.d.ts.map +1 -0
- package/dist/svelte/usage-capture.js +61 -0
- package/dist/types.d.ts +316 -203
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -1
- package/dist/types.js.map +1 -1
- package/dist/usage-learning.d.ts +201 -0
- package/dist/usage-learning.d.ts.map +1 -0
- package/dist/usage-schedules.d.ts +110 -0
- package/dist/usage-schedules.d.ts.map +1 -0
- package/dist/users-module.d.ts +30 -0
- package/dist/users-module.d.ts.map +1 -0
- package/package.json +33 -8
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FieldPolicyEditorAdapter } from '../../field-policy-editor.js';
|
|
2
|
+
import type { ObjectFormFieldDefinition } from '../../types.js';
|
|
3
|
+
interface Props {
|
|
4
|
+
objectRef: string;
|
|
5
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
6
|
+
adapter: FieldPolicyEditorAdapter;
|
|
7
|
+
}
|
|
8
|
+
declare const GeneratedApiGearFixture: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type GeneratedApiGearFixture = ReturnType<typeof GeneratedApiGearFixture>;
|
|
10
|
+
export default GeneratedApiGearFixture;
|
|
11
|
+
//# sourceMappingURL=GeneratedApiGearFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeneratedApiGearFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/GeneratedApiGearFixture.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAGhE,UAAU,KAAK;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,OAAO,EAAE,wBAAwB,CAAC;CACnC;AAiBD,QAAA,MAAM,uBAAuB,2CAAwC,CAAC;AACtE,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC1E,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Test fixture: PolicyField rendered WITHOUT a FieldPolicyProvider.
|
|
4
|
+
* Verifies graceful degradation — children render verbatim.
|
|
5
|
+
*/
|
|
6
|
+
import PolicyField from '../../components/PolicyField.svelte';
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<PolicyField name="standalone">
|
|
10
|
+
<input type="text" />
|
|
11
|
+
</PolicyField>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const GracefulDegradeFixture: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type GracefulDegradeFixture = InstanceType<typeof GracefulDegradeFixture>;
|
|
18
|
+
export default GracefulDegradeFixture;
|
|
19
|
+
//# sourceMappingURL=GracefulDegradeFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GracefulDegradeFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/GracefulDegradeFixture.svelte.ts"],"names":[],"mappings":"AAoBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,sBAAsB;;kBAA+E,CAAC;AAC1F,KAAK,sBAAsB,GAAG,YAAY,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC5E,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
3
|
+
import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
|
|
4
|
+
import ModeSwitch from '../../components/ModeSwitch.svelte';
|
|
5
|
+
import PolicyField from '../../components/PolicyField.svelte';
|
|
6
|
+
|
|
7
|
+
let { policy }: { policy: ResolvedObjectFieldPolicy } = $props();
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<FieldPolicyProvider {policy} mode="basic">
|
|
11
|
+
<ModeSwitch />
|
|
12
|
+
<PolicyField name="name">
|
|
13
|
+
<input id="name" name="name" type="text" />
|
|
14
|
+
</PolicyField>
|
|
15
|
+
<PolicyField name="secretKey">
|
|
16
|
+
<input id="secretKey" name="secretKey" type="text" />
|
|
17
|
+
</PolicyField>
|
|
18
|
+
</FieldPolicyProvider>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
policy: ResolvedObjectFieldPolicy;
|
|
4
|
+
};
|
|
5
|
+
declare const ModeSwitchFixture: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type ModeSwitchFixture = ReturnType<typeof ModeSwitchFixture>;
|
|
7
|
+
export default ModeSwitchFixture;
|
|
8
|
+
//# sourceMappingURL=ModeSwitchFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModeSwitchFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ModeSwitchFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAKlE,KAAK,gBAAgB,GAAI;IAAE,MAAM,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAsBhE,QAAA,MAAM,iBAAiB,sDAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Test fixture: PolicyField wrapping a control with NO id attribute — the
|
|
4
|
+
* wrapper must assign one so the label's `for` never dangles.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
8
|
+
import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
|
|
9
|
+
import PolicyField from '../../components/PolicyField.svelte';
|
|
10
|
+
|
|
11
|
+
let {
|
|
12
|
+
policy,
|
|
13
|
+
mode = 'basic',
|
|
14
|
+
}: {
|
|
15
|
+
policy: ResolvedObjectFieldPolicy;
|
|
16
|
+
mode?: 'basic' | 'advanced';
|
|
17
|
+
} = $props();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<FieldPolicyProvider {policy} {mode}>
|
|
21
|
+
<PolicyField name="name">
|
|
22
|
+
<input type="text" />
|
|
23
|
+
</PolicyField>
|
|
24
|
+
</FieldPolicyProvider>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test fixture: PolicyField wrapping a control with NO id attribute — the
|
|
3
|
+
* wrapper must assign one so the label's `for` never dangles.
|
|
4
|
+
*/
|
|
5
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
6
|
+
type $$ComponentProps = {
|
|
7
|
+
policy: ResolvedObjectFieldPolicy;
|
|
8
|
+
mode?: 'basic' | 'advanced';
|
|
9
|
+
};
|
|
10
|
+
declare const NoIdFixture: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
|
+
type NoIdFixture = ReturnType<typeof NoIdFixture>;
|
|
12
|
+
export default NoIdFixture;
|
|
13
|
+
//# sourceMappingURL=NoIdFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoIdFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/NoIdFixture.svelte.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAIlE,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC7B,CAAC;AAsBF,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
3
|
+
import ObjectForm, {
|
|
4
|
+
type ObjectFormProps,
|
|
5
|
+
} from '../../components/ObjectForm.svelte';
|
|
6
|
+
import type { ObjectFormFieldDefinition } from '../../types.js';
|
|
7
|
+
import type { FieldUsageReporter } from '../../usage-capture.js';
|
|
8
|
+
|
|
9
|
+
interface Props {
|
|
10
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
11
|
+
policy: ResolvedObjectFieldPolicy;
|
|
12
|
+
onsubmit: NonNullable<ObjectFormProps['onsubmit']>;
|
|
13
|
+
usageReporter?: FieldUsageReporter;
|
|
14
|
+
resetAfterSuccessfulSubmit?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
let {
|
|
18
|
+
fields,
|
|
19
|
+
policy,
|
|
20
|
+
onsubmit,
|
|
21
|
+
usageReporter,
|
|
22
|
+
resetAfterSuccessfulSubmit = false,
|
|
23
|
+
}: Props = $props();
|
|
24
|
+
let record = $state<Record<string, unknown>>({});
|
|
25
|
+
|
|
26
|
+
async function submit(event: SubmitEvent): Promise<boolean | undefined> {
|
|
27
|
+
const result = await onsubmit(event);
|
|
28
|
+
if (result === true && resetAfterSuccessfulSubmit) record = {};
|
|
29
|
+
return result === true ? true : undefined;
|
|
30
|
+
}
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<ObjectForm objectRef={policy.objectRef} {fields} {policy} bind:value={record} onsubmit={submit} {usageReporter}>
|
|
34
|
+
{#snippet actions()}
|
|
35
|
+
<button type="submit">Save product</button>
|
|
36
|
+
{/snippet}
|
|
37
|
+
</ObjectForm>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
2
|
+
import { type ObjectFormProps } from '../../components/ObjectForm.svelte';
|
|
3
|
+
import type { ObjectFormFieldDefinition } from '../../types.js';
|
|
4
|
+
import type { FieldUsageReporter } from '../../usage-capture.js';
|
|
5
|
+
interface Props {
|
|
6
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
7
|
+
policy: ResolvedObjectFieldPolicy;
|
|
8
|
+
onsubmit: NonNullable<ObjectFormProps['onsubmit']>;
|
|
9
|
+
usageReporter?: FieldUsageReporter;
|
|
10
|
+
resetAfterSuccessfulSubmit?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const ObjectFormActionsFixture: import("svelte").Component<Props, {}, "">;
|
|
13
|
+
type ObjectFormActionsFixture = ReturnType<typeof ObjectFormActionsFixture>;
|
|
14
|
+
export default ObjectFormActionsFixture;
|
|
15
|
+
//# sourceMappingURL=ObjectFormActionsFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectFormActionsFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormActionsFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAmB,EACjB,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IACnD,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAgCD,QAAA,MAAM,wBAAwB,2CAAwC,CAAC;AACvE,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC5E,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
3
|
+
import ObjectForm from '../../components/ObjectForm.svelte';
|
|
4
|
+
import type { ObjectFormFieldDefinition } from '../../types.js';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
8
|
+
policy: ResolvedObjectFieldPolicy;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let { fields, policy }: Props = $props();
|
|
12
|
+
let record = $state<Record<string, unknown>>({});
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<ObjectForm objectRef={policy.objectRef} {fields} {policy} bind:value={record} />
|
|
16
|
+
<button type="button" onclick={() => (record = {})}>Start another record</button>
|
|
17
|
+
<output data-testid="record">{JSON.stringify(record)}</output>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
2
|
+
import type { ObjectFormFieldDefinition } from '../../types.js';
|
|
3
|
+
interface Props {
|
|
4
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
5
|
+
policy: ResolvedObjectFieldPolicy;
|
|
6
|
+
}
|
|
7
|
+
declare const ObjectFormFixture: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type ObjectFormFixture = ReturnType<typeof ObjectFormFixture>;
|
|
9
|
+
export default ObjectFormFixture;
|
|
10
|
+
//# sourceMappingURL=ObjectFormFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectFormFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAGhE,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAiBD,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
3
|
+
import ObjectForm from '../../components/ObjectForm.svelte';
|
|
4
|
+
import { FieldInputRegistry } from '../../input-registry.js';
|
|
5
|
+
import type { ObjectFormFieldDefinition } from '../../types.js';
|
|
6
|
+
import RegistryInput from './RegistryInput.svelte';
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
10
|
+
policy: ResolvedObjectFieldPolicy;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let { fields, policy }: Props = $props();
|
|
14
|
+
const registry = new FieldInputRegistry();
|
|
15
|
+
registry.registerField('@test:Product', 'name', RegistryInput);
|
|
16
|
+
let record = $state<Record<string, unknown>>({});
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<ObjectForm
|
|
20
|
+
objectRef={policy.objectRef}
|
|
21
|
+
{fields}
|
|
22
|
+
{policy}
|
|
23
|
+
bind:value={record}
|
|
24
|
+
inputRegistry={registry}
|
|
25
|
+
/>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
2
|
+
import type { ObjectFormFieldDefinition } from '../../types.js';
|
|
3
|
+
interface Props {
|
|
4
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
5
|
+
policy: ResolvedObjectFieldPolicy;
|
|
6
|
+
}
|
|
7
|
+
declare const ObjectFormRegistryFixture: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type ObjectFormRegistryFixture = ReturnType<typeof ObjectFormRegistryFixture>;
|
|
9
|
+
export default ObjectFormRegistryFixture;
|
|
10
|
+
//# sourceMappingURL=ObjectFormRegistryFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectFormRegistryFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormRegistryFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAIhE,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAmBD,QAAA,MAAM,yBAAyB,2CAAwC,CAAC;AACxE,KAAK,yBAAyB,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC9E,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
3
|
+
import ObjectForm from '../../components/ObjectForm.svelte';
|
|
4
|
+
import type {
|
|
5
|
+
ObjectFormFieldDefinition,
|
|
6
|
+
ObjectFormFieldSnippetProps,
|
|
7
|
+
} from '../../types.js';
|
|
8
|
+
|
|
9
|
+
interface Props {
|
|
10
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
11
|
+
policy: ResolvedObjectFieldPolicy;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let { fields, policy }: Props = $props();
|
|
15
|
+
let record = $state<Record<string, unknown>>({});
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
{#snippet customName(props: ObjectFormFieldSnippetProps)}
|
|
19
|
+
<input
|
|
20
|
+
aria-label="Custom product name"
|
|
21
|
+
value={String(props.value ?? '')}
|
|
22
|
+
disabled={props.disabled}
|
|
23
|
+
oninput={(event) => props.setValue((event.currentTarget as HTMLInputElement).value)}
|
|
24
|
+
/>
|
|
25
|
+
{/snippet}
|
|
26
|
+
|
|
27
|
+
<ObjectForm
|
|
28
|
+
objectRef={policy.objectRef}
|
|
29
|
+
{fields}
|
|
30
|
+
{policy}
|
|
31
|
+
bind:value={record}
|
|
32
|
+
renderers={{ name: customName }}
|
|
33
|
+
/>
|
|
34
|
+
<output data-testid="record">{JSON.stringify(record)}</output>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
2
|
+
import type { ObjectFormFieldDefinition } from '../../types.js';
|
|
3
|
+
interface Props {
|
|
4
|
+
fields: Record<string, ObjectFormFieldDefinition>;
|
|
5
|
+
policy: ResolvedObjectFieldPolicy;
|
|
6
|
+
}
|
|
7
|
+
declare const ObjectFormSnippetFixture: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type ObjectFormSnippetFixture = ReturnType<typeof ObjectFormSnippetFixture>;
|
|
9
|
+
export default ObjectFormSnippetFixture;
|
|
10
|
+
//# sourceMappingURL=ObjectFormSnippetFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectFormSnippetFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormSnippetFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,gBAAgB,CAAC;AAGxB,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAoBD,QAAA,MAAM,wBAAwB,2CAAwC,CAAC;AACvE,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC5E,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import ObjectForm from '../../components/ObjectForm.svelte';
|
|
3
|
+
import ObjectFormSourceProvider from '../../components/ObjectFormSourceProvider.svelte';
|
|
4
|
+
import type { ObjectFormSource } from '../../types.js';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
source: ObjectFormSource;
|
|
8
|
+
objectRef: string;
|
|
9
|
+
isNewRecord?: boolean;
|
|
10
|
+
initialValue?: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
source,
|
|
15
|
+
objectRef,
|
|
16
|
+
isNewRecord = true,
|
|
17
|
+
initialValue = {},
|
|
18
|
+
}: Props = $props();
|
|
19
|
+
function initialRecord(): Record<string, unknown> {
|
|
20
|
+
return initialValue;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let record = $state<Record<string, unknown>>(initialRecord());
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<ObjectFormSourceProvider {source}>
|
|
27
|
+
<ObjectForm {objectRef} {isNewRecord} bind:value={record} />
|
|
28
|
+
</ObjectFormSourceProvider>
|
|
29
|
+
<output data-testid="record">{JSON.stringify(record)}</output>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ObjectFormSource } from '../../types.js';
|
|
2
|
+
interface Props {
|
|
3
|
+
source: ObjectFormSource;
|
|
4
|
+
objectRef: string;
|
|
5
|
+
isNewRecord?: boolean;
|
|
6
|
+
initialValue?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
declare const ObjectFormSourceFixture: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type ObjectFormSourceFixture = ReturnType<typeof ObjectFormSourceFixture>;
|
|
10
|
+
export default ObjectFormSourceFixture;
|
|
11
|
+
//# sourceMappingURL=ObjectFormSourceFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectFormSourceFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormSourceFixture.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,UAAU,KAAK;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AA2BD,QAAA,MAAM,uBAAuB,2CAAwC,CAAC;AACtE,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC1E,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Input } from '@happyvertical/smrt-ui/forms';
|
|
3
|
+
import ObjectForm from '../../components/ObjectForm.svelte';
|
|
4
|
+
import ObjectFormSourceProvider from '../../components/ObjectFormSourceProvider.svelte';
|
|
5
|
+
import type {
|
|
6
|
+
ObjectFormFieldSnippetProps,
|
|
7
|
+
ObjectFormSource,
|
|
8
|
+
} from '../../types.js';
|
|
9
|
+
|
|
10
|
+
interface Props {
|
|
11
|
+
source: ObjectFormSource;
|
|
12
|
+
objectRef: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
let { source, objectRef }: Props = $props();
|
|
16
|
+
let record = $state<Record<string, unknown>>({});
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
{#snippet customName(props: ObjectFormFieldSnippetProps)}
|
|
20
|
+
<Input
|
|
21
|
+
id="custom-name"
|
|
22
|
+
name="name"
|
|
23
|
+
value={String(props.value ?? '')}
|
|
24
|
+
aria-label="Custom generated name"
|
|
25
|
+
disabled={props.disabled}
|
|
26
|
+
oninput={(event) => props.setValue((event.currentTarget as HTMLInputElement).value.toUpperCase())}
|
|
27
|
+
/>
|
|
28
|
+
{/snippet}
|
|
29
|
+
|
|
30
|
+
<ObjectFormSourceProvider {source}>
|
|
31
|
+
<ObjectForm {objectRef} bind:value={record} renderers={{ name: customName }} />
|
|
32
|
+
</ObjectFormSourceProvider>
|
|
33
|
+
<output data-testid="record">{JSON.stringify(record)}</output>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ObjectFormSource } from '../../types.js';
|
|
2
|
+
interface Props {
|
|
3
|
+
source: ObjectFormSource;
|
|
4
|
+
objectRef: string;
|
|
5
|
+
}
|
|
6
|
+
declare const ObjectFormSourceSnippetFixture: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type ObjectFormSourceSnippetFixture = ReturnType<typeof ObjectFormSourceSnippetFixture>;
|
|
8
|
+
export default ObjectFormSourceSnippetFixture;
|
|
9
|
+
//# sourceMappingURL=ObjectFormSourceSnippetFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectFormSourceSnippetFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormSourceSnippetFixture.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,UAAU,KAAK;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAuBD,QAAA,MAAM,8BAA8B,2CAAwC,CAAC;AAC7E,KAAK,8BAA8B,GAAG,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACxF,eAAe,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { DataTable, type DataTableColumn } from '@happyvertical/smrt-ui/data';
|
|
3
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
4
|
+
import { policyToVisibleColumnIds } from '../../data-table.js';
|
|
5
|
+
|
|
6
|
+
interface Row {
|
|
7
|
+
name: string;
|
|
8
|
+
published: boolean;
|
|
9
|
+
metadata: string;
|
|
10
|
+
computed: string;
|
|
11
|
+
actions: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface Props {
|
|
15
|
+
policy: ResolvedObjectFieldPolicy;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let { policy }: Props = $props();
|
|
19
|
+
const columns: DataTableColumn<Row>[] = [
|
|
20
|
+
{ id: 'name', label: 'Name' },
|
|
21
|
+
{ id: 'published', label: 'Published' },
|
|
22
|
+
{ id: 'metadata', label: 'Metadata', hidden: true },
|
|
23
|
+
{ id: 'computed', label: 'Computed' },
|
|
24
|
+
{ id: 'actions', label: 'Actions' },
|
|
25
|
+
];
|
|
26
|
+
const rows: Row[] = [
|
|
27
|
+
{
|
|
28
|
+
name: 'Launch',
|
|
29
|
+
published: true,
|
|
30
|
+
metadata: 'server only',
|
|
31
|
+
computed: 'Derived',
|
|
32
|
+
actions: 'Edit',
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
const visibleColumnIds = $derived.by(() =>
|
|
36
|
+
policyToVisibleColumnIds(policy, columns),
|
|
37
|
+
);
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<DataTable data={rows} {columns} {visibleColumnIds} caption="Policy table" />
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
2
|
+
interface Props {
|
|
3
|
+
policy: ResolvedObjectFieldPolicy;
|
|
4
|
+
}
|
|
5
|
+
declare const PolicyDataTableFixture: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type PolicyDataTableFixture = ReturnType<typeof PolicyDataTableFixture>;
|
|
7
|
+
export default PolicyDataTableFixture;
|
|
8
|
+
//# sourceMappingURL=PolicyDataTableFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PolicyDataTableFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/PolicyDataTableFixture.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAYnE,UAAU,KAAK;IACb,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAkCD,QAAA,MAAM,sBAAsB,2CAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Test fixture: PolicyField with snippet escape hatch showing prefill signal.
|
|
4
|
+
* Demonstrates that the snippet receives the default value from resolved policy.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
8
|
+
import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
|
|
9
|
+
import PolicyField from '../../components/PolicyField.svelte';
|
|
10
|
+
|
|
11
|
+
let {
|
|
12
|
+
policy,
|
|
13
|
+
mode = 'basic',
|
|
14
|
+
}: {
|
|
15
|
+
policy: ResolvedObjectFieldPolicy;
|
|
16
|
+
mode?: 'basic' | 'advanced';
|
|
17
|
+
} = $props();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<FieldPolicyProvider {policy} {mode}>
|
|
21
|
+
<PolicyField name="sku">
|
|
22
|
+
{#snippet render({ defaultValue })}
|
|
23
|
+
<div>Default: {String(defaultValue)}</div>
|
|
24
|
+
{/snippet}
|
|
25
|
+
</PolicyField>
|
|
26
|
+
</FieldPolicyProvider>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test fixture: PolicyField with snippet escape hatch showing prefill signal.
|
|
3
|
+
* Demonstrates that the snippet receives the default value from resolved policy.
|
|
4
|
+
*/
|
|
5
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
6
|
+
type $$ComponentProps = {
|
|
7
|
+
policy: ResolvedObjectFieldPolicy;
|
|
8
|
+
mode?: 'basic' | 'advanced';
|
|
9
|
+
};
|
|
10
|
+
declare const PrefillFixture: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
|
+
type PrefillFixture = ReturnType<typeof PrefillFixture>;
|
|
12
|
+
export default PrefillFixture;
|
|
13
|
+
//# sourceMappingURL=PrefillFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrefillFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/PrefillFixture.svelte.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAIlE,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC7B,CAAC;AAwBF,QAAA,MAAM,cAAc,sDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Test fixture: FieldPolicyProvider wrapping PolicyField-wrapped inputs.
|
|
4
|
+
* Includes a mode toggle button to test switching between basic/advanced.
|
|
5
|
+
*
|
|
6
|
+
* The toggle lives in its own component so getContext runs during component
|
|
7
|
+
* initialisation (the only valid time for getContext in Svelte 5) instead of
|
|
8
|
+
* inside an event handler.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
12
|
+
import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
|
|
13
|
+
import PolicyField from '../../components/PolicyField.svelte';
|
|
14
|
+
import ToggleModeButton from './ToggleModeButton.svelte';
|
|
15
|
+
|
|
16
|
+
let {
|
|
17
|
+
policy,
|
|
18
|
+
mode = 'basic',
|
|
19
|
+
}: {
|
|
20
|
+
policy: ResolvedObjectFieldPolicy;
|
|
21
|
+
mode?: 'basic' | 'advanced';
|
|
22
|
+
} = $props();
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<FieldPolicyProvider {policy} {mode}>
|
|
26
|
+
<PolicyField name="name">
|
|
27
|
+
<input id="name" name="name" type="text" />
|
|
28
|
+
</PolicyField>
|
|
29
|
+
<PolicyField name="sku">
|
|
30
|
+
<input id="sku" name="sku" type="text" />
|
|
31
|
+
</PolicyField>
|
|
32
|
+
<PolicyField name="wholesalePrice">
|
|
33
|
+
<input id="wholesalePrice" name="wholesalePrice" type="number" />
|
|
34
|
+
</PolicyField>
|
|
35
|
+
<PolicyField name="internalNotes">
|
|
36
|
+
<input id="internalNotes" name="internalNotes" type="text" />
|
|
37
|
+
</PolicyField>
|
|
38
|
+
<ToggleModeButton />
|
|
39
|
+
</FieldPolicyProvider>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test fixture: FieldPolicyProvider wrapping PolicyField-wrapped inputs.
|
|
3
|
+
* Includes a mode toggle button to test switching between basic/advanced.
|
|
4
|
+
*
|
|
5
|
+
* The toggle lives in its own component so getContext runs during component
|
|
6
|
+
* initialisation (the only valid time for getContext in Svelte 5) instead of
|
|
7
|
+
* inside an event handler.
|
|
8
|
+
*/
|
|
9
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
10
|
+
type $$ComponentProps = {
|
|
11
|
+
policy: ResolvedObjectFieldPolicy;
|
|
12
|
+
mode?: 'basic' | 'advanced';
|
|
13
|
+
};
|
|
14
|
+
declare const ProviderFieldFixture: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
15
|
+
type ProviderFieldFixture = ReturnType<typeof ProviderFieldFixture>;
|
|
16
|
+
export default ProviderFieldFixture;
|
|
17
|
+
//# sourceMappingURL=ProviderFieldFixture.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderFieldFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ProviderFieldFixture.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAKlE,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC7B,CAAC;AAiCF,QAAA,MAAM,oBAAoB,sDAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Input } from '@happyvertical/smrt-ui/forms';
|
|
3
|
+
import type { FieldInputProps } from '../../types.js';
|
|
4
|
+
|
|
5
|
+
let { id, name, value, disabled, onvaluechange }: FieldInputProps = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Input
|
|
9
|
+
{id}
|
|
10
|
+
{name}
|
|
11
|
+
value={String(value ?? '')}
|
|
12
|
+
{disabled}
|
|
13
|
+
aria-label="Registry name"
|
|
14
|
+
oninput={(event) => onvaluechange((event.currentTarget as HTMLInputElement).value)}
|
|
15
|
+
/>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FieldInputProps } from '../../types.js';
|
|
2
|
+
declare const RegistryInput: import("svelte").Component<FieldInputProps, {}, "">;
|
|
3
|
+
type RegistryInput = ReturnType<typeof RegistryInput>;
|
|
4
|
+
export default RegistryInput;
|
|
5
|
+
//# sourceMappingURL=RegistryInput.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegistryInput.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/RegistryInput.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAatD,QAAA,MAAM,aAAa,qDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Test fixture: an advanced-tier PolicyField with a resolved default that is
|
|
4
|
+
* hidden at mount (basic mode) and revealed by the mode toggle. Verifies
|
|
5
|
+
* prefill runs on first reveal, not only at mount.
|
|
6
|
+
*/
|
|
7
|
+
import type { ResolvedObjectFieldPolicy } from '../../../types.js';
|
|
8
|
+
import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
|
|
9
|
+
import PolicyField from '../../components/PolicyField.svelte';
|
|
10
|
+
import ToggleModeButton from './ToggleModeButton.svelte';
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
policy,
|
|
14
|
+
isNewRecord = true,
|
|
15
|
+
}: {
|
|
16
|
+
policy: ResolvedObjectFieldPolicy;
|
|
17
|
+
isNewRecord?: boolean;
|
|
18
|
+
} = $props();
|
|
19
|
+
|
|
20
|
+
let wholesale = $state('');
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<FieldPolicyProvider {policy} mode="basic">
|
|
24
|
+
<PolicyField name="wholesalePrice" {isNewRecord}>
|
|
25
|
+
<input id="wholesalePrice" name="wholesalePrice" type="number" bind:value={wholesale} />
|
|
26
|
+
</PolicyField>
|
|
27
|
+
<div data-testid="wholesale-state">{wholesale}</div>
|
|
28
|
+
<ToggleModeButton />
|
|
29
|
+
</FieldPolicyProvider>
|