@uipath/apollo-wind 2.63.0 → 2.65.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.
Files changed (71) hide show
  1. package/dist/components/forms/aria-ids.cjs +38 -0
  2. package/dist/components/forms/aria-ids.d.ts +2 -0
  3. package/dist/components/forms/aria-ids.js +4 -0
  4. package/dist/components/forms/demo-mocks.cjs +0 -448
  5. package/dist/components/forms/demo-mocks.js +0 -448
  6. package/dist/components/forms/field-control.cjs +21 -17
  7. package/dist/components/forms/field-control.d.ts +3 -1
  8. package/dist/components/forms/field-control.js +21 -17
  9. package/dist/components/forms/field-renderer.cjs +65 -37
  10. package/dist/components/forms/field-renderer.js +66 -38
  11. package/dist/components/forms/form-designer.cjs +204 -3
  12. package/dist/components/forms/form-designer.js +204 -3
  13. package/dist/components/forms/form-examples.cjs +3 -190
  14. package/dist/components/forms/form-examples.d.ts +0 -10
  15. package/dist/components/forms/form-examples.js +3 -184
  16. package/dist/components/forms/form-schema.d.ts +6 -0
  17. package/dist/components/forms/metadata-form.cjs +9 -1
  18. package/dist/components/forms/metadata-form.d.ts +8 -1
  19. package/dist/components/forms/metadata-form.js +9 -1
  20. package/dist/components/forms/mode-aware-field.cjs +11 -6
  21. package/dist/components/forms/mode-aware-field.d.ts +2 -0
  22. package/dist/components/forms/mode-aware-field.js +11 -6
  23. package/dist/components/forms/string-list-field.cjs +5 -4
  24. package/dist/components/forms/string-list-field.d.ts +4 -2
  25. package/dist/components/forms/string-list-field.js +5 -4
  26. package/dist/components/ui/index.cjs +77 -66
  27. package/dist/components/ui/index.d.ts +1 -0
  28. package/dist/components/ui/index.js +1 -0
  29. package/dist/components/ui/json-tree-view/JsonTree.types.d.ts +13 -0
  30. package/dist/components/ui/json-tree-view/JsonTreeRow.cjs +2 -1
  31. package/dist/components/ui/json-tree-view/JsonTreeRow.js +2 -1
  32. package/dist/components/ui/json-tree-view/JsonTypeBadge.cjs +43 -6
  33. package/dist/components/ui/json-tree-view/JsonTypeBadge.d.ts +6 -3
  34. package/dist/components/ui/json-tree-view/JsonTypeBadge.js +44 -7
  35. package/dist/components/ui/json-tree-view/index.d.ts +1 -1
  36. package/dist/components/ui/json-tree-view/strings.cjs +1 -0
  37. package/dist/components/ui/json-tree-view/strings.d.ts +10 -2
  38. package/dist/components/ui/json-tree-view/strings.js +1 -0
  39. package/dist/components/ui/prompt-value-control.cjs +3 -1
  40. package/dist/components/ui/prompt-value-control.d.ts +5 -0
  41. package/dist/components/ui/prompt-value-control.js +3 -1
  42. package/dist/components/ui/sidebar/index.cjs +113 -0
  43. package/dist/components/ui/sidebar/index.d.ts +10 -0
  44. package/dist/components/ui/sidebar/index.js +7 -0
  45. package/dist/components/ui/sidebar/sidebar-context.cjs +151 -0
  46. package/dist/components/ui/sidebar/sidebar-context.d.ts +39 -0
  47. package/dist/components/ui/sidebar/sidebar-context.js +108 -0
  48. package/dist/components/ui/sidebar/sidebar-group.cjs +87 -0
  49. package/dist/components/ui/sidebar/sidebar-group.d.ts +10 -0
  50. package/dist/components/ui/sidebar/sidebar-group.js +44 -0
  51. package/dist/components/ui/sidebar/sidebar-layout.cjs +92 -0
  52. package/dist/components/ui/sidebar/sidebar-layout.d.ts +7 -0
  53. package/dist/components/ui/sidebar/sidebar-layout.js +46 -0
  54. package/dist/components/ui/sidebar/sidebar-menu-sub.cjs +79 -0
  55. package/dist/components/ui/sidebar/sidebar-menu-sub.d.ts +11 -0
  56. package/dist/components/ui/sidebar/sidebar-menu-sub.js +39 -0
  57. package/dist/components/ui/sidebar/sidebar-menu.cjs +185 -0
  58. package/dist/components/ui/sidebar/sidebar-menu.d.ts +26 -0
  59. package/dist/components/ui/sidebar/sidebar-menu.js +133 -0
  60. package/dist/components/ui/sidebar/sidebar.cjs +220 -0
  61. package/dist/components/ui/sidebar/sidebar.d.ts +22 -0
  62. package/dist/components/ui/sidebar/sidebar.js +177 -0
  63. package/dist/components/ui/variable-value-control.cjs +3 -1
  64. package/dist/components/ui/variable-value-control.d.ts +5 -0
  65. package/dist/components/ui/variable-value-control.js +3 -1
  66. package/dist/index.cjs +94 -18
  67. package/dist/index.d.ts +3 -1
  68. package/dist/index.js +2 -1
  69. package/dist/styles.css +647 -0
  70. package/package.json +1 -1
  71. package/dist/templates/Forms/form-builder-example.d.ts +0 -1
