@spscommerce/ds-react 6.6.1 → 6.8.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/lib/form/SpsForm.examples.d.ts +1 -59
- package/lib/index.cjs.js +508 -918
- package/lib/index.es.js +243 -683
- package/package.json +11 -11
package/lib/index.es.js
CHANGED
|
@@ -23437,532 +23437,7 @@ function useCustomValidator(validator, validatorConfig = {}, dependencies = [])
|
|
|
23437
23437
|
}
|
|
23438
23438
|
return React.useCallback(validator, dependencies);
|
|
23439
23439
|
}
|
|
23440
|
-
const SpsFormExamples = {
|
|
23441
|
-
a_basic: {
|
|
23442
|
-
label: "Basic Usage",
|
|
23443
|
-
description: "",
|
|
23444
|
-
examples: {
|
|
23445
|
-
basic: {
|
|
23446
|
-
react: code`
|
|
23447
|
-
function DemoComponent() {
|
|
23448
|
-
const COLOR_OPTIONS = ["red", "blue", "green"];
|
|
23449
|
-
const initValue = {
|
|
23450
|
-
name: "Foo",
|
|
23451
|
-
color: COLOR_OPTIONS[0],
|
|
23452
|
-
};
|
|
23453
|
-
const { formValue, formMeta, updateForm } = useSpsForm(initValue, {
|
|
23454
|
-
"name": value => value.color === COLOR_OPTIONS[0] ? [SpsValidators.required] : []
|
|
23455
|
-
});
|
|
23456
|
-
|
|
23457
|
-
function handleSubmit() {
|
|
23458
|
-
console.log("submit", formValue);
|
|
23459
|
-
}
|
|
23460
|
-
function reset() {
|
|
23461
|
-
updateForm(initValue);
|
|
23462
|
-
}
|
|
23463
|
-
|
|
23464
|
-
return <>
|
|
23465
|
-
<SpsForm formMeta={formMeta} onSubmit={handleSubmit}>
|
|
23466
|
-
<div className="sfg-row">
|
|
23467
|
-
<div className="sfg-col-8">
|
|
23468
|
-
<SpsLabel for={formMeta.fields.name}>Name</SpsLabel>
|
|
23469
|
-
<SpsTextInput
|
|
23470
|
-
value={formValue.name}
|
|
23471
|
-
formMeta={formMeta.fields.name}
|
|
23472
|
-
/>
|
|
23473
|
-
</div>
|
|
23474
|
-
<div className="sfg-col-4">
|
|
23475
|
-
<SpsLabel for={formMeta.fields.color}>Color</SpsLabel>
|
|
23476
|
-
{COLOR_OPTIONS.map(color =>
|
|
23477
|
-
<SpsRadioButton key={color} name={color} value={color} label={color}
|
|
23478
|
-
checked={color === formValue.color}
|
|
23479
|
-
formMeta={formMeta.fields.color}
|
|
23480
|
-
/>
|
|
23481
|
-
)}
|
|
23482
|
-
</div>
|
|
23483
|
-
</div>
|
|
23484
|
-
<div className="sfg-row">
|
|
23485
|
-
<div className="sfg-col-12">
|
|
23486
|
-
<SpsButton className="mr-1" onClick={reset}>Reset</SpsButton>
|
|
23487
|
-
<SpsButton type={ButtonType.SUBMIT} kind={ButtonKind.CONFIRM}>Submit</SpsButton>
|
|
23488
|
-
</div>
|
|
23489
|
-
</div>
|
|
23490
|
-
</SpsForm>
|
|
23491
|
-
<br/>
|
|
23492
|
-
{JSON.stringify(formValue)}
|
|
23493
|
-
</>;
|
|
23494
|
-
}
|
|
23495
|
-
`
|
|
23496
|
-
}
|
|
23497
|
-
}
|
|
23498
|
-
},
|
|
23499
|
-
b_array: {
|
|
23500
|
-
label: "Form Array",
|
|
23501
|
-
description: "",
|
|
23502
|
-
examples: {
|
|
23503
|
-
array: {
|
|
23504
|
-
react: code`
|
|
23505
|
-
function DemoComponent() {
|
|
23506
|
-
const initValue = {
|
|
23507
|
-
itemList: ["foo"],
|
|
23508
|
-
}
|
|
23509
|
-
const { formValue, formMeta, updateForm } = useSpsForm(initValue, {
|
|
23510
|
-
"itemList.*": [SpsValidators.required],
|
|
23511
|
-
})
|
|
23512
|
-
|
|
23513
|
-
function handleSubmit() {
|
|
23514
|
-
console.log("submit", formValue)
|
|
23515
|
-
}
|
|
23516
|
-
function reset() {
|
|
23517
|
-
updateForm(initValue)
|
|
23518
|
-
}
|
|
23519
|
-
|
|
23520
|
-
function addItem() {
|
|
23521
|
-
updateForm({
|
|
23522
|
-
...formValue,
|
|
23523
|
-
itemList: [...formValue.itemList, ""],
|
|
23524
|
-
})
|
|
23525
|
-
}
|
|
23526
|
-
function removeItem(index) {
|
|
23527
|
-
updateForm({
|
|
23528
|
-
...formValue,
|
|
23529
|
-
itemList: formValue.itemList.filter((_, i) => index !== i),
|
|
23530
|
-
})
|
|
23531
|
-
}
|
|
23532
|
-
|
|
23533
|
-
return (
|
|
23534
|
-
<>
|
|
23535
|
-
<SpsForm formMeta={formMeta} onSubmit={handleSubmit}>
|
|
23536
|
-
{formValue.itemList.map((item, index) => (
|
|
23537
|
-
<div className="sfg-row" key={index}>
|
|
23538
|
-
<div className="sfg-col-4">
|
|
23539
|
-
<SpsLabel for={formMeta.fields.itemList.fields[index]}>
|
|
23540
|
-
Item
|
|
23541
|
-
</SpsLabel>
|
|
23542
|
-
<SpsTextInput
|
|
23543
|
-
value={item}
|
|
23544
|
-
formMeta={formMeta.fields.itemList.fields[index]}
|
|
23545
|
-
/>
|
|
23546
|
-
</div>
|
|
23547
|
-
<div className="sfg-col-1">
|
|
23548
|
-
<SpsButton
|
|
23549
|
-
kind={ButtonKind.ICON}
|
|
23550
|
-
icon={SpsIcon.TRASH}
|
|
23551
|
-
className="sps-label-spacing"
|
|
23552
|
-
onClick={() => removeItem(index)}
|
|
23553
|
-
/>
|
|
23554
|
-
</div>
|
|
23555
|
-
</div>
|
|
23556
|
-
))}
|
|
23557
|
-
<div className="sfg-row">
|
|
23558
|
-
<div className="sfg-col-12">
|
|
23559
|
-
<SpsButton
|
|
23560
|
-
className="mr-1"
|
|
23561
|
-
kind={ButtonKind.KEY}
|
|
23562
|
-
icon={SpsIcon.PLUS_SIGN}
|
|
23563
|
-
onClick={addItem}
|
|
23564
|
-
>
|
|
23565
|
-
Add Item
|
|
23566
|
-
</SpsButton>
|
|
23567
|
-
<SpsButton className="mr-1" onClick={reset}>
|
|
23568
|
-
Reset
|
|
23569
|
-
</SpsButton>
|
|
23570
|
-
<SpsButton
|
|
23571
|
-
type={ButtonType.SUBMIT}
|
|
23572
|
-
kind={ButtonKind.CONFIRM}
|
|
23573
|
-
>
|
|
23574
|
-
Submit
|
|
23575
|
-
</SpsButton>
|
|
23576
|
-
</div>
|
|
23577
|
-
</div>
|
|
23578
|
-
</SpsForm>
|
|
23579
|
-
<br />
|
|
23580
|
-
{JSON.stringify(formValue)}
|
|
23581
|
-
</>
|
|
23582
|
-
)
|
|
23583
|
-
}
|
|
23584
|
-
`
|
|
23585
|
-
}
|
|
23586
|
-
}
|
|
23587
|
-
},
|
|
23588
|
-
c_dynamic_group: {
|
|
23589
|
-
label: "Dynamic Group",
|
|
23590
|
-
description: "",
|
|
23591
|
-
examples: {
|
|
23592
|
-
basic: {
|
|
23593
|
-
react: code`
|
|
23594
|
-
function DemoComponent() {
|
|
23595
|
-
const initValue = {
|
|
23596
|
-
name: "Foo",
|
|
23597
|
-
}
|
|
23598
|
-
const { formValue, formMeta, updateForm } = useSpsForm(initValue)
|
|
23599
|
-
|
|
23600
|
-
function handleFieldsetToggle(enabled) {
|
|
23601
|
-
if (enabled) {
|
|
23602
|
-
updateForm({
|
|
23603
|
-
...formValue,
|
|
23604
|
-
other_stuff: {
|
|
23605
|
-
tagline: "",
|
|
23606
|
-
description: "",
|
|
23607
|
-
},
|
|
23608
|
-
})
|
|
23609
|
-
} else {
|
|
23610
|
-
updateForm(omit(formValue, "other_stuff"))
|
|
23611
|
-
}
|
|
23612
|
-
}
|
|
23613
|
-
|
|
23614
|
-
function handleSubmit() {
|
|
23615
|
-
console.log("submit", formValue)
|
|
23616
|
-
}
|
|
23617
|
-
function reset() {
|
|
23618
|
-
updateForm(initValue)
|
|
23619
|
-
}
|
|
23620
|
-
|
|
23621
|
-
return (
|
|
23622
|
-
<>
|
|
23623
|
-
<SpsForm formMeta={formMeta} onSubmit={handleSubmit}>
|
|
23624
|
-
<div className="sfg-row">
|
|
23625
|
-
<div className="sfg-col-8">
|
|
23626
|
-
<SpsLabel for={formMeta.fields.name}>Name</SpsLabel>
|
|
23627
|
-
<SpsTextInput
|
|
23628
|
-
value={formValue.name}
|
|
23629
|
-
formMeta={formMeta.fields.name}
|
|
23630
|
-
/>
|
|
23631
|
-
</div>
|
|
23632
|
-
<div className="sfg-col-4"></div>
|
|
23633
|
-
</div>
|
|
23634
|
-
<div className="sfg-row">
|
|
23635
|
-
<div className="sfg-col-12">
|
|
23636
|
-
<SpsFieldset
|
|
23637
|
-
optional
|
|
23638
|
-
enabled={formMeta.fields.other_stuff}
|
|
23639
|
-
formMeta={formMeta.fields.other_stuff}
|
|
23640
|
-
onToggled={handleFieldsetToggle}
|
|
23641
|
-
legend="Other Stuff"
|
|
23642
|
-
>
|
|
23643
|
-
{formMeta.fields.other_stuff && (
|
|
23644
|
-
<>
|
|
23645
|
-
<div className="sfg-row">
|
|
23646
|
-
<div className="sfg-col-12">
|
|
23647
|
-
<SpsLabel
|
|
23648
|
-
for={formMeta.fields.other_stuff.fields.tagline}
|
|
23649
|
-
>
|
|
23650
|
-
Tagline
|
|
23651
|
-
</SpsLabel>
|
|
23652
|
-
<SpsTextInput
|
|
23653
|
-
value={formValue.other_stuff.tagline}
|
|
23654
|
-
formMeta={formMeta.fields.other_stuff.fields.tagline}
|
|
23655
|
-
/>
|
|
23656
|
-
</div>
|
|
23657
|
-
</div>
|
|
23658
|
-
<div className="sfg-row">
|
|
23659
|
-
<div className="sfg-col-12">
|
|
23660
|
-
<SpsLabel
|
|
23661
|
-
for={formMeta.fields.other_stuff.fields.description}
|
|
23662
|
-
>
|
|
23663
|
-
Description
|
|
23664
|
-
</SpsLabel>
|
|
23665
|
-
<SpsTextInput
|
|
23666
|
-
value={formValue.other_stuff.description}
|
|
23667
|
-
formMeta={
|
|
23668
|
-
formMeta.fields.other_stuff.fields.description
|
|
23669
|
-
}
|
|
23670
|
-
/>
|
|
23671
|
-
</div>
|
|
23672
|
-
</div>
|
|
23673
|
-
</>
|
|
23674
|
-
)}
|
|
23675
|
-
</SpsFieldset>
|
|
23676
|
-
</div>
|
|
23677
|
-
</div>
|
|
23678
|
-
<div className="sfg-row">
|
|
23679
|
-
<div className="sfg-col-12">
|
|
23680
|
-
<SpsButton className="mr-1" onClick={reset}>
|
|
23681
|
-
Reset
|
|
23682
|
-
</SpsButton>
|
|
23683
|
-
<SpsButton
|
|
23684
|
-
type={ButtonType.SUBMIT}
|
|
23685
|
-
kind={ButtonKind.CONFIRM}
|
|
23686
|
-
>
|
|
23687
|
-
Submit
|
|
23688
|
-
</SpsButton>
|
|
23689
|
-
</div>
|
|
23690
|
-
</div>
|
|
23691
|
-
</SpsForm>
|
|
23692
|
-
<br />
|
|
23693
|
-
{JSON.stringify(formValue)}
|
|
23694
|
-
</>
|
|
23695
|
-
)
|
|
23696
|
-
}
|
|
23697
|
-
`
|
|
23698
|
-
}
|
|
23699
|
-
}
|
|
23700
|
-
},
|
|
23701
|
-
preventative_validators: {
|
|
23702
|
-
label: "Preventative validators",
|
|
23703
|
-
examples: {
|
|
23704
|
-
basic: {
|
|
23705
|
-
react: code`
|
|
23706
|
-
function DemoComponent() {
|
|
23707
|
-
const initValue = {
|
|
23708
|
-
maxLength: "",
|
|
23709
|
-
alpha: "",
|
|
23710
|
-
numeric: "",
|
|
23711
|
-
nonNumeric: ""
|
|
23712
|
-
};
|
|
23713
|
-
|
|
23714
|
-
const { formValue, formMeta, updateForm } = useSpsForm(initValue, {
|
|
23715
|
-
"maxLength": [SpsValidators.maxLength(5)],
|
|
23716
|
-
"alpha": [SpsValidators.alpha],
|
|
23717
|
-
"numeric": [SpsValidators.numeric],
|
|
23718
|
-
"nonNumeric": [SpsValidators.nonNumeric]
|
|
23719
|
-
});
|
|
23720
|
-
|
|
23721
|
-
function handleSubmit() {
|
|
23722
|
-
console.log("submit", formValue);
|
|
23723
|
-
}
|
|
23724
|
-
|
|
23725
|
-
function reset() {
|
|
23726
|
-
updateForm(initValue);
|
|
23727
|
-
formMeta.markAsPristine();
|
|
23728
|
-
}
|
|
23729
|
-
|
|
23730
|
-
return <>
|
|
23731
|
-
<SpsForm formMeta={formMeta} onSubmit={handleSubmit}>
|
|
23732
|
-
<div className="sfg-row">
|
|
23733
|
-
<div className="sfg-col-8">
|
|
23734
|
-
<SpsLabel
|
|
23735
|
-
for={formMeta.fields.maxLength}
|
|
23736
|
-
>
|
|
23737
|
-
MaxLength
|
|
23738
|
-
</SpsLabel>
|
|
23739
|
-
<SpsTextInput
|
|
23740
|
-
value={formValue.maxLength}
|
|
23741
|
-
formMeta={formMeta.fields.maxLength}
|
|
23742
|
-
/>
|
|
23743
|
-
</div>
|
|
23744
|
-
</div>
|
|
23745
|
-
<div className="sfg-row">
|
|
23746
|
-
<div className="sfg-col-8">
|
|
23747
|
-
<SpsLabel
|
|
23748
|
-
for={formMeta.fields.alpha}
|
|
23749
|
-
>
|
|
23750
|
-
Alpha
|
|
23751
|
-
</SpsLabel>
|
|
23752
|
-
<SpsTextInput
|
|
23753
|
-
value={formValue.alpha}
|
|
23754
|
-
formMeta={formMeta.fields.alpha}
|
|
23755
|
-
/>
|
|
23756
|
-
</div>
|
|
23757
|
-
</div>
|
|
23758
|
-
<div className="sfg-row">
|
|
23759
|
-
<div className="sfg-col-8">
|
|
23760
|
-
<SpsLabel
|
|
23761
|
-
for={formMeta.fields.numeric}
|
|
23762
|
-
>
|
|
23763
|
-
Numeric
|
|
23764
|
-
</SpsLabel>
|
|
23765
|
-
<SpsTextInput
|
|
23766
|
-
value={formValue.numeric}
|
|
23767
|
-
formMeta={formMeta.fields.numeric}
|
|
23768
|
-
/>
|
|
23769
|
-
</div>
|
|
23770
|
-
</div>
|
|
23771
|
-
<div className="sfg-row">
|
|
23772
|
-
<div className="sfg-col-8">
|
|
23773
|
-
<SpsLabel
|
|
23774
|
-
for={formMeta.fields.nonNumeric}
|
|
23775
|
-
>
|
|
23776
|
-
nonNumeric
|
|
23777
|
-
</SpsLabel>
|
|
23778
|
-
<SpsTextInput
|
|
23779
|
-
value={formValue.nonNumeric}
|
|
23780
|
-
formMeta={formMeta.fields.nonNumeric}
|
|
23781
|
-
/>
|
|
23782
|
-
</div>
|
|
23783
|
-
</div>
|
|
23784
|
-
|
|
23785
|
-
<div className="sfg-row">
|
|
23786
|
-
<div className="sfg-col-12">
|
|
23787
|
-
<SpsButton className="mr-1" onClick={reset}>Reset</SpsButton>
|
|
23788
|
-
<SpsButton type={ButtonType.SUBMIT} kind={ButtonKind.CONFIRM}>Submit</SpsButton>
|
|
23789
|
-
</div>
|
|
23790
|
-
</div>
|
|
23791
|
-
</SpsForm>
|
|
23792
|
-
</>;
|
|
23793
|
-
}
|
|
23794
|
-
`
|
|
23795
|
-
},
|
|
23796
|
-
custom_text: {
|
|
23797
|
-
description: () => /* @__PURE__ */ React.createElement("p", null, "Using custom text in the tooltip"),
|
|
23798
|
-
react: code`
|
|
23799
|
-
function DemoComponent() {
|
|
23800
|
-
const initValue = {
|
|
23801
|
-
maxLength: ""
|
|
23802
|
-
};
|
|
23803
|
-
|
|
23804
|
-
const { formValue, formMeta, updateForm } = useSpsForm(initValue, {
|
|
23805
|
-
"maxLength": [SpsValidators.maxLength(5)]
|
|
23806
|
-
});
|
|
23807
|
-
|
|
23808
|
-
return <>
|
|
23809
|
-
<SpsForm formMeta={formMeta} >
|
|
23810
|
-
<div className="sfg-row">
|
|
23811
|
-
<div className="sfg-col-8">
|
|
23812
|
-
<SpsLabel
|
|
23813
|
-
for={formMeta.fields.maxLength}
|
|
23814
|
-
errors={() => formMeta.fields.maxLength.hasPreventativeError("maxLength")
|
|
23815
|
-
&& "This field accepts a maximum of 5 characters."}
|
|
23816
|
-
>
|
|
23817
|
-
MaxLength
|
|
23818
|
-
</SpsLabel>
|
|
23819
|
-
<SpsTextInput
|
|
23820
|
-
value={formValue.maxLength}
|
|
23821
|
-
formMeta={formMeta.fields.maxLength}
|
|
23822
|
-
/>
|
|
23823
|
-
</div>
|
|
23824
|
-
</div>
|
|
23825
|
-
</SpsForm>
|
|
23826
|
-
</>;
|
|
23827
|
-
}
|
|
23828
|
-
`
|
|
23829
|
-
}
|
|
23830
|
-
}
|
|
23831
|
-
},
|
|
23832
|
-
custom_errors: {
|
|
23833
|
-
label: "Custom errors",
|
|
23834
|
-
description: () => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", null, "When using custom validators you can specify when to show the errors - on Change, on Blur or on Submit.", /* @__PURE__ */ React.createElement("br", null), "On Blur is the default behavior. If you want to change that behavior you can use", " ", /* @__PURE__ */ React.createElement("b", null, "useCustomValidator hook"), ". It takes validation function as first argument, validator configuration (object containing errorKey as key and ValidationMode as value) as second argument and dependencies as third argument. useCustomValidator returns a React callback of the validation function with the given dependencies."), /* @__PURE__ */ React.createElement("p", null, /* @__PURE__ */ React.createElement("b", null, "!Note:"), " useCustomValidator hook will make changes to the global scope and once you set a custom error key you can't change it.")),
|
|
23835
|
-
examples: {
|
|
23836
|
-
basic: {
|
|
23837
|
-
react: code`
|
|
23838
|
-
function DemoComponent() {
|
|
23839
|
-
|
|
23840
|
-
const customValidator = useCustomValidator(
|
|
23841
|
-
(value) => value < 3 ? null : { customErrorKey: true },
|
|
23842
|
-
{ customErrorKey: ValidationMode.ON_CHANGE }
|
|
23843
|
-
// or { customErrorKey: ValidationMode.ON_SUBMIT }
|
|
23844
|
-
);
|
|
23845
|
-
|
|
23846
|
-
const initValue = {
|
|
23847
|
-
customErrorField: "",
|
|
23848
|
-
};
|
|
23849
|
-
|
|
23850
|
-
const { formValue, formMeta, updateForm } = useSpsForm(initValue, {
|
|
23851
|
-
"customErrorField": [customValidator],
|
|
23852
|
-
});
|
|
23853
|
-
|
|
23854
|
-
function handleSubmit() {
|
|
23855
|
-
console.log("submit", formValue);
|
|
23856
|
-
}
|
|
23857
|
-
|
|
23858
|
-
function reset() {
|
|
23859
|
-
updateForm(initValue);
|
|
23860
|
-
formMeta.markAsPristine();
|
|
23861
|
-
}
|
|
23862
|
-
|
|
23863
|
-
return <>
|
|
23864
|
-
<SpsForm formMeta={formMeta} onSubmit={handleSubmit}>
|
|
23865
|
-
<div className="sfg-row">
|
|
23866
|
-
<div className="sfg-col-8">
|
|
23867
|
-
<SpsLabel
|
|
23868
|
-
for={formMeta.fields.customErrorField}
|
|
23869
|
-
errors={() => formMeta.fields.customErrorField.hasError("customErrorKey")
|
|
23870
|
-
&& "Custom error description"}
|
|
23871
|
-
>
|
|
23872
|
-
Custom Error
|
|
23873
|
-
</SpsLabel>
|
|
23874
|
-
<SpsTextInput
|
|
23875
|
-
value={formValue.customErrorField}
|
|
23876
|
-
formMeta={formMeta.fields.customErrorField}
|
|
23877
|
-
/>
|
|
23878
|
-
</div>
|
|
23879
|
-
</div>
|
|
23880
|
-
|
|
23881
|
-
<div className="sfg-row">
|
|
23882
|
-
<div className="sfg-col-12">
|
|
23883
|
-
<SpsButton className="mr-1" onClick={reset}>Reset</SpsButton>
|
|
23884
|
-
<SpsButton type={ButtonType.SUBMIT} kind={ButtonKind.CONFIRM}>Submit</SpsButton>
|
|
23885
|
-
</div>
|
|
23886
|
-
</div>
|
|
23887
|
-
</SpsForm>
|
|
23888
|
-
</>;
|
|
23889
|
-
}
|
|
23890
|
-
`
|
|
23891
|
-
}
|
|
23892
|
-
}
|
|
23893
|
-
},
|
|
23894
|
-
updating_validators: {
|
|
23895
|
-
label: "Updating validators",
|
|
23896
|
-
description: () => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", null, "The updateForm function supports a seconds argument (options) that allows modifying multiple field validators at once.")),
|
|
23897
|
-
examples: {
|
|
23898
|
-
basic: {
|
|
23899
|
-
react: code`
|
|
23900
|
-
function DemoComponent() {
|
|
23901
|
-
const initValue = {
|
|
23902
|
-
fieldA: "",
|
|
23903
|
-
fieldB: "",
|
|
23904
|
-
};
|
|
23905
|
-
|
|
23906
|
-
const { formValue, formMeta, updateForm } = useSpsForm(initValue, {
|
|
23907
|
-
"fieldA": [SpsValidators.required],
|
|
23908
|
-
});
|
|
23909
|
-
|
|
23910
|
-
function handleSubmit() {
|
|
23911
|
-
console.log("submit", formValue);
|
|
23912
|
-
}
|
|
23913
|
-
|
|
23914
|
-
function reset() {
|
|
23915
|
-
updateForm(initValue, { validators: { fieldA: [SpsValidators.required], fieldB: [] }});
|
|
23916
|
-
formMeta.markAsPristine();
|
|
23917
|
-
}
|
|
23918
|
-
|
|
23919
|
-
// This will make field A non required and field B required in a single operation
|
|
23920
|
-
function updateValidators() {
|
|
23921
|
-
updateForm(undefined, { validators: { fieldA: [], fieldB: [SpsValidators.required] }});
|
|
23922
|
-
}
|
|
23923
|
-
|
|
23924
|
-
return <>
|
|
23925
|
-
<SpsForm formMeta={formMeta} onSubmit={handleSubmit}>
|
|
23926
|
-
<div className="sfg-row">
|
|
23927
|
-
<div className="sfg-col-8">
|
|
23928
|
-
<SpsLabel
|
|
23929
|
-
for={formMeta.fields.fieldA}
|
|
23930
|
-
>
|
|
23931
|
-
Field A
|
|
23932
|
-
</SpsLabel>
|
|
23933
|
-
<SpsTextInput
|
|
23934
|
-
value={formValue.fieldA}
|
|
23935
|
-
formMeta={formMeta.fields.fieldA}
|
|
23936
|
-
/>
|
|
23937
|
-
</div>
|
|
23938
|
-
<div className="sfg-col-8">
|
|
23939
|
-
<SpsLabel
|
|
23940
|
-
for={formMeta.fields.fieldB}
|
|
23941
|
-
>
|
|
23942
|
-
Field B
|
|
23943
|
-
</SpsLabel>
|
|
23944
|
-
<SpsTextInput
|
|
23945
|
-
value={formValue.fieldB}
|
|
23946
|
-
formMeta={formMeta.fields.fieldB}
|
|
23947
|
-
/>
|
|
23948
|
-
</div>
|
|
23949
|
-
</div>
|
|
23950
|
-
|
|
23951
|
-
<div className="sfg-row">
|
|
23952
|
-
<div className="sfg-col-12">
|
|
23953
|
-
<SpsButton className="mr-1" onClick={reset}>Reset</SpsButton>
|
|
23954
|
-
<SpsButton className="mr-1" onClick={updateValidators}>Update Validators</SpsButton>
|
|
23955
|
-
<SpsButton type={ButtonType.SUBMIT} kind={ButtonKind.CONFIRM}>Submit</SpsButton>
|
|
23956
|
-
</div>
|
|
23957
|
-
</div>
|
|
23958
|
-
</SpsForm>
|
|
23959
|
-
</>;
|
|
23960
|
-
}
|
|
23961
|
-
`
|
|
23962
|
-
}
|
|
23963
|
-
}
|
|
23964
|
-
}
|
|
23965
|
-
};
|
|
23440
|
+
const SpsFormExamples = {};
|
|
23966
23441
|
const SpsAddRemoveFormRowExamples = {
|
|
23967
23442
|
ideal: {
|
|
23968
23443
|
label: "Ideal",
|
|
@@ -33315,202 +32790,286 @@ const SpsScrollableContainerExamples = {
|
|
|
33315
32790
|
}
|
|
33316
32791
|
};
|
|
33317
32792
|
const SpsSelectExamples = {
|
|
32793
|
+
general: {
|
|
32794
|
+
label: "General Usage",
|
|
32795
|
+
description: ({ NavigateTo }) => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h5", null, "Use a Select:"), /* @__PURE__ */ React__default.createElement("ul", null, /* @__PURE__ */ React__default.createElement("li", {
|
|
32796
|
+
className: "mb-2"
|
|
32797
|
+
}, "When a list of predetermined values can be provided.")), /* @__PURE__ */ React__default.createElement("h5", null, "Do Not Use a Select:"), /* @__PURE__ */ React__default.createElement("ul", null, /* @__PURE__ */ React__default.createElement("li", {
|
|
32798
|
+
className: "mb-2"
|
|
32799
|
+
}, "When there are only two possible options. Consider", " ", /* @__PURE__ */ React__default.createElement(NavigateTo, {
|
|
32800
|
+
to: "checkbox"
|
|
32801
|
+
}, "Checkboxes"), " or", " ", /* @__PURE__ */ React__default.createElement(NavigateTo, {
|
|
32802
|
+
to: "radio-buttons"
|
|
32803
|
+
}, "Radio Buttons"), " insead."), /* @__PURE__ */ React__default.createElement("li", {
|
|
32804
|
+
className: "mb-2"
|
|
32805
|
+
}, "When it is ideal to display all available options without requiring a click. Consider", " ", /* @__PURE__ */ React__default.createElement(NavigateTo, {
|
|
32806
|
+
to: "checkbox"
|
|
32807
|
+
}, "Checkboxes"), " or", " ", /* @__PURE__ */ React__default.createElement(NavigateTo, {
|
|
32808
|
+
to: "radio-buttons"
|
|
32809
|
+
}, "Radio Buttons"), " insead.")), /* @__PURE__ */ React__default.createElement("h5", null, "Using Selects in a Form"), /* @__PURE__ */ React__default.createElement("p", null, "Reference the ", /* @__PURE__ */ React__default.createElement(NavigateTo, {
|
|
32810
|
+
to: "form"
|
|
32811
|
+
}, "Forms"), " page for guidelines for placing inputs in Form layouts"))
|
|
32812
|
+
},
|
|
33318
32813
|
basic: {
|
|
33319
|
-
label: "Basic",
|
|
33320
|
-
description: "
|
|
32814
|
+
label: "Basic Select",
|
|
32815
|
+
description: () => /* @__PURE__ */ React__default.createElement("p", null, "Basic Selects include a label and dropdown menu containing a list of options. The user is allowed to make a single selection."),
|
|
33321
32816
|
examples: {
|
|
33322
|
-
|
|
33323
|
-
description: "Simple value options",
|
|
32817
|
+
basic: {
|
|
33324
32818
|
react: code`
|
|
33325
|
-
|
|
33326
|
-
|
|
32819
|
+
function DemoComponent() {
|
|
32820
|
+
const colors = ["red", "blue", "green"];
|
|
33327
32821
|
|
|
33328
|
-
|
|
33329
|
-
|
|
33330
|
-
|
|
33331
|
-
|
|
33332
|
-
|
|
32822
|
+
return (
|
|
32823
|
+
<div className="sfg-row">
|
|
32824
|
+
<div className="sfg-col-4">
|
|
32825
|
+
<SpsLabel>Color</SpsLabel>
|
|
32826
|
+
<SpsSelect options={colors} />
|
|
32827
|
+
</div>
|
|
32828
|
+
</div>
|
|
32829
|
+
)
|
|
32830
|
+
}
|
|
32831
|
+
`
|
|
33333
32832
|
},
|
|
33334
|
-
|
|
33335
|
-
description: "
|
|
32833
|
+
placeholderText: {
|
|
32834
|
+
description: () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h4", null, "Customizable Placeholder Text"), /* @__PURE__ */ React__default.createElement("p", null, "Placeholder text can be customized to specifically reference the content in the dropdown menu.")),
|
|
33336
32835
|
react: code`
|
|
33337
|
-
|
|
33338
|
-
|
|
33339
|
-
const { formValue, formMeta, updateForm } = useSpsForm({
|
|
33340
|
-
color: colors[0]
|
|
33341
|
-
});
|
|
32836
|
+
function DemoComponent() {
|
|
32837
|
+
const colors = ["red", "blue", "green"];
|
|
33342
32838
|
|
|
33343
|
-
|
|
33344
|
-
|
|
33345
|
-
|
|
33346
|
-
|
|
33347
|
-
|
|
33348
|
-
|
|
33349
|
-
|
|
33350
|
-
|
|
32839
|
+
return (
|
|
32840
|
+
<div className="sfg-row">
|
|
32841
|
+
<div className="sfg-col-4">
|
|
32842
|
+
<SpsLabel>Color</SpsLabel>
|
|
32843
|
+
<SpsSelect options={colors} placeholder="Select a color..." />
|
|
32844
|
+
</div>
|
|
32845
|
+
</div>
|
|
32846
|
+
)
|
|
32847
|
+
}
|
|
32848
|
+
`
|
|
33351
32849
|
},
|
|
33352
|
-
|
|
33353
|
-
description: "
|
|
32850
|
+
defaultSelection: {
|
|
32851
|
+
description: () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h4", null, "Default Selection / No Clear Button"), /* @__PURE__ */ React__default.createElement("p", null, "Selects can default to a selection in certain cases. Use Default Selections only when a selection is required and a default selection can be confidently made. Selects with a default selection do not have a clear option.")),
|
|
33354
32852
|
react: code`
|
|
33355
|
-
|
|
33356
|
-
|
|
32853
|
+
function DemoComponent() {
|
|
32854
|
+
const colors = ["Small", "Medium", "Large"];
|
|
33357
32855
|
|
|
33358
|
-
|
|
33359
|
-
|
|
33360
|
-
|
|
33361
|
-
|
|
33362
|
-
|
|
32856
|
+
return (
|
|
32857
|
+
<div className="sfg-row">
|
|
32858
|
+
<div className="sfg-col-4">
|
|
32859
|
+
<SpsLabel>Size</SpsLabel>
|
|
32860
|
+
<SpsSelect options={colors} value="Small" notClearable />
|
|
32861
|
+
</div>
|
|
32862
|
+
</div>
|
|
32863
|
+
)
|
|
32864
|
+
}
|
|
32865
|
+
`
|
|
33363
32866
|
},
|
|
33364
|
-
|
|
33365
|
-
description: "
|
|
32867
|
+
zeroState: {
|
|
32868
|
+
description: () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h4", null, "Zero State / No Available Options"), /* @__PURE__ */ React__default.createElement("p", null, "If no options are available in the dropdown menu, a zero state message appears. This option is most commonly used with the Select with Filter option.")),
|
|
33366
32869
|
react: code`
|
|
33367
|
-
|
|
33368
|
-
const colors = ["red", "blue", "green"];
|
|
32870
|
+
function DemoComponent() {
|
|
33369
32871
|
|
|
33370
|
-
|
|
33371
|
-
|
|
33372
|
-
|
|
33373
|
-
|
|
33374
|
-
|
|
32872
|
+
return (
|
|
32873
|
+
<div className="sfg-row">
|
|
32874
|
+
<div className="sfg-col-4">
|
|
32875
|
+
<SpsLabel>Company</SpsLabel>
|
|
32876
|
+
<SpsSelect options={[]} zeroState="We're sorry, there are no options to choose from at this time." />
|
|
32877
|
+
</div>
|
|
32878
|
+
</div>
|
|
32879
|
+
)
|
|
32880
|
+
}
|
|
32881
|
+
`
|
|
33375
32882
|
},
|
|
33376
|
-
|
|
33377
|
-
description: "
|
|
32883
|
+
formHooks: {
|
|
32884
|
+
description: ({ NavigateTo }) => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h4", null, "Form Hooks"), /* @__PURE__ */ React__default.createElement("p", null, "The ", /* @__PURE__ */ React__default.createElement("code", null, "formMeta"), " and ", /* @__PURE__ */ React__default.createElement("code", null, "formValue"), " props are used with the", " ", /* @__PURE__ */ React__default.createElement("code", null, "useSpsForm"), " hook. By using the ", /* @__PURE__ */ React__default.createElement("code", null, "useSpsForm"), " hook you can add validators, get the form value, update the form value, and more. The form is documented on the ", /* @__PURE__ */ React__default.createElement(NavigateTo, {
|
|
32885
|
+
to: "form"
|
|
32886
|
+
}, "Forms"), " page.")),
|
|
33378
32887
|
react: code`
|
|
33379
|
-
|
|
33380
|
-
|
|
33381
|
-
|
|
33382
|
-
|
|
33383
|
-
|
|
33384
|
-
|
|
32888
|
+
function DemoComponent() {
|
|
32889
|
+
const colors = ["red", "blue", "green"];
|
|
32890
|
+
const { formValue, formMeta, updateForm } = useSpsForm({
|
|
32891
|
+
color: colors[0]
|
|
32892
|
+
});
|
|
32893
|
+
|
|
32894
|
+
return (
|
|
32895
|
+
<div className="sfg-row">
|
|
32896
|
+
<div className="sfg-col-4">
|
|
32897
|
+
<SpsLabel for={formMeta.fields.color}>Color</SpsLabel>
|
|
32898
|
+
<SpsSelect options={colors} formMeta={formMeta.fields.color} formValue={formValue.color}/>
|
|
32899
|
+
</div>
|
|
32900
|
+
</div>
|
|
32901
|
+
)
|
|
32902
|
+
}
|
|
32903
|
+
`
|
|
33385
32904
|
}
|
|
33386
32905
|
}
|
|
33387
32906
|
},
|
|
33388
|
-
|
|
33389
|
-
label: "
|
|
33390
|
-
description: "
|
|
32907
|
+
filter: {
|
|
32908
|
+
label: "Select with Filter",
|
|
32909
|
+
description: () => /* @__PURE__ */ React__default.createElement("p", null, "It can be helpful to add a filter field to dropdown menus that contain a large amount of options to aid the user in finding the option they need."),
|
|
33391
32910
|
examples: {
|
|
33392
|
-
|
|
33393
|
-
description: "Basic use of object options",
|
|
32911
|
+
basic: {
|
|
33394
32912
|
react: code`
|
|
33395
|
-
|
|
33396
|
-
|
|
33397
|
-
|
|
33398
|
-
|
|
33399
|
-
{ size: "L", price: "14.99" }
|
|
33400
|
-
];
|
|
32913
|
+
function DemoComponent() {
|
|
32914
|
+
function colorSearch(search) {
|
|
32915
|
+
return ["red", "orange", "yellow", "green", "blue", "indigo", "violet"].filter(s => (new RegExp(search, "i")).test(s));
|
|
32916
|
+
}
|
|
33401
32917
|
|
|
33402
|
-
|
|
33403
|
-
|
|
33404
|
-
|
|
33405
|
-
|
|
33406
|
-
|
|
32918
|
+
return (
|
|
32919
|
+
<div className="sfg-row">
|
|
32920
|
+
<div className="sfg-col-4">
|
|
32921
|
+
<SpsLabel>Color</SpsLabel>
|
|
32922
|
+
<SpsSelect options={colorSearch} zeroState="While I'm sure that's a lovely color, it's not an option we support.ssssssssss" />
|
|
32923
|
+
</div>
|
|
32924
|
+
</div>
|
|
32925
|
+
)
|
|
32926
|
+
}
|
|
32927
|
+
`
|
|
33407
32928
|
},
|
|
33408
|
-
|
|
33409
|
-
description: "
|
|
32929
|
+
promise: {
|
|
32930
|
+
description: () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h4", null, "Return a Promise"), /* @__PURE__ */ React__default.createElement("p", null, "A promise should be used when the options are being returned asynchronously. A common use case for this is when the options are being returned as a result of an API call.")),
|
|
33410
32931
|
react: code`
|
|
33411
|
-
|
|
33412
|
-
|
|
33413
|
-
|
|
33414
|
-
|
|
33415
|
-
|
|
33416
|
-
|
|
33417
|
-
|
|
33418
|
-
title: "Ipsum",
|
|
33419
|
-
description: "Excepteur sint occaecat cupidatat non proident"
|
|
33420
|
-
}
|
|
33421
|
-
];
|
|
32932
|
+
function DemoComponent() {
|
|
32933
|
+
function colorSearch(search) {
|
|
32934
|
+
return new Promise((resolve, reject) => {
|
|
32935
|
+
const result = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"].filter(s => new RegExp(search, "i").test(s));
|
|
32936
|
+
resolve(result);
|
|
32937
|
+
});
|
|
32938
|
+
}
|
|
33422
32939
|
|
|
33423
|
-
|
|
33424
|
-
|
|
33425
|
-
|
|
33426
|
-
|
|
33427
|
-
|
|
32940
|
+
return (
|
|
32941
|
+
<div className="sfg-row">
|
|
32942
|
+
<div className="sfg-col-4">
|
|
32943
|
+
<SpsLabel>Color</SpsLabel>
|
|
32944
|
+
<SpsSelect options={colorSearch} />
|
|
32945
|
+
</div>
|
|
32946
|
+
</div>
|
|
32947
|
+
)
|
|
32948
|
+
}
|
|
32949
|
+
`
|
|
32950
|
+
},
|
|
32951
|
+
debounce: {
|
|
32952
|
+
description: () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h4", null, "Debounce"), /* @__PURE__ */ React__default.createElement("p", null, "When the options are a result of a search or are not available right away a debounce may be helpful. A debounce adds a delay to the option search so the search function is not getting called repeatedly.")),
|
|
32953
|
+
react: code`
|
|
32954
|
+
function DemoComponent() {
|
|
32955
|
+
function colorSearch(search) {
|
|
32956
|
+
return ["red", "orange", "yellow", "green", "blue", "indigo", "violet"].filter(s => new RegExp(search, "i").test(s));
|
|
32957
|
+
}
|
|
32958
|
+
|
|
32959
|
+
return (
|
|
32960
|
+
<div className="sfg-row">
|
|
32961
|
+
<div className="sfg-col-4">
|
|
32962
|
+
<SpsLabel>Color</SpsLabel>
|
|
32963
|
+
<SpsSelect options={colorSearch} searchDebounce={2000} />
|
|
32964
|
+
</div>
|
|
32965
|
+
</div>
|
|
32966
|
+
)
|
|
32967
|
+
}
|
|
32968
|
+
`
|
|
33428
32969
|
}
|
|
33429
32970
|
}
|
|
33430
32971
|
},
|
|
33431
|
-
|
|
33432
|
-
label: "
|
|
33433
|
-
description: "
|
|
32972
|
+
objectOptions: {
|
|
32973
|
+
label: "Object Options",
|
|
32974
|
+
description: () => /* @__PURE__ */ React__default.createElement("p", null, "The values in the select menu can be modified to provide more detail to the user or the system, when necessary."),
|
|
33434
32975
|
examples: {
|
|
33435
|
-
|
|
33436
|
-
description: "Simple search function",
|
|
32976
|
+
basic: {
|
|
33437
32977
|
react: code`
|
|
33438
|
-
|
|
33439
|
-
|
|
33440
|
-
|
|
33441
|
-
|
|
33442
|
-
|
|
33443
|
-
|
|
33444
|
-
|
|
33445
|
-
|
|
33446
|
-
|
|
33447
|
-
|
|
33448
|
-
|
|
32978
|
+
function DemoComponent() {
|
|
32979
|
+
const sizes = [
|
|
32980
|
+
{ size: "S", price: "10.99" },
|
|
32981
|
+
{ size: "M", price: "12.99" },
|
|
32982
|
+
{ size: "S", price: "10.99" },
|
|
32983
|
+
]
|
|
32984
|
+
|
|
32985
|
+
return (
|
|
32986
|
+
<div className="sfg-row">
|
|
32987
|
+
<div className="sfg-col-4">
|
|
32988
|
+
<SpsLabel>Size</SpsLabel>
|
|
32989
|
+
<SpsSelect options={sizes} textKey="size" />
|
|
32990
|
+
</div>
|
|
32991
|
+
</div>
|
|
32992
|
+
)
|
|
32993
|
+
}
|
|
32994
|
+
`
|
|
33449
32995
|
},
|
|
33450
|
-
|
|
33451
|
-
description: "
|
|
32996
|
+
extendedDetails: {
|
|
32997
|
+
description: () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("h4", null, "Extended Details"), /* @__PURE__ */ React__default.createElement("p", null, "Extended details can be displayed in the dropdown menu. Only the primary detail is displayed as the selection.")),
|
|
33452
32998
|
react: code`
|
|
33453
|
-
|
|
33454
|
-
|
|
33455
|
-
|
|
33456
|
-
|
|
33457
|
-
|
|
33458
|
-
|
|
33459
|
-
|
|
33460
|
-
|
|
33461
|
-
|
|
33462
|
-
|
|
33463
|
-
|
|
33464
|
-
|
|
33465
|
-
|
|
33466
|
-
|
|
33467
|
-
|
|
33468
|
-
|
|
33469
|
-
|
|
32999
|
+
function DemoComponent() {
|
|
33000
|
+
const sizes = [
|
|
33001
|
+
{ size: "S", price: "$10.99" },
|
|
33002
|
+
{ size: "M", price: "$12.99" },
|
|
33003
|
+
{ size: "S", price: "$10.99" },
|
|
33004
|
+
]
|
|
33005
|
+
return (
|
|
33006
|
+
<div className="sfg-row">
|
|
33007
|
+
<div className="sfg-col-4">
|
|
33008
|
+
<SpsLabel>Size</SpsLabel>
|
|
33009
|
+
<SpsSelect options={sizes} textKey="size" captionKey="price" />
|
|
33010
|
+
</div>
|
|
33011
|
+
</div>
|
|
33012
|
+
)
|
|
33013
|
+
}
|
|
33014
|
+
`
|
|
33015
|
+
}
|
|
33016
|
+
}
|
|
33017
|
+
},
|
|
33018
|
+
selectWithAction: {
|
|
33019
|
+
label: "Select with Action Button",
|
|
33020
|
+
description: () => /* @__PURE__ */ React__default.createElement("p", null, "A Text Button can be added to the bottom of the dropdown menu to provide a specific action."),
|
|
33021
|
+
examples: {
|
|
33022
|
+
basic: {
|
|
33470
33023
|
react: code`
|
|
33471
|
-
|
|
33472
|
-
|
|
33473
|
-
|
|
33474
|
-
|
|
33475
|
-
|
|
33024
|
+
function DemoComponent() {
|
|
33025
|
+
const colors = ["red", "blue", "green"];
|
|
33026
|
+
const [action, updateAction] = useSpsAction(
|
|
33027
|
+
{
|
|
33028
|
+
label: "Go to Overview",
|
|
33029
|
+
icon: "dashboard",
|
|
33030
|
+
href: "#/overview",
|
|
33031
|
+
newTab: true
|
|
33032
|
+
},
|
|
33033
|
+
() => console.log("Action")
|
|
33034
|
+
);
|
|
33035
|
+
|
|
33036
|
+
function handleChange(event) {
|
|
33037
|
+
updateAction({
|
|
33038
|
+
label: "Test Action"
|
|
33039
|
+
});
|
|
33040
|
+
}
|
|
33476
33041
|
|
|
33477
|
-
|
|
33478
|
-
|
|
33479
|
-
|
|
33480
|
-
|
|
33481
|
-
|
|
33042
|
+
return (
|
|
33043
|
+
<div className="sfg-row">
|
|
33044
|
+
<div className="sfg-col-4">
|
|
33045
|
+
<SpsSelect options={colors} action={action} onChange={handleChange} />
|
|
33046
|
+
</div>
|
|
33047
|
+
</div>
|
|
33048
|
+
)
|
|
33049
|
+
}
|
|
33050
|
+
`
|
|
33482
33051
|
}
|
|
33483
33052
|
}
|
|
33484
33053
|
},
|
|
33485
|
-
|
|
33486
|
-
label: "
|
|
33487
|
-
description: "
|
|
33054
|
+
disabled: {
|
|
33055
|
+
label: "Disabled State",
|
|
33056
|
+
description: () => /* @__PURE__ */ React__default.createElement("p", null, "In the disabled state, select inputs display the current selection or placeholder text, but cannot be interacted with."),
|
|
33488
33057
|
examples: {
|
|
33489
|
-
|
|
33490
|
-
description: "Action",
|
|
33058
|
+
basic: {
|
|
33491
33059
|
react: code`
|
|
33492
|
-
|
|
33493
|
-
|
|
33494
|
-
const [action, updateAction] = useSpsAction(
|
|
33495
|
-
{
|
|
33496
|
-
label: "Go to Overview",
|
|
33497
|
-
icon: "dashboard",
|
|
33498
|
-
href: "#/overview",
|
|
33499
|
-
newTab: true
|
|
33500
|
-
},
|
|
33501
|
-
() => console.log("Action")
|
|
33502
|
-
);
|
|
33503
|
-
function handleChange(event) {
|
|
33504
|
-
updateAction({
|
|
33505
|
-
label: "Test Action"
|
|
33506
|
-
});
|
|
33507
|
-
}
|
|
33060
|
+
function DemoComponent() {
|
|
33061
|
+
const colors = ["red", "blue", "green"];
|
|
33508
33062
|
|
|
33509
|
-
|
|
33510
|
-
|
|
33511
|
-
|
|
33512
|
-
|
|
33513
|
-
|
|
33063
|
+
return (
|
|
33064
|
+
<div className="sfg-row">
|
|
33065
|
+
<div className="sfg-col-4">
|
|
33066
|
+
<SpsLabel>Color</SpsLabel>
|
|
33067
|
+
<SpsSelect options={colors} disabled />
|
|
33068
|
+
</div>
|
|
33069
|
+
</div>
|
|
33070
|
+
)
|
|
33071
|
+
}
|
|
33072
|
+
`
|
|
33514
33073
|
}
|
|
33515
33074
|
}
|
|
33516
33075
|
}
|
|
@@ -38163,6 +37722,7 @@ const MANIFEST = {
|
|
|
38163
37722
|
examples: SpsSearchResultsBarExamples
|
|
38164
37723
|
},
|
|
38165
37724
|
Select: {
|
|
37725
|
+
description: "Selects consist off a Label and a dropdown menu from which a user selects a value from a list of pre-defined options.",
|
|
38166
37726
|
components: [SpsSelect],
|
|
38167
37727
|
examples: SpsSelectExamples
|
|
38168
37728
|
},
|