@bpmn-io/form-js-viewer 0.14.1 → 0.15.0-alpha.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/dist/index.cjs CHANGED
@@ -476,6 +476,30 @@ var FN_REF = '__fn';
476
476
  var DEFAULT_PRIORITY = 1000;
477
477
  var slice = Array.prototype.slice;
478
478
 
479
+ /**
480
+ * @typedef { {
481
+ * stopPropagation(): void;
482
+ * preventDefault(): void;
483
+ * cancelBubble: boolean;
484
+ * defaultPrevented: boolean;
485
+ * returnValue: any;
486
+ * } } Event
487
+ */
488
+
489
+ /**
490
+ * @template E
491
+ *
492
+ * @typedef { (event: E & Event, ...any) => any } EventBusEventCallback
493
+ */
494
+
495
+ /**
496
+ * @typedef { {
497
+ * priority: number;
498
+ * next: EventBusListener | null;
499
+ * callback: EventBusEventCallback<any>;
500
+ * } } EventBusListener
501
+ */
502
+
479
503
  /**
480
504
  * A general purpose event bus.
481
505
  *
@@ -560,6 +584,9 @@ var slice = Array.prototype.slice;
560
584
  * ```
561
585
  */
562
586
  function EventBus() {
587
+ /**
588
+ * @type { Record<string, EventBusListener> }
589
+ */
563
590
  this._listeners = {};
564
591
 
565
592
  // cleanup on destroy on lowest priority to allow
@@ -579,10 +606,12 @@ function EventBus() {
579
606
  *
580
607
  * Returning anything but `undefined` from a listener will stop the listener propagation.
581
608
  *
582
- * @param {string|Array<string>} events
583
- * @param {number} [priority=1000] the priority in which this listener is called, larger is higher
584
- * @param {Function} callback
585
- * @param {Object} [that] Pass context (`this`) to the callback
609
+ * @template T
610
+ *
611
+ * @param {string|string[]} events to subscribe to
612
+ * @param {number} [priority=1000] listen priority
613
+ * @param {EventBusEventCallback<T>} callback
614
+ * @param {any} [that] callback context
586
615
  */
587
616
  EventBus.prototype.on = function (events, priority, callback, that) {
588
617
  events = minDash.isArray(events) ? events : [events];
@@ -614,14 +643,16 @@ EventBus.prototype.on = function (events, priority, callback, that) {
614
643
  };
615
644
 
616
645
  /**
617
- * Register an event listener that is executed only once.
646
+ * Register an event listener that is called only once.
647
+ *
648
+ * @template T
618
649
  *
619
- * @param {string} event the event name to register for
620
- * @param {number} [priority=1000] the priority in which this listener is called, larger is higher
621
- * @param {Function} callback the callback to execute
622
- * @param {Object} [that] Pass context (`this`) to the callback
650
+ * @param {string|string[]} events to subscribe to
651
+ * @param {number} [priority=1000] the listen priority
652
+ * @param {EventBusEventCallback<T>} callback
653
+ * @param {any} [that] callback context
623
654
  */
624
- EventBus.prototype.once = function (event, priority, callback, that) {
655
+ EventBus.prototype.once = function (events, priority, callback, that) {
625
656
  var self = this;
626
657
  if (minDash.isFunction(priority)) {
627
658
  that = callback;
@@ -634,7 +665,7 @@ EventBus.prototype.once = function (event, priority, callback, that) {
634
665
  function wrappedCallback() {
635
666
  wrappedCallback.__isTomb = true;
636
667
  var result = callback.apply(that, arguments);
637
- self.off(event, wrappedCallback);
668
+ self.off(events, wrappedCallback);
638
669
  return result;
639
670
  }
640
671
 
@@ -642,7 +673,7 @@ EventBus.prototype.once = function (event, priority, callback, that) {
642
673
  // bound callbacks via {@link #off} using the original
643
674
  // callback
644
675
  wrappedCallback[FN_REF] = callback;
645
- this.on(event, priority, wrappedCallback);
676
+ this.on(events, priority, wrappedCallback);
646
677
  };
647
678
 
648
679
  /**
@@ -650,8 +681,8 @@ EventBus.prototype.once = function (event, priority, callback, that) {
650
681
  *
651
682
  * If no callback is given, all listeners for a given event name are being removed.
652
683
  *
653
- * @param {string|Array<string>} events
654
- * @param {Function} [callback]
684
+ * @param {string|string[]} events
685
+ * @param {EventBusEventCallback} [callback]
655
686
  */
656
687
  EventBus.prototype.off = function (events, callback) {
657
688
  events = minDash.isArray(events) ? events : [events];
@@ -662,11 +693,11 @@ EventBus.prototype.off = function (events, callback) {
662
693
  };
663
694
 
664
695
  /**
665
- * Create an EventBus event.
696
+ * Create an event recognized be the event bus.
666
697
  *
667
- * @param {Object} data
698
+ * @param {Object} data Event data.
668
699
  *
669
- * @return {Object} event, recognized by the eventBus
700
+ * @return {Event} An event that will be recognized by the event bus.
670
701
  */
671
702
  EventBus.prototype.createEvent = function (data) {
672
703
  var event = new InternalEvent();
@@ -675,10 +706,11 @@ EventBus.prototype.createEvent = function (data) {
675
706
  };
676
707
 
677
708
  /**
678
- * Fires a named event.
709
+ * Fires an event.
679
710
  *
680
711
  * @example
681
712
  *
713
+ * ```javascript
682
714
  * // fire event by name
683
715
  * events.fire('foo');
684
716
  *
@@ -696,13 +728,13 @@ EventBus.prototype.createEvent = function (data) {
696
728
  * });
697
729
  *
698
730
  * events.fire({ type: 'foo' }, 'I am bar!');
731
+ * ```
699
732
  *
700
- * @param {string} [name] the optional event name
701
- * @param {Object} [event] the event object
702
- * @param {...Object} additional arguments to be passed to the callback functions
733
+ * @param {string} [type] event type
734
+ * @param {Object} [data] event or event data
735
+ * @param {...any} [args] additional arguments the callback will be called with.
703
736
  *
704
- * @return {boolean} the events return value, if specified or false if the
705
- * default action was prevented by listeners
737
+ * @return {any} The return value. Will be set to `false` if the default was prevented.
706
738
  */
707
739
  EventBus.prototype.fire = function (type, data) {
708
740
  var event, firstListener, returnValue, args;
@@ -754,6 +786,14 @@ EventBus.prototype.fire = function (type, data) {
754
786
  }
755
787
  return returnValue;
756
788
  };
789
+
790
+ /**
791
+ * Handle an error by firing an event.
792
+ *
793
+ * @param {Error} error The error to be handled.
794
+ *
795
+ * @return {boolean} Whether the error was handled.
796
+ */
757
797
  EventBus.prototype.handleError = function (error) {
758
798
  return this.fire('error', {
759
799
  error: error
@@ -762,6 +802,14 @@ EventBus.prototype.handleError = function (error) {
762
802
  EventBus.prototype._destroy = function () {
763
803
  this._listeners = {};
764
804
  };
805
+
806
+ /**
807
+ * @param {Event} event
808
+ * @param {any[]} args
809
+ * @param {EventBusListener} listener
810
+ *
811
+ * @return {any}
812
+ */
765
813
  EventBus.prototype._invokeListeners = function (event, args, listener) {
766
814
  var returnValue;
767
815
  while (listener) {
@@ -774,6 +822,14 @@ EventBus.prototype._invokeListeners = function (event, args, listener) {
774
822
  }
775
823
  return returnValue;
776
824
  };
825
+
826
+ /**
827
+ * @param {Event} event
828
+ * @param {any[]} args
829
+ * @param {EventBusListener} listener
830
+ *
831
+ * @return {any}
832
+ */
777
833
  EventBus.prototype._invokeListener = function (event, args, listener) {
778
834
  var returnValue;
779
835
  if (listener.callback.__isTomb) {
@@ -802,7 +858,7 @@ EventBus.prototype._invokeListener = function (event, args, listener) {
802
858
  return returnValue;
803
859
  };
804
860
 
805
- /*
861
+ /**
806
862
  * Add new listener with a certain priority to the list
807
863
  * of listeners (for the given event).
808
864
  *
@@ -816,7 +872,7 @@ EventBus.prototype._invokeListener = function (event, args, listener) {
816
872
  * * after: [ 1500, 1500, (new=1300), 1000, 1000, (new=1000) ]
817
873
  *
818
874
  * @param {string} event
819
- * @param {Object} listener { priority, callback }
875
+ * @param {EventBusListener} listener
820
876
  */
821
877
  EventBus.prototype._addListener = function (event, newListener) {
822
878
  var listener = this._getListeners(event),
@@ -847,9 +903,20 @@ EventBus.prototype._addListener = function (event, newListener) {
847
903
  // add new listener to back
848
904
  previousListener.next = newListener;
849
905
  };
906
+
907
+ /**
908
+ * @param {string} name
909
+ *
910
+ * @return {EventBusListener}
911
+ */
850
912
  EventBus.prototype._getListeners = function (name) {
851
913
  return this._listeners[name];
852
914
  };
915
+
916
+ /**
917
+ * @param {string} name
918
+ * @param {EventBusListener} listener
919
+ */
853
920
  EventBus.prototype._setListeners = function (name, listener) {
854
921
  this._listeners[name] = listener;
855
922
  };
@@ -897,9 +964,9 @@ InternalEvent.prototype.init = function (data) {
897
964
  * Invoke function. Be fast...
898
965
  *
899
966
  * @param {Function} fn
900
- * @param {Array<Object>} args
967
+ * @param {any[]} args
901
968
  *
902
- * @return {Any}
969
+ * @return {any}
903
970
  */
904
971
  function invokeFunction(fn, args) {
905
972
  return fn.apply(null, args);
@@ -1494,16 +1561,18 @@ class Importer {
1494
1561
  // if unavailable - get empty value from form field
1495
1562
 
1496
1563
  if (_path) {
1497
- const fieldImplementation = this._formFields.get(type);
1564
+ const {
1565
+ config: fieldConfig
1566
+ } = this._formFields.get(type);
1498
1567
  let valueData = minDash.get(data, _path);
1499
- if (!minDash.isUndefined(valueData) && fieldImplementation.sanitizeValue) {
1500
- valueData = fieldImplementation.sanitizeValue({
1568
+ if (!minDash.isUndefined(valueData) && fieldConfig.sanitizeValue) {
1569
+ valueData = fieldConfig.sanitizeValue({
1501
1570
  formField,
1502
1571
  data,
1503
1572
  value: valueData
1504
1573
  });
1505
1574
  }
1506
- const initializedFieldValue = !minDash.isUndefined(valueData) ? valueData : !minDash.isUndefined(defaultValue) ? defaultValue : fieldImplementation.emptyValue;
1575
+ const initializedFieldValue = !minDash.isUndefined(valueData) ? valueData : !minDash.isUndefined(defaultValue) ? defaultValue : fieldConfig.emptyValue;
1507
1576
  initializedData = {
1508
1577
  ...initializedData,
1509
1578
  [_path[0]]: initializedFieldValue
@@ -1568,14 +1637,16 @@ function Button(props) {
1568
1637
  })
1569
1638
  });
1570
1639
  }
1571
- Button.create = (options = {}) => ({
1572
- action: 'submit',
1573
- ...options
1574
- });
1575
- Button.type = type$b;
1576
- Button.label = 'Button';
1577
- Button.keyed = true;
1578
- Button.group = 'action';
1640
+ Button.config = {
1641
+ type: type$b,
1642
+ keyed: true,
1643
+ label: 'Button',
1644
+ group: 'action',
1645
+ create: (options = {}) => ({
1646
+ action: 'submit',
1647
+ ...options
1648
+ })
1649
+ };
1579
1650
 
1580
1651
  const FormRenderContext = preact.createContext({
1581
1652
  Empty: props => {
@@ -1639,13 +1710,16 @@ function Description(props) {
1639
1710
 
1640
1711
  function Errors(props) {
1641
1712
  const {
1642
- errors
1713
+ errors,
1714
+ id
1643
1715
  } = props;
1644
1716
  if (!errors.length) {
1645
1717
  return null;
1646
1718
  }
1647
1719
  return jsxRuntime.jsx("div", {
1648
1720
  class: "fjs-form-field-error",
1721
+ "aria-live": "polite",
1722
+ id: id,
1649
1723
  children: jsxRuntime.jsx("ul", {
1650
1724
  children: errors.map(error => {
1651
1725
  return jsxRuntime.jsx("li", {
@@ -1703,6 +1777,7 @@ function Checkbox(props) {
1703
1777
  const {
1704
1778
  formId
1705
1779
  } = hooks.useContext(FormContext$1);
1780
+ const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
1706
1781
  return jsxRuntime.jsxs("div", {
1707
1782
  class: classNames(formFieldClasses(type$a, {
1708
1783
  errors,
@@ -1720,26 +1795,30 @@ function Checkbox(props) {
1720
1795
  disabled: disabled,
1721
1796
  id: prefixId(id, formId),
1722
1797
  type: "checkbox",
1723
- onChange: onChange
1798
+ onChange: onChange,
1799
+ "aria-describedby": errorMessageId
1724
1800
  })
1725
1801
  }), jsxRuntime.jsx(Description, {
1726
1802
  description: description
1727
1803
  }), jsxRuntime.jsx(Errors, {
1728
- errors: errors
1804
+ errors: errors,
1805
+ id: errorMessageId
1729
1806
  })]
1730
1807
  });
1731
1808
  }
1732
- Checkbox.create = (options = {}) => ({
1733
- ...options
1734
- });
1735
- Checkbox.type = type$a;
1736
- Checkbox.label = 'Checkbox';
1737
- Checkbox.keyed = true;
1738
- Checkbox.emptyValue = false;
1739
- Checkbox.sanitizeValue = ({
1740
- value
1741
- }) => value === true;
1742
- Checkbox.group = 'selection';
1809
+ Checkbox.config = {
1810
+ type: type$a,
1811
+ keyed: true,
1812
+ label: 'Checkbox',
1813
+ group: 'selection',
1814
+ emptyValue: false,
1815
+ sanitizeValue: ({
1816
+ value
1817
+ }) => value === true,
1818
+ create: (options = {}) => ({
1819
+ ...options
1820
+ })
1821
+ };
1743
1822
 
1744
1823
  // parses the options data from the provided form field and form data
1745
1824
  function getValuesData(formField, formData) {
@@ -2105,6 +2184,7 @@ function Checklist(props) {
2105
2184
  const {
2106
2185
  formId
2107
2186
  } = hooks.useContext(FormContext$1);
2187
+ const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
2108
2188
  return jsxRuntime.jsxs("div", {
2109
2189
  class: classNames(formFieldClasses(type$9, {
2110
2190
  errors,
@@ -2127,37 +2207,41 @@ function Checklist(props) {
2127
2207
  disabled: disabled,
2128
2208
  id: prefixId(`${id}-${index}`, formId),
2129
2209
  type: "checkbox",
2130
- onClick: () => toggleCheckbox(v.value)
2210
+ onClick: () => toggleCheckbox(v.value),
2211
+ "aria-describedby": errorMessageId
2131
2212
  })
2132
2213
  }, `${id}-${index}`);
2133
2214
  }), jsxRuntime.jsx(Description, {
2134
2215
  description: description
2135
2216
  }), jsxRuntime.jsx(Errors, {
2136
- errors: errors
2217
+ errors: errors,
2218
+ id: errorMessageId
2137
2219
  })]
2138
2220
  });
2139
2221
  }
2140
- Checklist.create = (options = {}) => {
2141
- const defaults = {};
2142
-
2143
- // provide default values if valuesKey isn't set
2144
- if (!options.valuesKey) {
2145
- defaults.values = [{
2146
- label: 'Value',
2147
- value: 'value'
2148
- }];
2222
+ Checklist.config = {
2223
+ type: type$9,
2224
+ keyed: true,
2225
+ label: 'Checklist',
2226
+ group: 'selection',
2227
+ emptyValue: [],
2228
+ sanitizeValue: sanitizeMultiSelectValue,
2229
+ create: (options = {}) => {
2230
+ const defaults = {};
2231
+
2232
+ // provide default values if valuesKey isn't set
2233
+ if (!options.valuesKey) {
2234
+ defaults.values = [{
2235
+ label: 'Value',
2236
+ value: 'value'
2237
+ }];
2238
+ }
2239
+ return {
2240
+ ...defaults,
2241
+ ...options
2242
+ };
2149
2243
  }
2150
- return {
2151
- ...defaults,
2152
- ...options
2153
- };
2154
2244
  };
2155
- Checklist.type = type$9;
2156
- Checklist.label = 'Checklist';
2157
- Checklist.keyed = true;
2158
- Checklist.emptyValue = [];
2159
- Checklist.sanitizeValue = sanitizeMultiSelectValue;
2160
- Checklist.group = 'selection';
2161
2245
 
2162
2246
  /**
2163
2247
  * Returns the conditionally filtered data of a form reactively.
@@ -2257,9 +2341,6 @@ function FormField(props) {
2257
2341
  field,
2258
2342
  onChange
2259
2343
  } = props;
2260
- const {
2261
- _path
2262
- } = field;
2263
2344
  const formFields = useService('formFields'),
2264
2345
  form = useService('form');
2265
2346
  const {
@@ -2276,8 +2357,8 @@ function FormField(props) {
2276
2357
  if (!FormFieldComponent) {
2277
2358
  throw new Error(`cannot render field <${field.type}>`);
2278
2359
  }
2279
- const value = minDash.get(data, _path);
2280
- const fieldErrors = findErrors(errors, _path);
2360
+ const value = minDash.get(data, field._path);
2361
+ const fieldErrors = findErrors(errors, field._path);
2281
2362
  const disabled = properties.readOnly || field.disabled || false;
2282
2363
  const hidden = useCondition(field.conditional && field.conditional.hide || null);
2283
2364
  if (hidden) {
@@ -2344,14 +2425,16 @@ function Default(props) {
2344
2425
  }), components.length ? null : jsxRuntime.jsx(Empty, {})]
2345
2426
  });
2346
2427
  }
2347
- Default.create = (options = {}) => ({
2348
- components: [],
2349
- ...options
2350
- });
2351
- Default.type = 'default';
2352
- Default.keyed = false;
2353
- Default.label = null;
2354
- Default.group = null;
2428
+ Default.config = {
2429
+ type: 'default',
2430
+ keyed: false,
2431
+ label: null,
2432
+ group: null,
2433
+ create: (options = {}) => ({
2434
+ components: [],
2435
+ ...options
2436
+ })
2437
+ };
2355
2438
 
2356
2439
  function _extends$j() { _extends$j = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$j.apply(this, arguments); }
2357
2440
  var CalendarIcon = (({
@@ -2527,16 +2610,17 @@ function Datepicker(props) {
2527
2610
  ref: dateInputRef,
2528
2611
  type: "text",
2529
2612
  id: fullId,
2530
- class: 'fjs-input',
2613
+ class: "fjs-input",
2531
2614
  disabled: disabled,
2532
2615
  placeholder: "mm/dd/yyyy",
2533
2616
  autoComplete: "off",
2534
2617
  onFocus: onInputFocus,
2535
2618
  onKeyDown: onInputKeyDown,
2536
- onMouseDown: e => !flatpickrInstance.isOpen && flatpickrInstance.open(),
2619
+ onMouseDown: () => !flatpickrInstance.isOpen && flatpickrInstance.open(),
2537
2620
  onBlur: onInputBlur,
2538
- onInput: e => setIsInputDirty(true),
2539
- "data-input": true
2621
+ onInput: () => setIsInputDirty(true),
2622
+ "data-input": true,
2623
+ "aria-describedby": props['aria-describedby']
2540
2624
  })
2541
2625
  })
2542
2626
  })]
@@ -2793,7 +2877,8 @@ function Timepicker(props) {
2793
2877
  },
2794
2878
  onBlur: onInputBlur,
2795
2879
  onKeyDown: onInputKeyDown,
2796
- "data-input": true
2880
+ "data-input": true,
2881
+ "aria-describedby": props['aria-describedby']
2797
2882
  }), dropdownIsOpen && jsxRuntime.jsx(DropdownList, {
2798
2883
  values: timeOptions,
2799
2884
  height: 150,
@@ -2929,6 +3014,7 @@ function Datetime(props) {
2929
3014
  time
2930
3015
  });
2931
3016
  }, []);
3017
+ const errorMessageId = allErrors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
2932
3018
  const datePickerProps = {
2933
3019
  id,
2934
3020
  label: dateLabel,
@@ -2938,7 +3024,8 @@ function Datetime(props) {
2938
3024
  disabled,
2939
3025
  disallowPassedDates,
2940
3026
  date: dateTime.date,
2941
- setDate
3027
+ setDate,
3028
+ 'aria-describedby': errorMessageId
2942
3029
  };
2943
3030
  const timePickerProps = {
2944
3031
  id,
@@ -2950,7 +3037,8 @@ function Datetime(props) {
2950
3037
  use24h,
2951
3038
  timeInterval,
2952
3039
  time: dateTime.time,
2953
- setTime
3040
+ setTime,
3041
+ 'aria-describedby': errorMessageId
2954
3042
  };
2955
3043
  return jsxRuntime.jsxs("div", {
2956
3044
  class: formFieldClasses(type$8, {
@@ -2969,25 +3057,28 @@ function Datetime(props) {
2969
3057
  }), jsxRuntime.jsx(Description, {
2970
3058
  description: description
2971
3059
  }), jsxRuntime.jsx(Errors, {
2972
- errors: allErrors
3060
+ errors: allErrors,
3061
+ id: errorMessageId
2973
3062
  })]
2974
3063
  });
2975
3064
  }
2976
- Datetime.create = (options = {}) => {
2977
- const defaults = {};
2978
- minDash.set(defaults, DATETIME_SUBTYPE_PATH, DATETIME_SUBTYPES.DATE);
2979
- minDash.set(defaults, DATE_LABEL_PATH, 'Date');
2980
- return {
2981
- ...defaults,
2982
- ...options
2983
- };
3065
+ Datetime.config = {
3066
+ type: type$8,
3067
+ keyed: true,
3068
+ label: 'Date time',
3069
+ group: 'basic-input',
3070
+ emptyValue: null,
3071
+ sanitizeValue: sanitizeDateTimePickerValue,
3072
+ create: (options = {}) => {
3073
+ const defaults = {};
3074
+ minDash.set(defaults, DATETIME_SUBTYPE_PATH, DATETIME_SUBTYPES.DATE);
3075
+ minDash.set(defaults, DATE_LABEL_PATH, 'Date');
3076
+ return {
3077
+ ...defaults,
3078
+ ...options
3079
+ };
3080
+ }
2984
3081
  };
2985
- Datetime.type = type$8;
2986
- Datetime.keyed = true;
2987
- Datetime.emptyValue = null;
2988
- Datetime.sanitizeValue = sanitizeDateTimePickerValue;
2989
- Datetime.label = 'Date time';
2990
- Datetime.group = 'basic-input';
2991
3082
 
2992
3083
  /**
2993
3084
  * This file must not be changed or exchanged.
@@ -3031,7 +3122,7 @@ function Lightbox(props) {
3031
3122
  href: "https://bpmn.io",
3032
3123
  target: "_blank",
3033
3124
  rel: "noopener",
3034
- style: "margin: 15px 20px 15px 10px; align-self: center; color: #404040",
3125
+ style: "margin: 15px 20px 15px 10px; align-self: center; color: var(--cds-icon-primary, #404040)",
3035
3126
  children: jsxRuntime.jsx(Logo, {})
3036
3127
  }), jsxRuntime.jsxs("span", {
3037
3128
  children: ["Web-based tooling for BPMN, DMN, and forms powered by ", jsxRuntime.jsx("a", {
@@ -3054,7 +3145,7 @@ function Link(props) {
3054
3145
  rel: "noopener",
3055
3146
  class: "fjs-powered-by-link",
3056
3147
  title: "Powered by bpmn.io",
3057
- style: "color: #404040",
3148
+ style: "color: var(--cds-text-primary, #404040)",
3058
3149
  onClick: props.onClick,
3059
3150
  children: jsxRuntime.jsx(Logo, {})
3060
3151
  })
@@ -3082,8 +3173,12 @@ const noop = () => {};
3082
3173
  function FormComponent(props) {
3083
3174
  const form = useService('form');
3084
3175
  const {
3085
- schema
3176
+ schema,
3177
+ properties
3086
3178
  } = form._getState();
3179
+ const {
3180
+ ariaLabel
3181
+ } = properties;
3087
3182
  const {
3088
3183
  onSubmit = noop,
3089
3184
  onReset = noop,
@@ -3101,6 +3196,7 @@ function FormComponent(props) {
3101
3196
  class: "fjs-form",
3102
3197
  onSubmit: handleSubmit,
3103
3198
  onReset: handleReset,
3199
+ "aria-label": ariaLabel,
3104
3200
  noValidate: true,
3105
3201
  children: [jsxRuntime.jsx(FormField, {
3106
3202
  field: schema,
@@ -3111,7 +3207,7 @@ function FormComponent(props) {
3111
3207
 
3112
3208
  const NODE_TYPE_TEXT = 3,
3113
3209
  NODE_TYPE_ELEMENT = 1;
3114
- const ALLOWED_NODES = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'em', 'a', 'p', 'div', 'ul', 'ol', 'li', 'hr', 'blockquote', 'img', 'pre', 'code', 'br', 'strong'];
3210
+ const ALLOWED_NODES = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'em', 'a', 'p', 'div', 'ul', 'ol', 'li', 'hr', 'blockquote', 'img', 'pre', 'code', 'br', 'strong', 'table', 'thead', 'tbody', 'tr', 'th', 'td'];
3115
3211
  const ALLOWED_ATTRIBUTES = ['align', 'alt', 'class', 'href', 'id', 'name', 'rel', 'target', 'src'];
3116
3212
  const ALLOWED_URI_PATTERN = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i; // eslint-disable-line no-useless-escape
3117
3213
  const ALLOWED_IMAGE_SRC_PATTERN = /^(https?|data):.*/i; // eslint-disable-line no-useless-escape
@@ -3300,13 +3396,15 @@ function Image(props) {
3300
3396
  })
3301
3397
  });
3302
3398
  }
3303
- Image.create = (options = {}) => ({
3304
- ...options
3305
- });
3306
- Image.type = type$7;
3307
- Image.keyed = false;
3308
- Image.label = 'Image view';
3309
- Image.group = 'presentation';
3399
+ Image.config = {
3400
+ type: type$7,
3401
+ keyed: false,
3402
+ label: 'Image view',
3403
+ group: 'presentation',
3404
+ create: (options = {}) => ({
3405
+ ...options
3406
+ })
3407
+ };
3310
3408
 
3311
3409
  function _extends$g() { _extends$g = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$g.apply(this, arguments); }
3312
3410
  var AngelDownIcon = (({
@@ -3373,10 +3471,10 @@ function Numberfield(props) {
3373
3471
 
3374
3472
  // checks whether the value currently in the form data is practically different from the one in the input field cache
3375
3473
  // this allows us to guarantee the field always displays valid form data, but without auto-simplifying values like 1.000 to 1
3376
- const cacheValueMatchesState = hooks.useMemo(() => Numberfield.sanitizeValue({
3474
+ const cacheValueMatchesState = hooks.useMemo(() => Numberfield.config.sanitizeValue({
3377
3475
  value,
3378
3476
  formField: field
3379
- }) === Numberfield.sanitizeValue({
3477
+ }) === Numberfield.config.sanitizeValue({
3380
3478
  value: stringValueCache,
3381
3479
  formField: field
3382
3480
  }), [stringValueCache, value, field]);
@@ -3470,6 +3568,7 @@ function Numberfield(props) {
3470
3568
  const {
3471
3569
  formId
3472
3570
  } = hooks.useContext(FormContext$1);
3571
+ const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
3473
3572
  return jsxRuntime.jsxs("div", {
3474
3573
  class: formFieldClasses(type$6, {
3475
3574
  errors,
@@ -3503,7 +3602,8 @@ function Numberfield(props) {
3503
3602
  type: "text",
3504
3603
  autoComplete: "off",
3505
3604
  step: arrowIncrementValue,
3506
- value: displayValue
3605
+ value: displayValue,
3606
+ "aria-describedby": errorMessageId
3507
3607
  }), jsxRuntime.jsxs("div", {
3508
3608
  class: classNames('fjs-number-arrow-container', {
3509
3609
  'fjs-disabled': disabled
@@ -3530,31 +3630,34 @@ function Numberfield(props) {
3530
3630
  }), jsxRuntime.jsx(Description, {
3531
3631
  description: description
3532
3632
  }), jsxRuntime.jsx(Errors, {
3533
- errors: errors
3633
+ errors: errors,
3634
+ id: errorMessageId
3534
3635
  })]
3535
3636
  });
3536
3637
  }
3537
- Numberfield.create = (options = {}) => ({
3538
- ...options
3539
- });
3540
- Numberfield.sanitizeValue = ({
3541
- value,
3542
- formField
3543
- }) => {
3544
- // null state is allowed
3545
- if (isNullEquivalentValue(value)) return null;
3546
-
3547
- // if data cannot be parsed as a valid number, go into invalid NaN state
3548
- if (!isValidNumber(value)) return 'NaN';
3549
-
3550
- // otherwise parse to formatting type
3551
- return formField.serializeToString ? value.toString() : Number(value);
3638
+ Numberfield.config = {
3639
+ type: type$6,
3640
+ keyed: true,
3641
+ label: 'Number',
3642
+ group: 'basic-input',
3643
+ emptyValue: null,
3644
+ sanitizeValue: ({
3645
+ value,
3646
+ formField
3647
+ }) => {
3648
+ // null state is allowed
3649
+ if (isNullEquivalentValue(value)) return null;
3650
+
3651
+ // if data cannot be parsed as a valid number, go into invalid NaN state
3652
+ if (!isValidNumber(value)) return 'NaN';
3653
+
3654
+ // otherwise parse to formatting type
3655
+ return formField.serializeToString ? value.toString() : Number(value);
3656
+ },
3657
+ create: (options = {}) => ({
3658
+ ...options
3659
+ })
3552
3660
  };
3553
- Numberfield.type = type$6;
3554
- Numberfield.keyed = true;
3555
- Numberfield.label = 'Number';
3556
- Numberfield.emptyValue = null;
3557
- Numberfield.group = 'basic-input';
3558
3661
 
3559
3662
  const type$5 = 'radio';
3560
3663
  function Radio(props) {
@@ -3586,6 +3689,7 @@ function Radio(props) {
3586
3689
  const {
3587
3690
  formId
3588
3691
  } = hooks.useContext(FormContext$1);
3692
+ const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
3589
3693
  return jsxRuntime.jsxs("div", {
3590
3694
  class: formFieldClasses(type$5, {
3591
3695
  errors,
@@ -3608,37 +3712,41 @@ function Radio(props) {
3608
3712
  disabled: disabled,
3609
3713
  id: prefixId(`${id}-${index}`, formId),
3610
3714
  type: "radio",
3611
- onClick: () => onChange(option.value)
3715
+ onClick: () => onChange(option.value),
3716
+ "aria-describedby": errorMessageId
3612
3717
  })
3613
3718
  }, `${id}-${index}`);
3614
3719
  }), jsxRuntime.jsx(Description, {
3615
3720
  description: description
3616
3721
  }), jsxRuntime.jsx(Errors, {
3617
- errors: errors
3722
+ errors: errors,
3723
+ id: errorMessageId
3618
3724
  })]
3619
3725
  });
3620
3726
  }
3621
- Radio.create = function (options = {}) {
3622
- const defaults = {};
3623
-
3624
- // provide default values if valuesKey isn't set
3625
- if (!options.valuesKey) {
3626
- defaults.values = [{
3627
- label: 'Value',
3628
- value: 'value'
3629
- }];
3727
+ Radio.config = {
3728
+ type: type$5,
3729
+ keyed: true,
3730
+ label: 'Radio',
3731
+ group: 'selection',
3732
+ emptyValue: null,
3733
+ sanitizeValue: sanitizeSingleSelectValue,
3734
+ create: (options = {}) => {
3735
+ const defaults = {};
3736
+
3737
+ // provide default values if valuesKey isn't set
3738
+ if (!options.valuesKey) {
3739
+ defaults.values = [{
3740
+ label: 'Value',
3741
+ value: 'value'
3742
+ }];
3743
+ }
3744
+ return {
3745
+ ...defaults,
3746
+ ...options
3747
+ };
3630
3748
  }
3631
- return {
3632
- ...defaults,
3633
- ...options
3634
- };
3635
3749
  };
3636
- Radio.type = type$5;
3637
- Radio.label = 'Radio';
3638
- Radio.keyed = true;
3639
- Radio.emptyValue = null;
3640
- Radio.sanitizeValue = sanitizeSingleSelectValue;
3641
- Radio.group = 'selection';
3642
3750
 
3643
3751
  function _extends$e() { _extends$e = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$e.apply(this, arguments); }
3644
3752
  var XMarkIcon = (({
@@ -3778,7 +3886,8 @@ function SearchableSelect(props) {
3778
3886
  onBlur: () => {
3779
3887
  setIsDropdownExpanded(false);
3780
3888
  setFilter(valueLabel);
3781
- }
3889
+ },
3890
+ "aria-describedby": props['aria-describedby']
3782
3891
  }), displayState.displayCross && jsxRuntime.jsxs("span", {
3783
3892
  class: "fjs-select-cross",
3784
3893
  onMouseDown: e => {
@@ -3864,14 +3973,20 @@ function SimpleSelect(props) {
3864
3973
  }),
3865
3974
  onFocus: () => setIsDropdownExpanded(true),
3866
3975
  onBlur: () => setIsDropdownExpanded(false),
3867
- onMouseDown: e => onMouseDown(e),
3868
- tabIndex: disabled ? undefined : 0,
3976
+ onMouseDown: onMouseDown,
3869
3977
  children: [jsxRuntime.jsx("div", {
3870
3978
  class: classNames('fjs-select-display', {
3871
3979
  'fjs-select-placeholder': !value
3872
3980
  }),
3873
3981
  id: prefixId(`${id}-display`, formId),
3874
3982
  children: valueLabel || 'Select'
3983
+ }), !disabled && jsxRuntime.jsx("input", {
3984
+ id: prefixId(`${id}-search`, formId),
3985
+ class: "fjs-select-hidden-input",
3986
+ value: valueLabel,
3987
+ onFocus: () => setIsDropdownExpanded(true),
3988
+ onBlur: () => setIsDropdownExpanded(false),
3989
+ "aria-describedby": props['aria-describedby']
3875
3990
  }), displayState.displayCross && jsxRuntime.jsx("span", {
3876
3991
  class: "fjs-select-cross",
3877
3992
  onMouseDown: e => {
@@ -3921,14 +4036,16 @@ function Select(props) {
3921
4036
  const {
3922
4037
  formId
3923
4038
  } = hooks.useContext(FormContext$1);
4039
+ const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
3924
4040
  const selectProps = hooks.useMemo(() => ({
3925
4041
  id,
3926
4042
  disabled,
3927
4043
  errors,
3928
4044
  field,
3929
4045
  value,
3930
- onChange
3931
- }), [disabled, errors, field, id, value, onChange]);
4046
+ onChange,
4047
+ 'aria-describedby': errorMessageId
4048
+ }), [disabled, errors, field, id, value, onChange, errorMessageId]);
3932
4049
  return jsxRuntime.jsxs("div", {
3933
4050
  class: formFieldClasses(type$4, {
3934
4051
  errors,
@@ -3941,7 +4058,7 @@ function Select(props) {
3941
4058
  }
3942
4059
  },
3943
4060
  children: [jsxRuntime.jsx(Label, {
3944
- id: prefixId(id, formId),
4061
+ id: prefixId(`${id}-search`, formId),
3945
4062
  label: label,
3946
4063
  required: required
3947
4064
  }), searchable ? jsxRuntime.jsx(SearchableSelect, {
@@ -3951,31 +4068,34 @@ function Select(props) {
3951
4068
  }), jsxRuntime.jsx(Description, {
3952
4069
  description: description
3953
4070
  }), jsxRuntime.jsx(Errors, {
3954
- errors: errors
4071
+ errors: errors,
4072
+ id: errorMessageId
3955
4073
  })]
3956
4074
  });
3957
4075
  }
3958
- Select.create = (options = {}) => {
3959
- const defaults = {};
3960
-
3961
- // provide default values if valuesKey isn't set
3962
- if (!options.valuesKey) {
3963
- defaults.values = [{
3964
- label: 'Value',
3965
- value: 'value'
3966
- }];
4076
+ Select.config = {
4077
+ type: type$4,
4078
+ keyed: true,
4079
+ label: 'Select',
4080
+ group: 'selection',
4081
+ emptyValue: null,
4082
+ sanitizeValue: sanitizeSingleSelectValue,
4083
+ create: (options = {}) => {
4084
+ const defaults = {};
4085
+
4086
+ // provide default values if valuesKey isn't set
4087
+ if (!options.valuesKey) {
4088
+ defaults.values = [{
4089
+ label: 'Value',
4090
+ value: 'value'
4091
+ }];
4092
+ }
4093
+ return {
4094
+ ...defaults,
4095
+ ...options
4096
+ };
3967
4097
  }
3968
- return {
3969
- ...defaults,
3970
- ...options
3971
- };
3972
4098
  };
3973
- Select.type = type$4;
3974
- Select.label = 'Select';
3975
- Select.keyed = true;
3976
- Select.emptyValue = null;
3977
- Select.sanitizeValue = sanitizeSingleSelectValue;
3978
- Select.group = 'selection';
3979
4099
 
3980
4100
  const type$3 = 'taglist';
3981
4101
  function Taglist(props) {
@@ -3997,6 +4117,7 @@ function Taglist(props) {
3997
4117
  const {
3998
4118
  formId
3999
4119
  } = hooks.useContext(FormContext$1);
4120
+ const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
4000
4121
  const [filter, setFilter] = hooks.useState('');
4001
4122
  const [filteredOptions, setFilteredOptions] = hooks.useState([]);
4002
4123
  const [isDropdownExpanded, setIsDropdownExpanded] = hooks.useState(false);
@@ -4132,15 +4253,16 @@ function Taglist(props) {
4132
4253
  onChange: onFilterChange,
4133
4254
  type: "text",
4134
4255
  value: filter,
4135
- placeholder: disabled ? '' : 'Search',
4256
+ placeholder: disabled ? undefined : 'Search',
4136
4257
  autoComplete: "off",
4137
- onKeyDown: e => onInputKeyDown(e),
4258
+ onKeyDown: onInputKeyDown,
4138
4259
  onMouseDown: () => setIsEscapeClose(false),
4139
4260
  onFocus: () => setIsDropdownExpanded(true),
4140
4261
  onBlur: () => {
4141
4262
  setIsDropdownExpanded(false);
4142
4263
  setFilter('');
4143
- }
4264
+ },
4265
+ "aria-describedby": errorMessageId
4144
4266
  })]
4145
4267
  }), jsxRuntime.jsx("div", {
4146
4268
  class: "fjs-taglist-anchor",
@@ -4154,34 +4276,41 @@ function Taglist(props) {
4154
4276
  }), jsxRuntime.jsx(Description, {
4155
4277
  description: description
4156
4278
  }), jsxRuntime.jsx(Errors, {
4157
- errors: errors
4279
+ errors: errors,
4280
+ id: errorMessageId
4158
4281
  })]
4159
4282
  });
4160
4283
  }
4161
- Taglist.create = (options = {}) => {
4162
- const defaults = {};
4163
-
4164
- // provide default values if valuesKey isn't set
4165
- if (!options.valuesKey) {
4166
- defaults.values = [{
4167
- label: 'Value',
4168
- value: 'value'
4169
- }];
4284
+ Taglist.config = {
4285
+ type: type$3,
4286
+ keyed: true,
4287
+ label: 'Tag list',
4288
+ group: 'selection',
4289
+ emptyValue: [],
4290
+ sanitizeValue: sanitizeMultiSelectValue,
4291
+ create: (options = {}) => {
4292
+ const defaults = {};
4293
+
4294
+ // provide default values if valuesKey isn't set
4295
+ if (!options.valuesKey) {
4296
+ defaults.values = [{
4297
+ label: 'Value',
4298
+ value: 'value'
4299
+ }];
4300
+ }
4301
+ return {
4302
+ ...defaults,
4303
+ ...options
4304
+ };
4170
4305
  }
4171
- return {
4172
- ...defaults,
4173
- ...options
4174
- };
4175
4306
  };
4176
- Taglist.type = type$3;
4177
- Taglist.label = 'Tag list';
4178
- Taglist.keyed = true;
4179
- Taglist.emptyValue = [];
4180
- Taglist.sanitizeValue = sanitizeMultiSelectValue;
4181
- Taglist.group = 'selection';
4182
4307
 
4183
4308
  const type$2 = 'text';
4184
4309
  function Text(props) {
4310
+ const form = useService('form');
4311
+ const {
4312
+ textLinkTarget
4313
+ } = form._getState().properties;
4185
4314
  const {
4186
4315
  field,
4187
4316
  disableLinks
@@ -4203,9 +4332,20 @@ function Text(props) {
4203
4332
  const html = markdownRenderer.render(markdown);
4204
4333
  return sanitizeHTML(html);
4205
4334
  }, [markdownRenderer, markdown]);
4206
- const componentOverrides = hooks.useMemo(() => disableLinks ? {
4207
- 'a': DisabledLink
4208
- } : {}, [disableLinks]);
4335
+ const OverridenTargetLink = hooks.useMemo(() => BuildOverridenTargetLink(textLinkTarget), [textLinkTarget]);
4336
+ const componentOverrides = hooks.useMemo(() => {
4337
+ if (disableLinks) {
4338
+ return {
4339
+ 'a': DisabledLink
4340
+ };
4341
+ }
4342
+ if (textLinkTarget) {
4343
+ return {
4344
+ 'a': OverridenTargetLink
4345
+ };
4346
+ }
4347
+ return {};
4348
+ }, [disableLinks, OverridenTargetLink, textLinkTarget]);
4209
4349
  return jsxRuntime.jsx("div", {
4210
4350
  class: formFieldClasses(type$2),
4211
4351
  children: jsxRuntime.jsx(Markup, {
@@ -4215,21 +4355,35 @@ function Text(props) {
4215
4355
  })
4216
4356
  });
4217
4357
  }
4218
- Text.create = (options = {}) => ({
4219
- text: '# Text',
4220
- ...options
4221
- });
4222
- Text.type = type$2;
4223
- Text.keyed = false;
4224
- Text.group = 'presentation';
4225
- Text.label = 'Text view';
4358
+ Text.config = {
4359
+ type: type$2,
4360
+ keyed: false,
4361
+ label: 'Text view',
4362
+ group: 'presentation',
4363
+ create: (options = {}) => ({
4364
+ text: '# Text',
4365
+ ...options
4366
+ })
4367
+ };
4368
+ function BuildOverridenTargetLink(target) {
4369
+ return function ({
4370
+ children,
4371
+ ...rest
4372
+ }) {
4373
+ return jsxRuntime.jsx("a", {
4374
+ ...rest,
4375
+ target: target,
4376
+ children: children
4377
+ });
4378
+ };
4379
+ }
4226
4380
  function DisabledLink({
4227
- href,
4228
- children
4381
+ children,
4382
+ ...rest
4229
4383
  }) {
4230
4384
  return jsxRuntime.jsx("a", {
4385
+ ...rest,
4231
4386
  class: "fjs-disabled-link",
4232
- href: href,
4233
4387
  tabIndex: -1,
4234
4388
  children: children
4235
4389
  });
@@ -4268,6 +4422,7 @@ function Textfield(props) {
4268
4422
  const {
4269
4423
  formId
4270
4424
  } = hooks.useContext(FormContext$1);
4425
+ const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
4271
4426
  return jsxRuntime.jsxs("div", {
4272
4427
  class: formFieldClasses(type$1, {
4273
4428
  errors,
@@ -4287,26 +4442,40 @@ function Textfield(props) {
4287
4442
  id: prefixId(id, formId),
4288
4443
  onInput: onChange,
4289
4444
  type: "text",
4290
- value: value
4445
+ value: value,
4446
+ "aria-describedby": errorMessageId
4291
4447
  })
4292
4448
  }), jsxRuntime.jsx(Description, {
4293
4449
  description: description
4294
4450
  }), jsxRuntime.jsx(Errors, {
4295
- errors: errors
4451
+ errors: errors,
4452
+ id: errorMessageId
4296
4453
  })]
4297
4454
  });
4298
4455
  }
4299
- Textfield.create = (options = {}) => ({
4300
- ...options
4301
- });
4302
- Textfield.type = type$1;
4303
- Textfield.label = 'Text field';
4304
- Textfield.keyed = true;
4305
- Textfield.emptyValue = '';
4306
- Textfield.sanitizeValue = ({
4307
- value
4308
- }) => minDash.isArray(value) || minDash.isObject(value) ? '' : String(value);
4309
- Textfield.group = 'basic-input';
4456
+ Textfield.config = {
4457
+ type: type$1,
4458
+ keyed: true,
4459
+ label: 'Text field',
4460
+ group: 'basic-input',
4461
+ emptyValue: '',
4462
+ sanitizeValue: ({
4463
+ value
4464
+ }) => {
4465
+ if (minDash.isArray(value) || minDash.isObject(value)) {
4466
+ return '';
4467
+ }
4468
+
4469
+ // sanitize newlines to spaces
4470
+ if (typeof value === 'string') {
4471
+ return value.replace(/[\r\n\t]/g, ' ');
4472
+ }
4473
+ return String(value);
4474
+ },
4475
+ create: (options = {}) => ({
4476
+ ...options
4477
+ })
4478
+ };
4310
4479
 
4311
4480
  const type = 'textarea';
4312
4481
  function Textarea(props) {
@@ -4353,6 +4522,7 @@ function Textarea(props) {
4353
4522
  const {
4354
4523
  formId
4355
4524
  } = hooks.useContext(FormContext$1);
4525
+ const errorMessageId = errors.length === 0 ? undefined : `${prefixId(id, formId)}-error-message`;
4356
4526
  return jsxRuntime.jsxs("div", {
4357
4527
  class: formFieldClasses(type, {
4358
4528
  errors,
@@ -4368,25 +4538,29 @@ function Textarea(props) {
4368
4538
  id: prefixId(id, formId),
4369
4539
  onInput: onInput,
4370
4540
  value: value,
4371
- ref: textareaRef
4541
+ ref: textareaRef,
4542
+ "aria-describedby": errorMessageId
4372
4543
  }), jsxRuntime.jsx(Description, {
4373
4544
  description: description
4374
4545
  }), jsxRuntime.jsx(Errors, {
4375
- errors: errors
4546
+ errors: errors,
4547
+ id: errorMessageId
4376
4548
  })]
4377
4549
  });
4378
4550
  }
4379
- Textarea.create = (options = {}) => ({
4380
- ...options
4381
- });
4382
- Textarea.type = type;
4383
- Textarea.label = 'Text area';
4384
- Textarea.keyed = true;
4385
- Textarea.emptyValue = '';
4386
- Textarea.sanitizeValue = ({
4387
- value
4388
- }) => minDash.isArray(value) || minDash.isObject(value) ? '' : String(value);
4389
- Textarea.group = 'basic-input';
4551
+ Textarea.config = {
4552
+ type,
4553
+ keyed: true,
4554
+ label: 'Text area',
4555
+ group: 'basic-input',
4556
+ emptyValue: '',
4557
+ sanitizeValue: ({
4558
+ value
4559
+ }) => minDash.isArray(value) || minDash.isObject(value) ? '' : String(value),
4560
+ create: (options = {}) => ({
4561
+ ...options
4562
+ })
4563
+ };
4390
4564
 
4391
4565
  function _extends$d() { _extends$d = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$d.apply(this, arguments); }
4392
4566
  var ButtonIcon = (({
@@ -4395,10 +4569,11 @@ var ButtonIcon = (({
4395
4569
  }) => /*#__PURE__*/React.createElement("svg", _extends$d({
4396
4570
  xmlns: "http://www.w3.org/2000/svg",
4397
4571
  width: "54",
4398
- height: "54"
4572
+ height: "54",
4573
+ fill: "currentcolor"
4399
4574
  }, props), /*#__PURE__*/React.createElement("path", {
4400
4575
  fillRule: "evenodd",
4401
- d: "M45 17a3 3 0 013 3v14a3 3 0 01-3 3H9a3 3 0 01-3-3V20a3 3 0 013-3h36zm-9 8.889H18v2.222h18V25.89z"
4576
+ d: "M45 17a3 3 0 013 3v14a3 3 0 01-3 3H9a3 3 0 01-3-3V20a3 3 0 013-3h36zm-9 8.889H18v2.222h18v-2.222z"
4402
4577
  })));
4403
4578
 
4404
4579
  function _extends$c() { _extends$c = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$c.apply(this, arguments); }
@@ -4408,7 +4583,8 @@ var CheckboxIcon = (({
4408
4583
  }) => /*#__PURE__*/React.createElement("svg", _extends$c({
4409
4584
  xmlns: "http://www.w3.org/2000/svg",
4410
4585
  width: "54",
4411
- height: "54"
4586
+ height: "54",
4587
+ fill: "currentcolor"
4412
4588
  }, props), /*#__PURE__*/React.createElement("path", {
4413
4589
  d: "M34 18H20a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V20a2 2 0 00-2-2zm-9 14l-5-5 1.41-1.41L25 29.17l7.59-7.59L34 23l-9 9z"
4414
4590
  })));
@@ -4419,18 +4595,35 @@ var ChecklistIcon = (({
4419
4595
  ...props
4420
4596
  }) => /*#__PURE__*/React.createElement("svg", _extends$b({
4421
4597
  xmlns: "http://www.w3.org/2000/svg",
4598
+ xmlnsXlink: "http://www.w3.org/1999/xlink",
4422
4599
  width: "54",
4423
4600
  height: "54",
4424
- fill: "none"
4425
- }, props), /*#__PURE__*/React.createElement("path", {
4426
- fillRule: "evenodd",
4427
- clipRule: "evenodd",
4428
- d: "M18 12h-6v6h6v-6zm-6-2a2 2 0 00-2 2v6a2 2 0 002 2h6a2 2 0 002-2v-6a2 2 0 00-2-2h-6zM18 36h-6v6h6v-6zm-6-2a2 2 0 00-2 2v6a2 2 0 002 2h6a2 2 0 002-2v-6a2 2 0 00-2-2h-6zM18 24h-6v6h6v-6zm-6-2a2 2 0 00-2 2v6a2 2 0 002 2h6a2 2 0 002-2v-6a2 2 0 00-2-2h-6z",
4429
- fill: "#161616"
4601
+ fill: "currentcolor"
4602
+ }, props), /*#__PURE__*/React.createElement("g", {
4603
+ fillRule: "evenodd"
4604
+ }, /*#__PURE__*/React.createElement("use", {
4605
+ xlinkHref: "#a"
4606
+ }), /*#__PURE__*/React.createElement("use", {
4607
+ xlinkHref: "#a",
4608
+ y: "24"
4609
+ }), /*#__PURE__*/React.createElement("use", {
4610
+ xlinkHref: "#a",
4611
+ y: "12"
4612
+ })), /*#__PURE__*/React.createElement("use", {
4613
+ xlinkHref: "#b"
4614
+ }), /*#__PURE__*/React.createElement("use", {
4615
+ xlinkHref: "#b",
4616
+ y: "12"
4617
+ }), /*#__PURE__*/React.createElement("use", {
4618
+ xlinkHref: "#b",
4619
+ y: "24"
4620
+ }), /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("path", {
4621
+ id: "a",
4622
+ d: "M18 12h-6v6h6v-6zm-6-2a2 2 0 00-2 2v6a2 2 0 002 2h6a2 2 0 002-2v-6a2 2 0 00-2-2h-6z"
4430
4623
  }), /*#__PURE__*/React.createElement("path", {
4431
- d: "M23 14.5a1 1 0 011-1h19a1 1 0 011 1v1a1 1 0 01-1 1H24a1 1 0 01-1-1v-1zM23 26.5a1 1 0 011-1h19a1 1 0 011 1v1a1 1 0 01-1 1H24a1 1 0 01-1-1v-1zM23 38.5a1 1 0 011-1h19a1 1 0 011 1v1a1 1 0 01-1 1H24a1 1 0 01-1-1v-1z",
4432
- fill: "#161616"
4433
- })));
4624
+ id: "b",
4625
+ d: "M23 14.5a1 1 0 011-1h19a1 1 0 011 1v1a1 1 0 01-1 1H24a1 1 0 01-1-1v-1z"
4626
+ }))));
4434
4627
 
4435
4628
  function _extends$a() { _extends$a = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$a.apply(this, arguments); }
4436
4629
  var DatetimeIcon = (({
@@ -4440,20 +4633,15 @@ var DatetimeIcon = (({
4440
4633
  xmlns: "http://www.w3.org/2000/svg",
4441
4634
  width: "54",
4442
4635
  height: "54",
4443
- fill: "none"
4636
+ fill: "currentcolor"
4444
4637
  }, props), /*#__PURE__*/React.createElement("path", {
4445
- fill: "#000",
4446
4638
  fillRule: "evenodd",
4447
- d: "M37.908 13.418h-5.004v-2.354h-1.766v2.354H21.13v-2.354h-1.766v2.354H14.36c-1.132 0-2.06.928-2.06 2.06v23.549c0 1.132.928 2.06 2.06 2.06h6.77v-1.766h-6.358a.707.707 0 01-.706-.706V15.89c0-.39.316-.707.706-.707h4.592v2.355h1.766v-2.355h10.008v2.355h1.766v-2.355h4.592c.39 0 .707.317.707.707v6.358h1.765v-6.77c0-1.133-.927-2.06-2.06-2.06z",
4448
- clipRule: "evenodd"
4639
+ d: "M37.908 13.418h-5.004v-2.354h-1.766v2.354H21.13v-2.354h-1.766v2.354H14.36a2.07 2.07 0 00-2.06 2.06v23.549a2.07 2.07 0 002.06 2.06h6.77v-1.766h-6.358a.707.707 0 01-.706-.706V15.89c0-.39.316-.707.706-.707h4.592v2.355h1.766v-2.355h10.008v2.355h1.766v-2.355h4.592a.71.71 0 01.707.707v6.358h1.765v-6.77c0-1.133-.927-2.06-2.06-2.06z"
4449
4640
  }), /*#__PURE__*/React.createElement("path", {
4450
- fill: "#000",
4451
4641
  d: "M35.13 37.603l1.237-1.237-3.468-3.475v-5.926h-1.754v6.654l3.984 3.984z"
4452
4642
  }), /*#__PURE__*/React.createElement("path", {
4453
- fill: "#000",
4454
4643
  fillRule: "evenodd",
4455
- d: "M23.08 36.962a9.678 9.678 0 1017.883-7.408 9.678 9.678 0 00-17.882 7.408zm4.54-10.292a7.924 7.924 0 118.805 13.177A7.924 7.924 0 0127.62 26.67z",
4456
- clipRule: "evenodd"
4644
+ d: "M23.08 36.962a9.678 9.678 0 1017.883-7.408 9.678 9.678 0 00-17.882 7.408zm4.54-10.292a7.924 7.924 0 118.805 13.177A7.924 7.924 0 0127.62 26.67z"
4457
4645
  })));
4458
4646
 
4459
4647
  function _extends$9() { _extends$9 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$9.apply(this, arguments); }
@@ -4461,18 +4649,15 @@ var TaglistIcon = (({
4461
4649
  styles = {},
4462
4650
  ...props
4463
4651
  }) => /*#__PURE__*/React.createElement("svg", _extends$9({
4652
+ xmlns: "http://www.w3.org/2000/svg",
4464
4653
  width: "54",
4465
4654
  height: "54",
4466
- fill: "none",
4467
- xmlns: "http://www.w3.org/2000/svg"
4655
+ fill: "currentcolor"
4468
4656
  }, props), /*#__PURE__*/React.createElement("path", {
4469
4657
  fillRule: "evenodd",
4470
- clipRule: "evenodd",
4471
- d: "M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1z",
4472
- fill: "#000"
4658
+ d: "M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1z"
4473
4659
  }), /*#__PURE__*/React.createElement("path", {
4474
- d: "M11 22a1 1 0 011-1h19a1 1 0 011 1v10a1 1 0 01-1 1H12a1 1 0 01-1-1V22z",
4475
- fill: "#505562"
4660
+ d: "M11 22a1 1 0 011-1h19a1 1 0 011 1v10a1 1 0 01-1 1H12a1 1 0 01-1-1V22z"
4476
4661
  })));
4477
4662
 
4478
4663
  function _extends$8() { _extends$8 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }
@@ -4484,22 +4669,22 @@ var FormIcon = (({
4484
4669
  width: "54",
4485
4670
  height: "54"
4486
4671
  }, props), /*#__PURE__*/React.createElement("rect", {
4487
- x: "15",
4488
- y: "17",
4489
4672
  width: "24",
4490
4673
  height: "4",
4674
+ x: "15",
4675
+ y: "17",
4491
4676
  rx: "1"
4492
4677
  }), /*#__PURE__*/React.createElement("rect", {
4493
- x: "15",
4494
- y: "25",
4495
4678
  width: "24",
4496
4679
  height: "4",
4680
+ x: "15",
4681
+ y: "25",
4497
4682
  rx: "1"
4498
4683
  }), /*#__PURE__*/React.createElement("rect", {
4499
- x: "15",
4500
- y: "33",
4501
4684
  width: "13",
4502
4685
  height: "4",
4686
+ x: "15",
4687
+ y: "33",
4503
4688
  rx: "1"
4504
4689
  })));
4505
4690
 
@@ -4523,7 +4708,8 @@ var NumberIcon = (({
4523
4708
  }) => /*#__PURE__*/React.createElement("svg", _extends$6({
4524
4709
  xmlns: "http://www.w3.org/2000/svg",
4525
4710
  width: "54",
4526
- height: "54"
4711
+ height: "54",
4712
+ fill: "currentcolor"
4527
4713
  }, props), /*#__PURE__*/React.createElement("path", {
4528
4714
  fillRule: "evenodd",
4529
4715
  d: "M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zM35 28.444h7l-3.5 4-3.5-4zM35 26h7l-3.5-4-3.5 4z"
@@ -4536,9 +4722,10 @@ var RadioIcon = (({
4536
4722
  }) => /*#__PURE__*/React.createElement("svg", _extends$5({
4537
4723
  xmlns: "http://www.w3.org/2000/svg",
4538
4724
  width: "54",
4539
- height: "54"
4725
+ height: "54",
4726
+ fill: "currentcolor"
4540
4727
  }, props), /*#__PURE__*/React.createElement("path", {
4541
- d: "M27 22c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"
4728
+ d: "M27 22c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18a8 8 0 110-16 8 8 0 110 16z"
4542
4729
  })));
4543
4730
 
4544
4731
  function _extends$4() { _extends$4 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4.apply(this, arguments); }
@@ -4548,7 +4735,8 @@ var SelectIcon = (({
4548
4735
  }) => /*#__PURE__*/React.createElement("svg", _extends$4({
4549
4736
  xmlns: "http://www.w3.org/2000/svg",
4550
4737
  width: "54",
4551
- height: "54"
4738
+ height: "54",
4739
+ fill: "currentcolor"
4552
4740
  }, props), /*#__PURE__*/React.createElement("path", {
4553
4741
  fillRule: "evenodd",
4554
4742
  d: "M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zm-12 7h9l-4.5 6-4.5-6z"
@@ -4561,9 +4749,10 @@ var TextIcon = (({
4561
4749
  }) => /*#__PURE__*/React.createElement("svg", _extends$3({
4562
4750
  xmlns: "http://www.w3.org/2000/svg",
4563
4751
  width: "54",
4564
- height: "54"
4752
+ height: "54",
4753
+ fill: "currentcolor"
4565
4754
  }, props), /*#__PURE__*/React.createElement("path", {
4566
- d: "M20.58 33.77h-3l-1.18-3.08H11l-1.1 3.08H7l5.27-13.54h2.89zm-5-5.36l-1.86-5-1.83 5zM22 20.23h5.41a15.47 15.47 0 012.4.14 3.42 3.42 0 011.41.55 3.47 3.47 0 011 1.14 3 3 0 01.42 1.58 3.26 3.26 0 01-1.91 2.94 3.63 3.63 0 011.91 1.22 3.28 3.28 0 01.66 2 4 4 0 01-.43 1.8 3.63 3.63 0 01-1.09 1.4 3.89 3.89 0 01-1.83.65q-.69.07-3.3.09H22zm2.73 2.25v3.13h3.8a1.79 1.79 0 001.1-.49 1.41 1.41 0 00.41-1 1.49 1.49 0 00-.35-1 1.54 1.54 0 00-1-.48c-.27 0-1.05-.05-2.34-.05zm0 5.39v3.62h2.57a11.52 11.52 0 001.88-.09 1.65 1.65 0 001-.54 1.6 1.6 0 00.38-1.14 1.75 1.75 0 00-.29-1 1.69 1.69 0 00-.86-.62 9.28 9.28 0 00-2.41-.23zM44.35 28.79l2.65.84a5.94 5.94 0 01-2 3.29A5.74 5.74 0 0141.38 34a5.87 5.87 0 01-4.44-1.84 7.09 7.09 0 01-1.73-5A7.43 7.43 0 0137 21.87 6 6 0 0141.54 20a5.64 5.64 0 014 1.47A5.33 5.33 0 0147 24l-2.7.65a2.8 2.8 0 00-2.86-2.27A3.09 3.09 0 0039 23.42a5.31 5.31 0 00-.93 3.5 5.62 5.62 0 00.93 3.65 3 3 0 002.4 1.09 2.72 2.72 0 001.82-.66 4 4 0 001.13-2.21z"
4755
+ d: "M20.58 33.77h-3l-1.18-3.08H11l-1.1 3.08H7l5.27-13.54h2.89zm-5-5.36l-1.86-5-1.83 5zM22 20.23h5.41a15.47 15.47 0 012.4.14 3.42 3.42 0 011.41.55 3.47 3.47 0 011 1.14 3 3 0 01.42 1.58 3.26 3.26 0 01-1.91 2.94 3.63 3.63 0 011.91 1.22 3.28 3.28 0 01.66 2 4 4 0 01-.43 1.8 3.63 3.63 0 01-1.09 1.4 3.89 3.89 0 01-1.83.65q-.69.07-3.3.09H22zm2.73 2.25v3.13h3.8a1.79 1.79 0 001.1-.49 1.41 1.41 0 00.41-1 1.49 1.49 0 00-.35-1 1.54 1.54 0 00-1-.48c-.27 0-1.05-.05-2.34-.05zm0 5.39v3.62h2.57a11.52 11.52 0 001.88-.09 1.65 1.65 0 001-.54 1.6 1.6 0 00.38-1.14 1.75 1.75 0 00-.29-1 1.69 1.69 0 00-.86-.62 9.28 9.28 0 00-2.41-.23zm19.62.92l2.65.84a5.94 5.94 0 01-2 3.29A5.74 5.74 0 0141.38 34a5.87 5.87 0 01-4.44-1.84 7.09 7.09 0 01-1.73-5A7.43 7.43 0 0137 21.87 6 6 0 0141.54 20a5.64 5.64 0 014 1.47A5.33 5.33 0 0147 24l-2.7.65a2.8 2.8 0 00-2.86-2.27A3.09 3.09 0 0039 23.42a5.31 5.31 0 00-.93 3.5 5.62 5.62 0 00.93 3.65 3 3 0 002.4 1.09 2.72 2.72 0 001.82-.66 4 4 0 001.13-2.21z"
4567
4756
  })));
4568
4757
 
4569
4758
  function _extends$2() { _extends$2 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }
@@ -4573,7 +4762,8 @@ var TextfieldIcon = (({
4573
4762
  }) => /*#__PURE__*/React.createElement("svg", _extends$2({
4574
4763
  xmlns: "http://www.w3.org/2000/svg",
4575
4764
  width: "54",
4576
- height: "54"
4765
+ height: "54",
4766
+ fill: "currentcolor"
4577
4767
  }, props), /*#__PURE__*/React.createElement("path", {
4578
4768
  fillRule: "evenodd",
4579
4769
  d: "M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zm-32 4v10h-2V22h2z"
@@ -4586,10 +4776,11 @@ var TextareaIcon = (({
4586
4776
  }) => /*#__PURE__*/React.createElement("svg", _extends$1({
4587
4777
  xmlns: "http://www.w3.org/2000/svg",
4588
4778
  width: "54",
4589
- height: "54"
4779
+ height: "54",
4780
+ fill: "currentcolor"
4590
4781
  }, props), /*#__PURE__*/React.createElement("path", {
4591
4782
  fillRule: "evenodd",
4592
- d: "M45 13a3 3 0 013 3v22a3 3 0 01-3 3H9a3 3 0 01-3-3V16a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v22a1 1 0 001 1h36a1 1 0 001-1V16a1 1 0 00-1-1zm-1.136 15.5l.848.849-6.363 6.363-.849-.848 6.364-6.364zm.264 3.5l.849.849-2.828 2.828-.849-.849L44.128 34zM13 19v10h-2V19h2z"
4783
+ d: "M45 13a3 3 0 013 3v22a3 3 0 01-3 3H9a3 3 0 01-3-3V16a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v22a1 1 0 001 1h36a1 1 0 001-1V16a1 1 0 00-1-1zm-1.136 15.5l.849.849-6.364 6.364-.849-.849 6.364-6.364zm.264 3.5l.849.849-2.828 2.828-.849-.849L44.128 34zM13 19v10h-2V19h2z"
4593
4784
  })));
4594
4785
 
4595
4786
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -4597,20 +4788,18 @@ var ImageIcon = (({
4597
4788
  styles = {},
4598
4789
  ...props
4599
4790
  }) => /*#__PURE__*/React.createElement("svg", _extends({
4791
+ xmlns: "http://www.w3.org/2000/svg",
4600
4792
  width: "54",
4601
4793
  height: "54",
4602
- fill: "none",
4603
- xmlns: "http://www.w3.org/2000/svg"
4794
+ fill: "currentcolor"
4604
4795
  }, props), /*#__PURE__*/React.createElement("path", {
4605
4796
  fillRule: "evenodd",
4606
- clipRule: "evenodd",
4607
4797
  d: "M34.636 21.91A3.818 3.818 0 1127 21.908a3.818 3.818 0 017.636 0zm-2 0A1.818 1.818 0 1129 21.908a1.818 1.818 0 013.636 0z",
4608
- fill: "#000"
4798
+ clipRule: "evenodd"
4609
4799
  }), /*#__PURE__*/React.createElement("path", {
4610
4800
  fillRule: "evenodd",
4611
- clipRule: "evenodd",
4612
- d: "M15 13a2 2 0 00-2 2v24a2 2 0 002 2h24a2 2 0 002-2V15a2 2 0 00-2-2H15zm24 2H15v12.45l4.71-4.709a1.91 1.91 0 012.702 0l6.695 6.695 2.656-1.77a1.91 1.91 0 012.411.239L39 32.73V15zM15 39v-8.754c.06-.038.116-.083.168-.135l5.893-5.893 6.684 6.685a1.911 1.911 0 002.41.238l2.657-1.77 6.02 6.02c.052.051.108.097.168.135V39H15z",
4613
- fill: "#000"
4801
+ d: "M15 13a2 2 0 00-2 2v24a2 2 0 002 2h24a2 2 0 002-2V15a2 2 0 00-2-2H15zm24 2H15v12.45l4.71-4.709a1.91 1.91 0 012.702 0l6.695 6.695 2.656-1.77a1.91 1.91 0 012.411.239L39 32.73V15zM15 39v-8.754a.975.975 0 00.168-.135l5.893-5.893 6.684 6.685a1.911 1.911 0 002.41.238l2.657-1.77 6.02 6.02c.052.051.108.097.168.135V39H15z",
4802
+ clipRule: "evenodd"
4614
4803
  })));
4615
4804
 
4616
4805
  const iconsByType = type => {
@@ -4638,7 +4827,7 @@ class FormFields {
4638
4827
  constructor() {
4639
4828
  this._formFields = {};
4640
4829
  formFields.forEach(formField => {
4641
- this.register(formField.type, formField);
4830
+ this.register(formField.config.type, formField);
4642
4831
  });
4643
4832
  }
4644
4833
  register(type, formField) {