@@ -338,226 +338,6 @@ const mockCities = {
338
338
  ]
339
339
  }
340
340
  };
341
- const mockProductCategories = {
342
- categories: [
343
- {
344
- id: 'electronics',
345
- name: 'Electronics'
346
- },
347
- {
348
- id: 'clothing',
349
- name: 'Clothing'
350
- },
351
- {
352
- id: 'furniture',
353
- name: 'Furniture'
354
- },
355
- {
356
- id: 'software',
357
- name: 'Software'
358
- }
359
- ]
360
- };
361
- const mockProducts = {
362
- electronics: [
363
- {
364
- id: 'laptop',
365
- name: 'Laptop'
366
- },
367
- {
368
- id: 'phone',
369
- name: 'Smartphone'
370
- },
371
- {
372
- id: 'tablet',
373
- name: 'Tablet'
374
- },
375
- {
376
- id: 'headphones',
377
- name: 'Headphones'
378
- }
379
- ],
380
- clothing: [
381
- {
382
- id: 'shirt',
383
- name: 'T-Shirt'
384
- },
385
- {
386
- id: 'pants',
387
- name: 'Pants'
388
- },
389
- {
390
- id: 'jacket',
391
- name: 'Jacket'
392
- }
393
- ],
394
- furniture: [
395
- {
396
- id: 'desk',
397
- name: 'Office Desk'
398
- },
399
- {
400
- id: 'chair',
401
- name: 'Office Chair'
402
- },
403
- {
404
- id: 'bookshelf',
405
- name: 'Bookshelf'
406
- }
407
- ],
408
- software: [
409
- {
410
- id: 'studio',
411
- name: 'UiPath Studio'
412
- },
413
- {
414
- id: 'orchestrator',
415
- name: 'UiPath Orchestrator'
416
- },
417
- {
418
- id: 'assistant',
419
- name: 'UiPath Assistant'
420
- }
421
- ]
422
- };
423
- const mockProductVariants = {
424
- laptop: [
425
- {
426
- id: 'laptop-basic',
427
- name: 'Basic - 8GB RAM',
428
- price: 799
429
- },
430
- {
431
- id: 'laptop-pro',
432
- name: 'Pro - 16GB RAM',
433
- price: 1299
434
- },
435
- {
436
- id: 'laptop-ultra',
437
- name: 'Ultra - 32GB RAM',
438
- price: 1999
439
- }
440
- ],
441
- phone: [
442
- {
443
- id: 'phone-128',
444
- name: '128GB Storage',
445
- price: 699
446
- },
447
- {
448
- id: 'phone-256',
449
- name: '256GB Storage',
450
- price: 799
451
- },
452
- {
453
- id: 'phone-512',
454
- name: '512GB Storage',
455
- price: 999
456
- }
457
- ],
458
- tablet: [
459
- {
460
- id: 'tablet-wifi',
461
- name: 'WiFi Only',
462
- price: 449
463
- },
464
- {
465
- id: 'tablet-cellular',
466
- name: 'WiFi + Cellular',
467
- price: 599
468
- }
469
- ],
470
- headphones: [
471
- {
472
- id: 'hp-wired',
473
- name: 'Wired',
474
- price: 99
475
- },
476
- {
477
- id: 'hp-wireless',
478
- name: 'Wireless',
479
- price: 199
480
- },
481
- {
482
- id: 'hp-pro',
483
- name: 'Pro Wireless ANC',
484
- price: 349
485
- }
486
- ],
487
- shirt: [
488
- {
489
- id: 'shirt-s',
490
- name: 'Small',
491
- price: 29
492
- },
493
- {
494
- id: 'shirt-m',
495
- name: 'Medium',
496
- price: 29
497
- },
498
- {
499
- id: 'shirt-l',
500
- name: 'Large',
501
- price: 29
502
- },
503
- {
504
- id: 'shirt-xl',
505
- name: 'X-Large',
506
- price: 32
507
- }
508
- ],
509
- desk: [
510
- {
511
- id: 'desk-std',
512
- name: 'Standard',
513
- price: 299
514
- },
515
- {
516
- id: 'desk-adj',
517
- name: 'Adjustable Height',
518
- price: 599
519
- },
520
- {
521
- id: 'desk-exec',
522
- name: 'Executive',
523
- price: 899
524
- }
525
- ],
526
- chair: [
527
- {
528
- id: 'chair-basic',
529
- name: 'Basic',
530
- price: 149
531
- },
532
- {
533
- id: 'chair-ergo',
534
- name: 'Ergonomic',
535
- price: 399
536
- },
537
- {
538
- id: 'chair-exec',
539
- name: 'Executive',
540
- price: 699
541
- }
542
- ],
543
- studio: [
544
- {
545
- id: 'studio-community',
546
- name: 'Community (Free)',
547
- price: 0
548
- },
549
- {
550
- id: 'studio-pro',
551
- name: 'Pro',
552
- price: 420
553
- },
554
- {
555
- id: 'studio-enterprise',
556
- name: 'Enterprise',
557
- price: 0
558
- }
559
- ]
560
- };
561
341
  const mockDepartments = [
562
342
  {
563
343
  id: 'engineering',
@@ -692,158 +472,6 @@ const mockPositions = {
692
472
  }
693
473
  ]
694
474
  };
695
- const mockOrchestratorFolders = {
696
- value: [
697
- {
698
- Id: 1,
699
- DisplayName: 'Production'
700
- },
701
- {
702
- Id: 2,
703
- DisplayName: 'Development'
704
- },
705
- {
706
- Id: 3,
707
- DisplayName: 'Testing'
708
- },
709
- {
710
- Id: 4,
711
- DisplayName: 'Shared'
712
- }
713
- ]
714
- };
715
- const mockOrchestratorProcesses = {
716
- 1: [
717
- {
718
- id: 'invoice-proc',
719
- name: 'Invoice Processing'
720
- },
721
- {
722
- id: 'email-auto',
723
- name: 'Email Automation'
724
- },
725
- {
726
- id: 'data-extract',
727
- name: 'Data Extraction'
728
- }
729
- ],
730
- 2: [
731
- {
732
- id: 'test-proc',
733
- name: 'Test Process'
734
- },
735
- {
736
- id: 'demo-workflow',
737
- name: 'Demo Workflow'
738
- }
739
- ],
740
- 3: [
741
- {
742
- id: 'qa-test',
743
- name: 'QA Testing'
744
- },
745
- {
746
- id: 'regression',
747
- name: 'Regression Suite'
748
- }
749
- ],
750
- 4: [
751
- {
752
- id: 'utility',
753
- name: 'Utility Functions'
754
- },
755
- {
756
- id: 'shared-lib',
757
- name: 'Shared Library'
758
- }
759
- ]
760
- };
761
- const mockPackageVersions = {
762
- 'invoice-proc': [
763
- {
764
- id: 'v1.0.0',
765
- name: '1.0.0'
766
- },
767
- {
768
- id: 'v1.1.0',
769
- name: '1.1.0'
770
- },
771
- {
772
- id: 'v2.0.0',
773
- name: '2.0.0 (latest)'
774
- }
775
- ],
776
- 'email-auto': [
777
- {
778
- id: 'v1.0.0',
779
- name: '1.0.0'
780
- },
781
- {
782
- id: 'v1.0.1',
783
- name: '1.0.1 (latest)'
784
- }
785
- ],
786
- 'data-extract': [
787
- {
788
- id: 'v1.0.0',
789
- name: '1.0.0 (latest)'
790
- }
791
- ],
792
- 'test-proc': [
793
- {
794
- id: 'v0.1.0',
795
- name: '0.1.0 (dev)'
796
- }
797
- ],
798
- 'demo-workflow': [
799
- {
800
- id: 'v1.0.0',
801
- name: '1.0.0'
802
- },
803
- {
804
- id: 'v1.1.0',
805
- name: '1.1.0 (latest)'
806
- }
807
- ]
808
- };
809
- const mockRobots = {
810
- 1: [
811
- {
812
- id: 'robot-1',
813
- name: 'PROD-ROBOT-01'
814
- },
815
- {
816
- id: 'robot-2',
817
- name: 'PROD-ROBOT-02'
818
- },
819
- {
820
- id: 'robot-3',
821
- name: 'PROD-ROBOT-03'
822
- }
823
- ],
824
- 2: [
825
- {
826
- id: 'dev-robot-1',
827
- name: 'DEV-ROBOT-01'
828
- },
829
- {
830
- id: 'dev-robot-2',
831
- name: 'DEV-ROBOT-02'
832
- }
833
- ],
834
- 3: [
835
- {
836
- id: 'test-robot-1',
837
- name: 'TEST-ROBOT-01'
838
- }
839
- ],
840
- 4: [
841
- {
842
- id: 'shared-robot',
843
- name: 'SHARED-ROBOT-01'
844
- }
845
- ]
846
- };
847
475
  const mockTimezones = [
848
476
  {
849
477
  label: 'Pacific Time (US)',
@@ -882,36 +510,6 @@ const mockTimezones = [
882
510
  value: 'Australia/Sydney'
883
511
  }
884
512
  ];
885
- const mockSurveyProducts = [
886
- {
887
- id: 'studio',
888
- name: 'UiPath Studio'
889
- },
890
- {
891
- id: 'orchestrator',
892
- name: 'UiPath Orchestrator'
893
- },
894
- {
895
- id: 'assistant',
896
- name: 'UiPath Assistant'
897
- },
898
- {
899
- id: 'automation-hub',
900
- name: 'Automation Hub'
901
- },
902
- {
903
- id: 'insights',
904
- name: 'UiPath Insights'
905
- },
906
- {
907
- id: 'document-understanding',
908
- name: 'Document Understanding'
909
- },
910
- {
911
- id: 'test-suite',
912
- name: 'Test Suite'
913
- }
914
- ];
915
513
  function createDemoMockAdapter() {
916
514
  const adapter = new MockAdapter();
917
515
  adapter.register('/api/countries', ()=>mockCountries);
@@ -932,27 +530,6 @@ function createDemoMockAdapter() {
932
530
  value: c.code
933
531
  }));
934
532
  });
935
- adapter.register('/api/product-categories', ()=>mockProductCategories);
936
- adapter.register('/api/products', (params)=>{
937
- const categoryId = params.categoryId;
938
- if (categoryId) {
939
- const products = mockProducts[categoryId] || [];
940
- return products.map((p)=>({
941
- label: p.name,
942
- value: p.id
943
- }));
944
- }
945
- return mockSurveyProducts;
946
- });
947
- adapter.register('/api/product-variants', (params)=>{
948
- const productId = params.productId;
949
- const variants = mockProductVariants[productId] || [];
950
- return variants.map((v)=>({
951
- label: `${v.name} - $${v.price}`,
952
- value: v.id,
953
- price: v.price
954
- }));
955
- });
956
533
  adapter.register('/api/departments', ()=>mockDepartments);
957
534
  adapter.register('/api/positions', (params)=>{
958
535
  const departmentId = params.departmentId;
@@ -962,31 +539,6 @@ function createDemoMockAdapter() {
962
539
  value: p.id
963
540
  }));
964
541
  });
965
- adapter.register('/api/orchestrator/folders', ()=>mockOrchestratorFolders);
966
- adapter.register('/api/orchestrator/processes', (params)=>{
967
- const folderId = String(params.folderId);
968
- const processes = mockOrchestratorProcesses[folderId] || [];
969
- return processes.map((p)=>({
970
- label: p.name,
971
- value: p.id
972
- }));
973
- });
974
- adapter.register('/api/orchestrator/package-versions', (params)=>{
975
- const processKey = params.processKey;
976
- const versions = mockPackageVersions[processKey] || [];
977
- return versions.map((v)=>({
978
- label: v.name,
979
- value: v.id
980
- }));
981
- });
982
- adapter.register('/api/orchestrator/robots', (params)=>{
983
- const folderId = String(params.folderId);
984
- const robots = mockRobots[folderId] || [];
985
- return robots.map((r)=>({
986
- label: r.name,
987
- value: r.id
988
- }));
989
- });
990
542
  adapter.register('/api/timezones', ()=>mockTimezones);
991
543
  return adapter;
992
544
  }
@@ -45,6 +45,7 @@ const select_cjs_namespaceObject = require("../ui/select.cjs");
45
45
  const slider_cjs_namespaceObject = require("../ui/slider.cjs");
46
46
  const switch_cjs_namespaceObject = require("../ui/switch.cjs");
47
47
  const textarea_cjs_namespaceObject = require("../ui/textarea.cjs");
48
+ const external_aria_ids_cjs_namespaceObject = require("./aria-ids.cjs");
48
49
  const external_literal_value_context_cjs_namespaceObject = require("./literal-value-context.cjs");
49
50
  const external_string_list_field_cjs_namespaceObject = require("./string-list-field.cjs");
50
51
  const FIELD_CONTROL_GEOMETRY = {
@@ -111,8 +112,9 @@ const FIELD_CONTROL_GEOMETRY = {
111
112
  };
112
113
  const NO_OPTIONS = [];
113
114
  const NO_SELECTION = [];
114
- function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false, invalid = false, strings }) {
115
+ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false, invalid = false, strings, describedBy }) {
115
116
  const errorId = invalid ? `${field.name}-error` : void 0;
117
+ const describedById = (0, external_aria_ids_cjs_namespaceObject.joinIds)(errorId, describedBy);
116
118
  const { onChange } = formField;
117
119
  const multipleFiles = 'file' === field.type && field.multiple;
118
120
  const onTextChange = (0, external_react_namespaceObject.useCallback)((event)=>onChange(event.target.value), [
@@ -148,7 +150,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
148
150
  placeholder: field.placeholder,
149
151
  disabled: disabled,
150
152
  "aria-invalid": invalid || void 0,
151
- "aria-describedby": errorId,
153
+ "aria-describedby": describedById,
152
154
  "aria-errormessage": errorId,
153
155
  "aria-label": field.ariaLabel
154
156
  });
@@ -166,7 +168,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
166
168
  placeholder: field.placeholder,
167
169
  disabled: disabled,
168
170
  "aria-invalid": invalid || void 0,
169
- "aria-describedby": errorId,
171
+ "aria-describedby": describedById,
170
172
  "aria-errormessage": errorId,
171
173
  onChange: onNumberChange
172
174
  });
@@ -182,7 +184,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
182
184
  disabled: disabled,
183
185
  maxLength: field.maxLength,
184
186
  "aria-invalid": invalid || void 0,
185
- "aria-describedby": errorId,
187
+ "aria-describedby": describedById,
186
188
  "aria-errormessage": errorId,
187
189
  ...null != field.minRows ? {
188
190
  minRows: field.minRows
@@ -200,7 +202,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
200
202
  id: field.name,
201
203
  "aria-label": field.label,
202
204
  "aria-invalid": invalid || void 0,
203
- "aria-describedby": errorId,
205
+ "aria-describedby": describedById,
204
206
  "aria-errormessage": errorId,
205
207
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(select_cjs_namespaceObject.SelectValue, {
206
208
  placeholder: field.placeholder || 'Select...'
@@ -227,7 +229,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
227
229
  searchPlaceholder: field.searchPlaceholder ?? 'Search...',
228
230
  maxSelected: field.maxSelected,
229
231
  "aria-invalid": invalid || void 0,
230
- "aria-describedby": errorId,
232
+ "aria-describedby": describedById,
231
233
  "aria-errormessage": errorId
232
234
  });
233
235
  case 'checkbox':
@@ -236,7 +238,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
236
238
  onCheckedChange: onCheckedChange,
237
239
  disabled: disabled,
238
240
  "aria-invalid": invalid || void 0,
239
- "aria-describedby": errorId,
241
+ "aria-describedby": describedById,
240
242
  "aria-errormessage": errorId,
241
243
  id: field.name
242
244
  });
@@ -248,7 +250,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
248
250
  onBlur: formField.onBlur,
249
251
  disabled: disabled,
250
252
  "aria-invalid": invalid || void 0,
251
- "aria-describedby": errorId,
253
+ "aria-describedby": describedById,
252
254
  "aria-errormessage": errorId,
253
255
  strings: strings
254
256
  });
@@ -259,7 +261,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
259
261
  onCheckedChange: onCheckedChange,
260
262
  disabled: disabled,
261
263
  "aria-invalid": invalid || void 0,
262
- "aria-describedby": errorId,
264
+ "aria-describedby": describedById,
263
265
  "aria-errormessage": errorId
264
266
  });
265
267
  case 'radio':
@@ -269,7 +271,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
269
271
  onValueChange: formField.onChange,
270
272
  disabled: disabled,
271
273
  "aria-invalid": invalid || void 0,
272
- "aria-describedby": errorId,
274
+ "aria-describedby": describedById,
273
275
  "aria-errormessage": errorId,
274
276
  children: options.map((option)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
275
277
  className: "flex items-center space-x-2",
@@ -293,7 +295,8 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
293
295
  formField: formField,
294
296
  disabled: disabled,
295
297
  invalid: invalid,
296
- errorId: errorId
298
+ errorId: errorId,
299
+ describedById: describedById
297
300
  });
298
301
  case 'date':
299
302
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(date_picker_cjs_namespaceObject.DatePicker, {
@@ -303,14 +306,14 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
303
306
  disabled: disabled,
304
307
  placeholder: field.placeholder,
305
308
  "aria-invalid": invalid || void 0,
306
- "aria-describedby": errorId,
309
+ "aria-describedby": describedById,
307
310
  "aria-errormessage": errorId
308
311
  });
309
312
  case 'datetime':
310
313
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(datetime_picker_cjs_namespaceObject.DateTimePicker, {
311
314
  "aria-labelledby": `${field.name}-label`,
312
315
  "aria-invalid": invalid || void 0,
313
- "aria-describedby": errorId,
316
+ "aria-describedby": describedById,
314
317
  "aria-errormessage": errorId,
315
318
  value: formField.value,
316
319
  onValueChange: formField.onChange,
@@ -323,7 +326,7 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
323
326
  id: field.name,
324
327
  ariaLabel: field.ariaLabel ?? field.label,
325
328
  "aria-invalid": invalid || void 0,
326
- "aria-describedby": errorId,
329
+ "aria-describedby": describedById,
327
330
  "aria-errormessage": errorId,
328
331
  accept: field.accept,
329
332
  multiple: field.multiple,
@@ -340,13 +343,14 @@ function FieldControl({ field, formField, options = NO_OPTIONS, disabled = false
340
343
  onChange: formField.onChange,
341
344
  onBlur: formField.onBlur,
342
345
  invalid: invalid,
343
- disabled: disabled
346
+ disabled: disabled,
347
+ ariaDescribedBy: describedById
344
348
  });
345
349
  default:
346
350
  return null;
347
351
  }
348
352
  }
349
- function SliderControl({ field, formField, disabled, invalid, errorId }) {
353
+ function SliderControl({ field, formField, disabled, invalid, errorId, describedById }) {
350
354
  const resolvedMax = useSliderMax(field);
351
355
  const prevMaxRef = (0, external_react_namespaceObject.useRef)(resolvedMax);
352
356
  (0, external_react_namespaceObject.useEffect)(()=>{
@@ -373,7 +377,7 @@ function SliderControl({ field, formField, disabled, invalid, errorId }) {
373
377
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(slider_cjs_namespaceObject.Slider, {
374
378
  "aria-labelledby": `${field.name}-label`,
375
379
  "aria-invalid": invalid || void 0,
376
- "aria-describedby": errorId,
380
+ "aria-describedby": describedById,
377
381
  "aria-errormessage": errorId,
378
382
  value: sliderValue,
379
383
  onValueChange: onValueChange,
@@ -20,6 +20,8 @@ export interface FieldControlProps {
20
20
  invalid?: boolean;
21
21
  /** Labels of a `boolean` field's radios. */
22
22
  strings?: Partial<BooleanRadioGroupStrings>;
23
+ /** Further ids for the control's aria-describedby, after the error message's. */
24
+ describedBy?: string;
23
25
  }
24
26
  /**
25
27
  * How a field's label reaches its control: `control` labels it with `htmlFor` the control's id
@@ -45,7 +47,7 @@ export declare const FIELD_CONTROL_GEOMETRY: Readonly<Partial<Record<FieldType,
45
47
  * `field.name`, and it names the label and error by `${field.name}-label` and
46
48
  * `${field.name}-error`, so those are the ids to give them. Custom fields render nothing.
47
49
  */
48
- export declare function FieldControl({ field, formField, options, disabled, invalid, strings, }: FieldControlProps): import("react/jsx-runtime").JSX.Element | null;
50
+ export declare function FieldControl({ field, formField, options, disabled, invalid, strings, describedBy, }: FieldControlProps): import("react/jsx-runtime").JSX.Element | null;
49
51
  /** The slider's effective max, following `field.maxRef` when it has one. */
50
52
  export declare function useSliderMax(field: SliderFieldMetadata): number;
51
53
  /** A numeric slider value capped at `max`; anything else as it is. */