@praxisui/core 1.0.0-beta.63 → 1.0.0-beta.65

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.
@@ -240,6 +240,327 @@ class MemoryCacheAdapter {
240
240
  }
241
241
  }
242
242
 
243
+ /**
244
+ * Enum que define os tipos de controle (`CONTROL_TYPE`) disponíveis para a apresentação dos campos de formulário.
245
+ *
246
+ * O `CONTROL_TYPE` especifica o tipo de elemento de UI (User Interface) que será usado para capturar ou exibir dados do campo.
247
+ * Essa configuração permite que a camada de apresentação saiba como renderizar o campo e oferecer a interação adequada ao usuário.
248
+ * Em casos onde o `CONTROL_TYPE` não é especificado, a camada de apresentação pode usar o valor de `TYPE` (definido em `FieldDataType`)
249
+ * para decidir o controle mais adequado de forma automática.
250
+ */
251
+ const FieldControlType = {
252
+ AI_PROMPT: 'aiPrompt',
253
+ APP_BAR: 'appBar',
254
+ ARC_GAUGE: 'arcGauge',
255
+ ARRAY_INPUT: 'array',
256
+ ASYNC_SELECT: 'async-select',
257
+ AUTO_COMPLETE: 'autoComplete',
258
+ AVATAR: 'avatar',
259
+ BARCODE_GENERATOR: 'barcodeGenerator',
260
+ BOTTOM_NAVIGATION: 'bottomNavigation',
261
+ BREADCRUMB: 'breadcrumb',
262
+ BUTTON: 'button',
263
+ BUTTON_TOGGLE: 'buttonToggle',
264
+ CALENDAR: 'calendar',
265
+ CARD: 'card',
266
+ CHECKBOX: 'checkbox',
267
+ CHIP_INPUT: 'chipInput',
268
+ CHIP_LIST: 'chipList',
269
+ CIRCULAR_GAUGE: 'circularGauge',
270
+ COLOR_GRADIENT: 'colorGradient',
271
+ CPF_CNPJ_INPUT: 'cpfCnpjInput',
272
+ COLOR_PALETTE: 'colorPalette',
273
+ COLOR_PICKER: 'colorPicker',
274
+ COLOR_INPUT: 'color',
275
+ CRON_BUILDER: 'cronBuilder',
276
+ CONTEXT_MENU: 'contextMenu',
277
+ CONVERSATIONAL_UI: 'conversationalUI',
278
+ CURRENCY_INPUT: 'currency',
279
+ DATE_INPUT: 'dateInput',
280
+ DATE_PICKER: 'date',
281
+ DATE_RANGE: 'dateRange',
282
+ DATE_TIME_PICKER: 'dateTime',
283
+ DATE_TIME_RANGE: 'dateTimeRange',
284
+ DATETIME_LOCAL_INPUT: 'dateTimeLocal',
285
+ DIALOG: 'dialog',
286
+ DRAWER: 'drawer',
287
+ DROP_DOWN_TREE: 'dropDownTree',
288
+ EMAIL_INPUT: 'email',
289
+ EXPANSION_PANEL: 'expansionPanel',
290
+ FILE_SAVER: 'fileSaver',
291
+ FILE_SELECT: 'fileSelect',
292
+ FILE_UPLOAD: 'upload',
293
+ FILTER: 'filter',
294
+ FLOATING_LABEL: 'floatingLabel',
295
+ FLOATING_ACTION_BUTTON: 'floatingActionButton',
296
+ GRID: 'grid',
297
+ GRID_LAYOUT: 'gridLayout',
298
+ INPUT: 'input',
299
+ INLINE_SELECT: 'inlineSelect',
300
+ INLINE_SEARCHABLE_SELECT: 'inlineSearchableSelect',
301
+ INLINE_ASYNC_SELECT: 'inlineAsyncSelect',
302
+ INLINE_ENTITY_LOOKUP: 'inlineEntityLookup',
303
+ INLINE_AUTOCOMPLETE: 'inlineAutocomplete',
304
+ INLINE_INPUT: 'inlineInput',
305
+ INLINE_NUMBER: 'inlineNumber',
306
+ INLINE_CURRENCY: 'inlineCurrency',
307
+ INLINE_CURRENCY_RANGE: 'inlineCurrencyRange',
308
+ INLINE_MULTISELECT: 'inlineMultiSelect',
309
+ INLINE_TOGGLE: 'inlineToggle',
310
+ INLINE_RANGE: 'inlineRange',
311
+ INLINE_DATE: 'inlineDate',
312
+ INLINE_DATE_RANGE: 'inlineDateRange',
313
+ INLINE_TIME: 'inlineTime',
314
+ INLINE_TIME_RANGE: 'inlineTimeRange',
315
+ INLINE_TREE_SELECT: 'inlineTreeSelect',
316
+ INLINE_RATING: 'inlineRating',
317
+ INLINE_DISTANCE_RADIUS: 'inlineDistanceRadius',
318
+ INLINE_PIPELINE_STATUS: 'inlinePipelineStatus',
319
+ INLINE_SCORE_PRIORITY: 'inlineScorePriority',
320
+ INLINE_RELATIVE_PERIOD: 'inlineRelativePeriod',
321
+ INLINE_SENTIMENT: 'inlineSentiment',
322
+ INLINE_COLOR_LABEL: 'inlineColorLabel',
323
+ LINEAR_GAUGE: 'linearGauge',
324
+ LIST_VIEW: 'listView',
325
+ MAP: 'map',
326
+ MASKED_TEXT_BOX: 'maskedTextBox',
327
+ MONTH_INPUT: 'month',
328
+ MULTI_COLUMN_COMBO_BOX: 'multiColumnComboBox',
329
+ MULTI_SELECT: 'multiSelect',
330
+ MULTI_SELECT_TREE: 'multiSelectTree',
331
+ TRANSFER_LIST: 'transferList',
332
+ NOTIFICATION: 'notification',
333
+ NUMERIC_TEXT_BOX: 'numericTextBox',
334
+ PAGER: 'pager',
335
+ PAGINATOR: 'paginator',
336
+ PASSWORD: 'password',
337
+ PDF_VIEWER: 'pdfViewer',
338
+ PHONE: 'phone',
339
+ PIVOT_GRID: 'pivotGrid',
340
+ POPUP: 'popup',
341
+ PROGRESS_BAR: 'progressBar',
342
+ PROGRESS_SPINNER: 'progressSpinner',
343
+ QR_CODE: 'qrCode',
344
+ RADIO: 'radio',
345
+ RADIAL_GAUGE: 'radialGauge',
346
+ RANGE_SLIDER: 'rangeSlider',
347
+ PRICE_RANGE: 'priceRange',
348
+ RATING: 'rating',
349
+ RICH_TEXT_EDITOR: 'richTextEditor',
350
+ RIPPLE: 'ripple',
351
+ SCROLL_VIEW: 'scrollView',
352
+ SEARCH_INPUT: 'search',
353
+ SEARCHABLE_SELECT: 'searchable-select',
354
+ SELECTION_LIST: 'selectionList',
355
+ SELECT: 'select',
356
+ SIGNATURE: 'signature',
357
+ SLIDER: 'slider',
358
+ SORTABLE: 'sortable',
359
+ SORTABLE_TABLE: 'sortableTable',
360
+ SPLITTER: 'splitter',
361
+ SPREADSHEET: 'spreadsheet',
362
+ STACK_LAYOUT: 'stackLayout',
363
+ STEP_BAR: 'stepBar',
364
+ STEPPER: 'stepper',
365
+ SVG_ICON: 'svgIcon',
366
+ TABS: 'tabs',
367
+ TEXTAREA: 'textarea',
368
+ TIME_INPUT: 'time',
369
+ TIME_PICKER: 'timePicker',
370
+ TIME_RANGE: 'timeRange',
371
+ TIMELINE: 'timeline',
372
+ TOGGLE: 'toggle',
373
+ TOOLBAR: 'toolbar',
374
+ TOOLTIP: 'tooltip',
375
+ TREE_VIEW: 'treeView',
376
+ TREE_SELECT: 'treeSelect',
377
+ TYPOGRAPHY: 'typography',
378
+ URL_INPUT: 'url',
379
+ WEEK_INPUT: 'week',
380
+ WINDOW: 'window',
381
+ YEAR_INPUT: 'year',
382
+ };
383
+
384
+ const INLINE_FILTER_CONTROL_TYPES = Object.freeze({
385
+ SELECT: FieldControlType.INLINE_SELECT,
386
+ SEARCHABLE_SELECT: FieldControlType.INLINE_SEARCHABLE_SELECT,
387
+ ASYNC_SELECT: FieldControlType.INLINE_ASYNC_SELECT,
388
+ ENTITY_LOOKUP: FieldControlType.INLINE_ENTITY_LOOKUP,
389
+ AUTOCOMPLETE: FieldControlType.INLINE_AUTOCOMPLETE,
390
+ NUMBER: FieldControlType.INLINE_NUMBER,
391
+ CURRENCY: FieldControlType.INLINE_CURRENCY,
392
+ CURRENCY_RANGE: FieldControlType.INLINE_CURRENCY_RANGE,
393
+ MULTI_SELECT: FieldControlType.INLINE_MULTISELECT,
394
+ INPUT: FieldControlType.INLINE_INPUT,
395
+ TOGGLE: FieldControlType.INLINE_TOGGLE,
396
+ RANGE: FieldControlType.INLINE_RANGE,
397
+ DATE: FieldControlType.INLINE_DATE,
398
+ DATE_RANGE: FieldControlType.INLINE_DATE_RANGE,
399
+ TIME: FieldControlType.INLINE_TIME,
400
+ TIME_RANGE: FieldControlType.INLINE_TIME_RANGE,
401
+ TREE_SELECT: FieldControlType.INLINE_TREE_SELECT,
402
+ RATING: FieldControlType.INLINE_RATING,
403
+ DISTANCE_RADIUS: FieldControlType.INLINE_DISTANCE_RADIUS,
404
+ PIPELINE_STATUS: FieldControlType.INLINE_PIPELINE_STATUS,
405
+ SCORE_PRIORITY: FieldControlType.INLINE_SCORE_PRIORITY,
406
+ RELATIVE_PERIOD: FieldControlType.INLINE_RELATIVE_PERIOD,
407
+ SENTIMENT: FieldControlType.INLINE_SENTIMENT,
408
+ COLOR_LABEL: FieldControlType.INLINE_COLOR_LABEL,
409
+ });
410
+ const INLINE_FILTER_CONTROL_TYPE_VALUES = Object.freeze(Object.values(INLINE_FILTER_CONTROL_TYPES));
411
+ const INLINE_FILTER_CONTROL_TYPE_SET = new Set(INLINE_FILTER_CONTROL_TYPE_VALUES);
412
+ function normalizeInlineControlTypeToken(value) {
413
+ return String(value || '')
414
+ .trim()
415
+ .toLowerCase()
416
+ .replace(/[-_\s]/g, '');
417
+ }
418
+ const INLINE_FILTER_TOKEN_TO_CONTROL_TYPE_MAP = {
419
+ inlineselect: INLINE_FILTER_CONTROL_TYPES.SELECT,
420
+ inlinesearchableselect: INLINE_FILTER_CONTROL_TYPES.SEARCHABLE_SELECT,
421
+ inlineasyncselect: INLINE_FILTER_CONTROL_TYPES.ASYNC_SELECT,
422
+ inlineentitylookup: INLINE_FILTER_CONTROL_TYPES.ENTITY_LOOKUP,
423
+ inlineautocomplete: INLINE_FILTER_CONTROL_TYPES.AUTOCOMPLETE,
424
+ inlinenumber: INLINE_FILTER_CONTROL_TYPES.NUMBER,
425
+ inlinecurrency: INLINE_FILTER_CONTROL_TYPES.CURRENCY,
426
+ inlinecurrencyrange: INLINE_FILTER_CONTROL_TYPES.CURRENCY_RANGE,
427
+ inlinemultiselect: INLINE_FILTER_CONTROL_TYPES.MULTI_SELECT,
428
+ inlineinput: INLINE_FILTER_CONTROL_TYPES.INPUT,
429
+ inlinetoggle: INLINE_FILTER_CONTROL_TYPES.TOGGLE,
430
+ inlinerange: INLINE_FILTER_CONTROL_TYPES.RANGE,
431
+ inlinedate: INLINE_FILTER_CONTROL_TYPES.DATE,
432
+ inlinedaterange: INLINE_FILTER_CONTROL_TYPES.DATE_RANGE,
433
+ inlinetime: INLINE_FILTER_CONTROL_TYPES.TIME,
434
+ inlinetimerange: INLINE_FILTER_CONTROL_TYPES.TIME_RANGE,
435
+ inlinetreeselect: INLINE_FILTER_CONTROL_TYPES.TREE_SELECT,
436
+ inlinerating: INLINE_FILTER_CONTROL_TYPES.RATING,
437
+ inlinedistanceradius: INLINE_FILTER_CONTROL_TYPES.DISTANCE_RADIUS,
438
+ inlinepipelinestatus: INLINE_FILTER_CONTROL_TYPES.PIPELINE_STATUS,
439
+ inlinescorepriority: INLINE_FILTER_CONTROL_TYPES.SCORE_PRIORITY,
440
+ inlinerelativeperiod: INLINE_FILTER_CONTROL_TYPES.RELATIVE_PERIOD,
441
+ inlinesentiment: INLINE_FILTER_CONTROL_TYPES.SENTIMENT,
442
+ inlinecolorlabel: INLINE_FILTER_CONTROL_TYPES.COLOR_LABEL,
443
+ };
444
+ const INLINE_FILTER_TOKEN_TO_CONTROL_TYPE = Object.freeze(INLINE_FILTER_TOKEN_TO_CONTROL_TYPE_MAP);
445
+ const INLINE_FILTER_ALIAS_TOKENS = Object.freeze([]);
446
+ const INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE_MAP = {
447
+ inlineselect: FieldControlType.SELECT,
448
+ inlinesearchableselect: FieldControlType.SEARCHABLE_SELECT,
449
+ inlineasyncselect: FieldControlType.ASYNC_SELECT,
450
+ inlineentitylookup: FieldControlType.ASYNC_SELECT,
451
+ inlineautocomplete: FieldControlType.AUTO_COMPLETE,
452
+ inlinenumber: FieldControlType.NUMERIC_TEXT_BOX,
453
+ inlinecurrency: FieldControlType.CURRENCY_INPUT,
454
+ inlinecurrencyrange: FieldControlType.PRICE_RANGE,
455
+ inlinemultiselect: FieldControlType.MULTI_SELECT,
456
+ inlineinput: FieldControlType.INPUT,
457
+ inlinetoggle: FieldControlType.TOGGLE,
458
+ inlinerange: FieldControlType.RANGE_SLIDER,
459
+ inlinedate: FieldControlType.DATE_PICKER,
460
+ inlinedaterange: FieldControlType.DATE_RANGE,
461
+ inlinetime: FieldControlType.TIME_PICKER,
462
+ inlinetimerange: FieldControlType.TIME_RANGE,
463
+ inlinetreeselect: FieldControlType.TREE_SELECT,
464
+ inlinerating: FieldControlType.RATING,
465
+ inlinedistanceradius: FieldControlType.INLINE_DISTANCE_RADIUS,
466
+ inlinepipelinestatus: FieldControlType.INLINE_PIPELINE_STATUS,
467
+ inlinescorepriority: FieldControlType.INLINE_SCORE_PRIORITY,
468
+ inlinerelativeperiod: FieldControlType.INLINE_RELATIVE_PERIOD,
469
+ inlinesentiment: FieldControlType.INLINE_SENTIMENT,
470
+ inlinecolorlabel: FieldControlType.INLINE_COLOR_LABEL,
471
+ };
472
+ const INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE = Object.freeze(INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE_MAP);
473
+ function resolveInlineFilterControlType(value) {
474
+ const token = normalizeInlineControlTypeToken(value);
475
+ if (!token)
476
+ return undefined;
477
+ return INLINE_FILTER_TOKEN_TO_CONTROL_TYPE[token];
478
+ }
479
+ function resolveInlineFilterControlTypeToBaseControlType(value) {
480
+ const token = normalizeInlineControlTypeToken(value);
481
+ if (!token)
482
+ return undefined;
483
+ return INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE[token];
484
+ }
485
+ function isInlineFilterControlType(value) {
486
+ return INLINE_FILTER_CONTROL_TYPE_SET.has(String(value || '').trim());
487
+ }
488
+
489
+ function toUpperSnakeCase(raw) {
490
+ return raw
491
+ .trim()
492
+ .replace(/([a-z0-9])([A-Z])/g, '$1_$2')
493
+ .replace(/[-\s]+/g, '_')
494
+ .replace(/__+/g, '_')
495
+ .toUpperCase();
496
+ }
497
+ function normalizeControlTypeToken(value) {
498
+ return String(value || '')
499
+ .trim()
500
+ .toLowerCase()
501
+ .replace(/[-_\s]/g, '');
502
+ }
503
+ const CONTROL_TYPE_TOKEN_TO_KEY = Object.entries(FieldControlType).reduce((acc, [key, controlTypeValue]) => {
504
+ acc[normalizeControlTypeToken(key)] = key;
505
+ acc[normalizeControlTypeToken(controlTypeValue)] = key;
506
+ return acc;
507
+ }, {});
508
+ const ALIAS_TOKEN_TO_CONTROL_TYPE = {
509
+ // Legacy/common synonyms
510
+ searchable: FieldControlType.SEARCHABLE_SELECT,
511
+ searchableinput: FieldControlType.SEARCHABLE_SELECT,
512
+ searchableselect: FieldControlType.SEARCHABLE_SELECT,
513
+ materialsearchableselect: FieldControlType.SEARCHABLE_SELECT,
514
+ asyncselect: FieldControlType.ASYNC_SELECT,
515
+ materialasyncselect: FieldControlType.ASYNC_SELECT,
516
+ autocomplete: FieldControlType.AUTO_COMPLETE,
517
+ multiselect: FieldControlType.MULTI_SELECT,
518
+ multiselecttree: FieldControlType.MULTI_SELECT_TREE,
519
+ treeselect: FieldControlType.TREE_SELECT,
520
+ datepicker: FieldControlType.DATE_PICKER,
521
+ daterange: FieldControlType.DATE_RANGE,
522
+ datetime: FieldControlType.DATETIME_LOCAL_INPUT,
523
+ timepicker: FieldControlType.TIME_PICKER,
524
+ timerange: FieldControlType.TIME_RANGE,
525
+ pricerange: FieldControlType.PRICE_RANGE,
526
+ rangeslider: FieldControlType.RANGE_SLIDER,
527
+ number: FieldControlType.NUMERIC_TEXT_BOX,
528
+ numeric: FieldControlType.NUMERIC_TEXT_BOX,
529
+ currencyinput: FieldControlType.CURRENCY_INPUT,
530
+ switch: FieldControlType.TOGGLE,
531
+ radiogroup: FieldControlType.RADIO,
532
+ checkboxgroup: FieldControlType.CHECKBOX,
533
+ chiplist: FieldControlType.CHIP_LIST,
534
+ chipinput: FieldControlType.CHIP_INPUT,
535
+ searchinput: FieldControlType.SEARCH_INPUT,
536
+ };
537
+ function normalizeControlTypeKey(value) {
538
+ const token = normalizeControlTypeToken(value);
539
+ if (!token)
540
+ return '';
541
+ const resolvedKey = CONTROL_TYPE_TOKEN_TO_KEY[token];
542
+ if (resolvedKey)
543
+ return resolvedKey;
544
+ return toUpperSnakeCase(String(value || ''));
545
+ }
546
+ function resolveControlTypeAlias(value, fallback = FieldControlType.INPUT) {
547
+ const raw = String(value || '').trim();
548
+ if (!raw)
549
+ return fallback;
550
+ const token = normalizeControlTypeToken(raw);
551
+ const inlineAliased = INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE[token];
552
+ if (inlineAliased)
553
+ return inlineAliased;
554
+ const aliased = ALIAS_TOKEN_TO_CONTROL_TYPE[token];
555
+ if (aliased)
556
+ return aliased;
557
+ const resolvedKey = CONTROL_TYPE_TOKEN_TO_KEY[token];
558
+ if (resolvedKey) {
559
+ return FieldControlType[resolvedKey];
560
+ }
561
+ return raw;
562
+ }
563
+
243
564
  /**
244
565
  * SchemaNormalizerService
245
566
  * -----------------------
@@ -474,6 +795,11 @@ class SchemaNormalizerService {
474
795
  ? ui.validationTrigger.map((t) => String(t))
475
796
  : [String(ui.validationTrigger)];
476
797
  }
798
+ if (ui.validationTriggers !== undefined && out.validationTriggers === undefined) {
799
+ out.validationTriggers = Array.isArray(ui.validationTriggers)
800
+ ? ui.validationTriggers.map((t) => String(t))
801
+ : [String(ui.validationTriggers)];
802
+ }
477
803
  if (ui.validationDebounce !== undefined)
478
804
  out.validationDebounce = Number(ui.validationDebounce);
479
805
  if (ui.showInlineErrors !== undefined)
@@ -555,6 +881,9 @@ class SchemaNormalizerService {
555
881
  if (ui.controlType) {
556
882
  field.controlType = ui.controlType;
557
883
  }
884
+ if (ui.placeholder !== undefined) {
885
+ field.placeholder = String(ui.placeholder);
886
+ }
558
887
  if (ui.mode !== undefined) {
559
888
  field.mode = ui.mode;
560
889
  }
@@ -579,6 +908,12 @@ class SchemaNormalizerService {
579
908
  if (ui.layout !== undefined) {
580
909
  field.layout = String(ui.layout);
581
910
  }
911
+ if (ui.isFlex !== undefined) {
912
+ field.isFlex = this.parseBoolean(ui.isFlex);
913
+ }
914
+ if (ui.displayOrientation !== undefined) {
915
+ field.displayOrientation = String(ui.displayOrientation);
916
+ }
582
917
  // -------------------------------------------------------------------
583
918
  // Behaviour and validation
584
919
  // -------------------------------------------------------------------
@@ -588,12 +923,30 @@ class SchemaNormalizerService {
588
923
  if (ui.disabled !== undefined) {
589
924
  field.disabled = this.parseBoolean(ui.disabled);
590
925
  }
926
+ if (ui.editable !== undefined) {
927
+ field.editable = this.parseBoolean(ui.editable);
928
+ }
591
929
  if (ui.inlineEditing !== undefined) {
592
930
  field.inlineEditing = this.parseBoolean(ui.inlineEditing);
593
931
  }
594
932
  if (ui.defaultValue !== undefined) {
595
933
  field.defaultValue = ui.defaultValue;
596
934
  }
935
+ if (ui.validationMode !== undefined) {
936
+ field.validationMode = String(ui.validationMode);
937
+ }
938
+ if (ui.unique !== undefined) {
939
+ field.unique = this.parseBoolean(ui.unique);
940
+ }
941
+ if (ui.mask !== undefined) {
942
+ field.mask = String(ui.mask);
943
+ }
944
+ if (ui.sortable !== undefined) {
945
+ field.sortable = this.parseBoolean(ui.sortable);
946
+ }
947
+ if (ui.viewOnlyStyle !== undefined) {
948
+ field.viewOnlyStyle = String(ui.viewOnlyStyle);
949
+ }
597
950
  Object.assign(field, this.parseValidators(ui));
598
951
  // Inline conditional functions
599
952
  const condDisplay = this.parsePredicateFunction(ui.conditionalDisplay);
@@ -624,9 +977,15 @@ class SchemaNormalizerService {
624
977
  if (ui.width !== undefined) {
625
978
  field.width = ui.width;
626
979
  }
980
+ if (ui.helpText !== undefined) {
981
+ field.helpText = String(ui.helpText);
982
+ }
627
983
  if (ui.hint !== undefined) {
628
984
  field.hint = ui.hint;
629
985
  }
986
+ if (ui.hiddenCondition !== undefined) {
987
+ field.hiddenCondition = ui.hiddenCondition;
988
+ }
630
989
  if (ui.icon !== undefined) {
631
990
  field.icon = ui.icon;
632
991
  }
@@ -636,6 +995,18 @@ class SchemaNormalizerService {
636
995
  if (ui.iconSize !== undefined) {
637
996
  field.iconSize = ui.iconSize;
638
997
  }
998
+ if (ui.iconColor !== undefined) {
999
+ field.iconColor = String(ui.iconColor);
1000
+ }
1001
+ if (ui.iconClass !== undefined) {
1002
+ field.iconClass = String(ui.iconClass);
1003
+ }
1004
+ if (ui.iconStyle !== undefined) {
1005
+ field.iconStyle = String(ui.iconStyle);
1006
+ }
1007
+ if (ui.iconFontSize !== undefined) {
1008
+ field.iconFontSize = ui.iconFontSize;
1009
+ }
639
1010
  if (ui.tooltipOnHover !== undefined) {
640
1011
  field.tooltipOnHover = ui.tooltipOnHover;
641
1012
  }
@@ -698,15 +1069,41 @@ class SchemaNormalizerService {
698
1069
  if (ui.multiple !== undefined) {
699
1070
  field.multiple = this.parseBoolean(ui.multiple);
700
1071
  }
1072
+ if (ui.filterable !== undefined) {
1073
+ field.filterable = this.parseBoolean(ui.filterable);
1074
+ }
701
1075
  if (ui.emptyOptionText !== undefined) {
702
1076
  field.emptyOptionText = ui.emptyOptionText;
703
1077
  }
1078
+ if (ui.filter !== undefined) {
1079
+ field.filter = ui.filter;
1080
+ }
1081
+ if (ui.filterOptions !== undefined) {
1082
+ field.filterOptions = Array.isArray(ui.filterOptions)
1083
+ ? [...ui.filterOptions]
1084
+ : this.parseStringArray(ui.filterOptions);
1085
+ }
704
1086
  if (ui.dependentField !== undefined) {
705
1087
  field.dependentField = ui.dependentField;
706
1088
  }
707
1089
  if (ui.resetOnDependentChange !== undefined) {
708
1090
  field.resetOnDependentChange = this.parseBoolean(ui.resetOnDependentChange);
709
1091
  }
1092
+ if (ui.debounceTime !== undefined) {
1093
+ field.debounceTime = Number(ui.debounceTime);
1094
+ }
1095
+ if (ui.numericStep !== undefined) {
1096
+ field.numericStep = Number(ui.numericStep);
1097
+ }
1098
+ if (ui.numericMin !== undefined) {
1099
+ field.numericMin = Number(ui.numericMin);
1100
+ }
1101
+ if (ui.numericMax !== undefined) {
1102
+ field.numericMax = Number(ui.numericMax);
1103
+ }
1104
+ if (ui.numericMaxLength !== undefined) {
1105
+ field.numericMaxLength = Number(ui.numericMaxLength);
1106
+ }
710
1107
  if (ui.buttons !== undefined) {
711
1108
  field.buttons = this.parseButtons(ui.buttons);
712
1109
  }
@@ -2830,7 +3227,8 @@ class GenericCrudService {
2830
3227
  const rawName = String(field?.name || '').trim();
2831
3228
  if (!rawName)
2832
3229
  continue;
2833
- const controlType = this.normalizeControlTypeToken(field?.controlType || field?.filterControlType);
3230
+ const aliasedControlType = resolveControlTypeAlias(field?.controlType, '');
3231
+ const controlType = this.normalizeControlTypeToken(aliasedControlType);
2834
3232
  if (!this.isRangeControlType(controlType))
2835
3233
  continue;
2836
3234
  const full = rawName.toLowerCase();
@@ -4784,129 +5182,11 @@ function buildValidatorsFromValidatorOptions(opts = {}) {
4784
5182
  }
4785
5183
 
4786
5184
  /**
4787
- * Enum que define os tipos de controle (`CONTROL_TYPE`) disponíveis para a apresentação dos campos de formulário.
4788
- *
4789
- * O `CONTROL_TYPE` especifica o tipo de elemento de UI (User Interface) que será usado para capturar ou exibir dados do campo.
4790
- * Essa configuração permite que a camada de apresentação saiba como renderizar o campo e oferecer a interação adequada ao usuário.
4791
- * Em casos onde o `CONTROL_TYPE` não é especificado, a camada de apresentação pode usar o valor de `TYPE` (definido em `FieldDataType`)
4792
- * para decidir o controle mais adequado de forma automática.
4793
- */
4794
- const FieldControlType = {
4795
- AI_PROMPT: 'aiPrompt',
4796
- APP_BAR: 'appBar',
4797
- ARC_GAUGE: 'arcGauge',
4798
- ARRAY_INPUT: 'array',
4799
- ASYNC_SELECT: 'async-select',
4800
- AUTO_COMPLETE: 'autoComplete',
4801
- AVATAR: 'avatar',
4802
- BARCODE_GENERATOR: 'barcodeGenerator',
4803
- BOTTOM_NAVIGATION: 'bottomNavigation',
4804
- BREADCRUMB: 'breadcrumb',
4805
- BUTTON: 'button',
4806
- BUTTON_GROUP: 'buttonGroup',
4807
- BUTTON_TOGGLE: 'buttonToggle',
4808
- CALENDAR: 'calendar',
4809
- CARD: 'card',
4810
- CHECKBOX: 'checkbox',
4811
- CHIP_INPUT: 'chipInput',
4812
- CHIP_LIST: 'chipList',
4813
- CIRCULAR_GAUGE: 'circularGauge',
4814
- COLOR_GRADIENT: 'colorGradient',
4815
- CPF_CNPJ_INPUT: 'cpfCnpjInput',
4816
- COLOR_PALETTE: 'colorPalette',
4817
- COLOR_PICKER: 'colorPicker',
4818
- COLOR_INPUT: 'color',
4819
- CRON_BUILDER: 'cronBuilder',
4820
- CONTEXT_MENU: 'contextMenu',
4821
- CONVERSATIONAL_UI: 'conversationalUI',
4822
- CURRENCY_INPUT: 'currency',
4823
- DATE_INPUT: 'dateInput',
4824
- DATE_PICKER: 'date',
4825
- DATE_RANGE: 'dateRange',
4826
- DATE_TIME_PICKER: 'dateTime',
4827
- DATE_TIME_RANGE: 'dateTimeRange',
4828
- DATETIME_LOCAL_INPUT: 'dateTimeLocal',
4829
- DIALOG: 'dialog',
4830
- DRAWER: 'drawer',
4831
- DROP_DOWN_TREE: 'dropDownTree',
4832
- EMAIL_INPUT: 'email',
4833
- EXPANSION_PANEL: 'expansionPanel',
4834
- FILE_SAVER: 'fileSaver',
4835
- FILE_SELECT: 'fileSelect',
4836
- FILE_UPLOAD: 'upload',
4837
- FILTER: 'filter',
4838
- FLOATING_LABEL: 'floatingLabel',
4839
- FLOATING_ACTION_BUTTON: 'floatingActionButton',
4840
- GRID: 'grid',
4841
- GRID_LAYOUT: 'gridLayout',
4842
- INPUT: 'input',
4843
- LINEAR_GAUGE: 'linearGauge',
4844
- LIST_VIEW: 'listView',
4845
- MAP: 'map',
4846
- MASKED_TEXT_BOX: 'maskedTextBox',
4847
- MONTH_INPUT: 'month',
4848
- MULTI_COLUMN_COMBO_BOX: 'multiColumnComboBox',
4849
- MULTI_SELECT: 'multiSelect',
4850
- MULTI_SELECT_TREE: 'multiSelectTree',
4851
- TRANSFER_LIST: 'transferList',
4852
- NOTIFICATION: 'notification',
4853
- NUMERIC_TEXT_BOX: 'numericTextBox',
4854
- PAGER: 'pager',
4855
- PAGINATOR: 'paginator',
4856
- PASSWORD: 'password',
4857
- PDF_VIEWER: 'pdfViewer',
4858
- PHONE: 'phone',
4859
- PIVOT_GRID: 'pivotGrid',
4860
- POPUP: 'popup',
4861
- PROGRESS_BAR: 'progressBar',
4862
- PROGRESS_SPINNER: 'progressSpinner',
4863
- QR_CODE: 'qrCode',
4864
- RADIO: 'radio',
4865
- RADIAL_GAUGE: 'radialGauge',
4866
- RANGE_SLIDER: 'rangeSlider',
4867
- PRICE_RANGE: 'priceRange',
4868
- RATING: 'rating',
4869
- RICH_TEXT_EDITOR: 'richTextEditor',
4870
- RIPPLE: 'ripple',
4871
- SCROLL_VIEW: 'scrollView',
4872
- SEARCH_INPUT: 'search',
4873
- SEARCHABLE_SELECT: 'searchable-select',
4874
- SELECTION_LIST: 'selectionList',
4875
- SELECT: 'select',
4876
- SIGNATURE: 'signature',
4877
- SLIDER: 'slider',
4878
- SORTABLE: 'sortable',
4879
- SORTABLE_TABLE: 'sortableTable',
4880
- SPLITTER: 'splitter',
4881
- SPREADSHEET: 'spreadsheet',
4882
- STACK_LAYOUT: 'stackLayout',
4883
- STEP_BAR: 'stepBar',
4884
- STEPPER: 'stepper',
4885
- SVG_ICON: 'svgIcon',
4886
- TABS: 'tabs',
4887
- TEXTAREA: 'textarea',
4888
- TIME_INPUT: 'time',
4889
- TIME_PICKER: 'timePicker',
4890
- TIME_RANGE: 'timeRange',
4891
- TIMELINE: 'timeline',
4892
- TOGGLE: 'toggle',
4893
- TOOLBAR: 'toolbar',
4894
- TOOLTIP: 'tooltip',
4895
- TREE_VIEW: 'treeView',
4896
- TREE_SELECT: 'treeSelect',
4897
- TYPOGRAPHY: 'typography',
4898
- URL_INPUT: 'url',
4899
- WEEK_INPUT: 'week',
4900
- WINDOW: 'window',
4901
- YEAR_INPUT: 'year',
4902
- };
4903
-
4904
- /**
4905
- * DynamicFormService
4906
- * -------------------
4907
- * Serviço utilitário central para criação e atualização de formulários dinâmicos
4908
- * (Reactive Forms) a partir de metadados corporativos (FieldMetadata) ou
4909
- * definições do servidor (FieldDefinition).
5185
+ * DynamicFormService
5186
+ * -------------------
5187
+ * Serviço utilitário central para criação e atualização de formulários dinâmicos
5188
+ * (Reactive Forms) a partir de metadados corporativos (FieldMetadata) ou
5189
+ * definições do servidor (FieldDefinition).
4910
5190
  *
4911
5191
  * Principais responsabilidades
4912
5192
  * - Converter ValidatorOptions/FieldDefinition em ValidatorFn/AsyncValidatorFn.
@@ -8953,6 +9233,186 @@ const EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE = {
8953
9233
  ],
8954
9234
  },
8955
9235
  };
9236
+ const EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE = {
9237
+ templateId: 'employee-onboarding-guided',
9238
+ version: '1.0.0',
9239
+ metadata: {
9240
+ title: 'Employee Onboarding Guided',
9241
+ description: 'Template editorial guiado para onboarding com identificação enriquecida, preparação operacional e actions orientadas por etapa.',
9242
+ category: 'onboarding',
9243
+ tags: ['employee', 'onboarding', 'hr', 'guided', 'wizard'],
9244
+ source: 'catalog',
9245
+ owner: 'praxis-core',
9246
+ },
9247
+ shell: {
9248
+ shellVariant: 'wizard',
9249
+ maxWidth: '1120px',
9250
+ pageSpacing: '20px',
9251
+ },
9252
+ compliancePresets: [
9253
+ { id: 'privacy-consent', label: 'Privacy Consent' },
9254
+ { id: 'employment-documents', label: 'Employment Documents' },
9255
+ ],
9256
+ contextSchema: [
9257
+ { key: 'company.name', type: 'string', required: true },
9258
+ { key: 'company.hrEmail', type: 'string' },
9259
+ { key: 'manager.name', type: 'string' },
9260
+ ],
9261
+ layout: {
9262
+ sections: [
9263
+ {
9264
+ id: 'identity',
9265
+ appearance: 'step',
9266
+ stepLabel: '1',
9267
+ title: 'Identificação',
9268
+ description: 'Preencha seus dados para que possamos configurar seu acesso.',
9269
+ rows: [
9270
+ {
9271
+ id: 'identity-row-1',
9272
+ columns: [{ id: 'identity-col-name', fields: ['fullName'] }],
9273
+ },
9274
+ {
9275
+ id: 'identity-row-2',
9276
+ columns: [
9277
+ { id: 'identity-col-email', fields: ['corporateEmail'] },
9278
+ { id: 'identity-col-phone', fields: ['phoneNumber'] },
9279
+ ],
9280
+ },
9281
+ {
9282
+ id: 'identity-row-3',
9283
+ columns: [
9284
+ { id: 'identity-col-department', fields: ['department'] },
9285
+ { id: 'identity-col-role', fields: ['role'] },
9286
+ ],
9287
+ },
9288
+ {
9289
+ id: 'identity-row-4',
9290
+ columns: [{ id: 'identity-col-start-date', fields: ['startDate'] }],
9291
+ },
9292
+ ],
9293
+ },
9294
+ {
9295
+ id: 'operations',
9296
+ appearance: 'step',
9297
+ stepLabel: '2',
9298
+ title: 'Operação inicial',
9299
+ description: 'Configure os recursos necessários para o primeiro dia.',
9300
+ rows: [
9301
+ {
9302
+ id: 'operations-row-1',
9303
+ columns: [{ id: 'operations-col-work-model', fields: ['workModel'] }],
9304
+ },
9305
+ {
9306
+ id: 'operations-row-2',
9307
+ columns: [
9308
+ { id: 'operations-col-observations', fields: ['accessibilityNotes'] },
9309
+ ],
9310
+ },
9311
+ {
9312
+ id: 'operations-row-3',
9313
+ columns: [{ id: 'operations-col-privacy', fields: ['privacyConsent'] }],
9314
+ },
9315
+ ],
9316
+ },
9317
+ ],
9318
+ formBlocksBefore: [],
9319
+ formBlocksBeforeActions: [],
9320
+ formBlocksAfter: [],
9321
+ actions: {
9322
+ placement: 'afterSections',
9323
+ position: 'split',
9324
+ orientation: 'horizontal',
9325
+ spacing: 'normal',
9326
+ submit: {
9327
+ visible: true,
9328
+ label: 'Próximo',
9329
+ type: 'submit',
9330
+ color: 'primary',
9331
+ variant: 'raised',
9332
+ size: 'large',
9333
+ },
9334
+ cancel: {
9335
+ visible: true,
9336
+ label: 'Voltar',
9337
+ type: 'button',
9338
+ color: 'basic',
9339
+ variant: 'stroked',
9340
+ size: 'small',
9341
+ },
9342
+ reset: {
9343
+ visible: false,
9344
+ label: 'Limpar',
9345
+ type: 'reset',
9346
+ color: 'basic',
9347
+ variant: 'stroked',
9348
+ },
9349
+ },
9350
+ },
9351
+ defaults: {
9352
+ fieldMetadata: [
9353
+ { name: 'fullName', label: 'Nome completo *', controlType: 'input', required: true },
9354
+ { name: 'corporateEmail', label: 'E-mail corporativo *', controlType: 'email', required: true },
9355
+ { name: 'phoneNumber', label: 'Telefone', controlType: 'input' },
9356
+ {
9357
+ name: 'department',
9358
+ label: 'Departamento *',
9359
+ controlType: 'select',
9360
+ required: true,
9361
+ options: [
9362
+ { text: 'Design', value: 'Design' },
9363
+ { text: 'Engenharia', value: 'Engenharia' },
9364
+ { text: 'Produto', value: 'Produto' },
9365
+ { text: 'People Operations', value: 'People Operations' },
9366
+ ],
9367
+ },
9368
+ {
9369
+ name: 'role',
9370
+ label: 'Cargo *',
9371
+ controlType: 'select',
9372
+ required: true,
9373
+ options: [
9374
+ { text: 'Product Designer', value: 'Product Designer' },
9375
+ { text: 'Frontend Engineer', value: 'Frontend Engineer' },
9376
+ { text: 'People Partner', value: 'People Partner' },
9377
+ { text: 'Product Manager', value: 'Product Manager' },
9378
+ ],
9379
+ },
9380
+ {
9381
+ name: 'startDate',
9382
+ label: 'Data de início',
9383
+ controlType: 'date',
9384
+ required: true,
9385
+ },
9386
+ {
9387
+ name: 'workModel',
9388
+ label: 'Modelo de trabalho',
9389
+ controlType: 'radio',
9390
+ required: true,
9391
+ selectionMode: 'single',
9392
+ options: [
9393
+ { text: 'Presencial', value: 'Presencial' },
9394
+ { text: 'Remoto', value: 'Remoto' },
9395
+ { text: 'Híbrido', value: 'Híbrido' },
9396
+ ],
9397
+ },
9398
+ {
9399
+ name: 'accessibilityNotes',
9400
+ label: 'Observações adicionais',
9401
+ controlType: 'textarea',
9402
+ },
9403
+ {
9404
+ name: 'privacyConsent',
9405
+ label: 'Confirmo ciência sobre o tratamento dos meus dados no processo de onboarding.',
9406
+ controlType: 'checkbox',
9407
+ selectionMode: 'boolean',
9408
+ variant: 'consent',
9409
+ density: 'comfortable',
9410
+ required: true,
9411
+ requiredChecked: true,
9412
+ },
9413
+ ],
9414
+ },
9415
+ };
8956
9416
  const PRIVACY_CONSENT_EDITORIAL_TEMPLATE = {
8957
9417
  templateId: 'privacy-consent',
8958
9418
  version: '1.0.0',
@@ -9074,6 +9534,7 @@ const PRIVACY_CONSENT_EDITORIAL_TEMPLATE = {
9074
9534
  const EDITORIAL_FORM_TEMPLATE_CATALOG = [
9075
9535
  EVENT_REGISTRATION_EDITORIAL_TEMPLATE,
9076
9536
  EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE,
9537
+ EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE,
9077
9538
  PRIVACY_CONSENT_EDITORIAL_TEMPLATE,
9078
9539
  ];
9079
9540
  function getEditorialFormTemplateCatalog() {
@@ -9294,6 +9755,15 @@ const EDITORIAL_THEME_PRESETS = [
9294
9755
  pageSpacing: '24px',
9295
9756
  surfaceVariant: 'corporate',
9296
9757
  },
9758
+ {
9759
+ themeId: 'guided-onboarding',
9760
+ label: 'Guided Onboarding',
9761
+ description: 'Tema editorial para onboarding guiado com welcome hero, stepper protagonista e conclusão orientada.',
9762
+ shellVariant: 'wizard',
9763
+ maxWidth: '1120px',
9764
+ pageSpacing: '20px',
9765
+ surfaceVariant: 'corporate',
9766
+ },
9297
9767
  {
9298
9768
  themeId: 'compliance-plain',
9299
9769
  label: 'Compliance Plain',
@@ -9361,6 +9831,16 @@ const EDITORIAL_SOLUTION_PRESETS = [
9361
9831
  dataBlockOrder: ['identity-form', 'operations-form'],
9362
9832
  tags: ['hr', 'onboarding', 'corporate'],
9363
9833
  },
9834
+ {
9835
+ presetId: 'preset:employee-onboarding:guided',
9836
+ label: 'Employee Onboarding Guided',
9837
+ description: 'Variante guiada inspirada no onboarding validado, com welcome hero, seleção operacional e etapa final dedicada.',
9838
+ problemType: 'employee-onboarding',
9839
+ themePresetId: 'guided-onboarding',
9840
+ compliancePresetIds: ['privacy-consent', 'employment-documents'],
9841
+ dataBlockOrder: ['identity-form', 'operations-form'],
9842
+ tags: ['hr', 'onboarding', 'guided', 'wizard'],
9843
+ },
9364
9844
  {
9365
9845
  presetId: 'preset:privacy-consent:default',
9366
9846
  label: 'Privacy Consent Default',
@@ -9756,6 +10236,277 @@ const EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION = {
9756
10236
  tags: ['employee', 'onboarding', 'hr', 'documents'],
9757
10237
  owner: 'praxis-core',
9758
10238
  };
10239
+ const EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION = (() => {
10240
+ const solution = structuredClone(EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION);
10241
+ const journey = solution.journeys[0];
10242
+ solution.solutionId = 'employee-onboarding-guided';
10243
+ solution.title = 'Employee Onboarding Guided';
10244
+ solution.description =
10245
+ 'Variante editorial guiada de onboarding com welcome hero, coleta em duas etapas, revisão final e conclusão dedicada.';
10246
+ solution.presentation = {
10247
+ layout: {
10248
+ orientation: 'horizontal',
10249
+ density: 'relaxed',
10250
+ shellVariant: 'compact-form',
10251
+ maxWidth: '1120px',
10252
+ responsive: {
10253
+ mobileOrientation: 'vertical',
10254
+ collapseStepperBelow: '860px',
10255
+ },
10256
+ spacing: {
10257
+ pagePadding: '0px',
10258
+ shellPadding: '0px',
10259
+ sectionGap: '20px',
10260
+ blockGap: '20px',
10261
+ actionGap: '14px',
10262
+ },
10263
+ },
10264
+ theme: {
10265
+ color: {
10266
+ pageBackground: '#f7f2ea',
10267
+ surfacePrimary: '#ffffff',
10268
+ surfaceSecondary: '#f6f1e8',
10269
+ border: '#e7dece',
10270
+ textPrimary: '#22324f',
10271
+ textSecondary: '#7283a1',
10272
+ accent: '#2c4d90',
10273
+ accentContrast: '#ffffff',
10274
+ success: '#34b681',
10275
+ warning: '#d39a1a',
10276
+ danger: '#c84b4b',
10277
+ stepActive: '#2c4d90',
10278
+ stepCompleted: '#34b681',
10279
+ stepPending: '#eeece7',
10280
+ connector: '#7ed4b4',
10281
+ ctaPrimary: '#2c4d90',
10282
+ ctaPrimaryText: '#ffffff',
10283
+ },
10284
+ radius: {
10285
+ shell: '28px',
10286
+ card: '22px',
10287
+ button: '16px',
10288
+ field: '16px',
10289
+ step: '999px',
10290
+ },
10291
+ shadow: {
10292
+ shell: '0 26px 54px rgba(30, 44, 72, 0.08)',
10293
+ card: '0 16px 36px rgba(30, 44, 72, 0.08)',
10294
+ floating: '0 18px 42px rgba(44, 77, 144, 0.18)',
10295
+ },
10296
+ borderWidth: {
10297
+ shell: '1px',
10298
+ card: '1px',
10299
+ field: '1px',
10300
+ activeStep: '2px',
10301
+ },
10302
+ typography: {
10303
+ titleFontFamily: 'Georgia, Times New Roman, serif',
10304
+ bodyFontFamily: 'Segoe UI, Arial, sans-serif',
10305
+ titleWeight: 700,
10306
+ bodyWeight: 500,
10307
+ heroTitleSize: '3.25rem',
10308
+ stepTitleSize: '2.2rem',
10309
+ bodySize: '1rem',
10310
+ captionSize: '0.9rem',
10311
+ },
10312
+ },
10313
+ stepper: {
10314
+ visible: true,
10315
+ orientation: 'horizontal',
10316
+ variant: 'icon-label',
10317
+ size: 'lg',
10318
+ align: 'space-between',
10319
+ showLabels: true,
10320
+ showDescriptions: false,
10321
+ showConnectors: true,
10322
+ connectorStyle: 'solid',
10323
+ allowStepJump: false,
10324
+ },
10325
+ };
10326
+ solution.themePresets = EDITORIAL_THEME_PRESETS.filter((preset) => ['corporate-wizard', 'guided-onboarding'].includes(preset.themeId));
10327
+ solution.tags = ['employee', 'onboarding', 'hr', 'guided', 'wizard'];
10328
+ if (!journey) {
10329
+ return solution;
10330
+ }
10331
+ journey.label = 'Onboarding guiado';
10332
+ journey.description =
10333
+ 'Jornada editorial guiada da chegada do colaborador até a preparação operacional e confirmação final.';
10334
+ journey.steps = [
10335
+ {
10336
+ stepId: 'welcome',
10337
+ label: 'Boas-vindas',
10338
+ kind: 'intro',
10339
+ icon: { name: 'auto_awesome' },
10340
+ visual: {
10341
+ variant: 'hero-card',
10342
+ surface: 'soft',
10343
+ },
10344
+ blocks: [
10345
+ {
10346
+ blockId: 'guided:welcome-hero',
10347
+ kind: 'introHero',
10348
+ align: 'center',
10349
+ title: 'Bem-vindo à equipe!',
10350
+ subtitle: 'Estamos muito felizes em tê-lo conosco. Vamos preparar tudo para que sua jornada comece da melhor forma possível.',
10351
+ description: 'Este processo leva apenas alguns minutos e vai garantir que você tenha acesso ao que precisa desde o primeiro dia.',
10352
+ icon: {
10353
+ name: 'auto_awesome',
10354
+ },
10355
+ highlightItems: [
10356
+ {
10357
+ id: 'guided-welcome-access',
10358
+ title: 'Acesso seguro configurado',
10359
+ icon: { name: 'verified_user' },
10360
+ },
10361
+ {
10362
+ id: 'guided-welcome-team',
10363
+ title: 'Integração com a equipe',
10364
+ icon: { name: 'groups' },
10365
+ },
10366
+ {
10367
+ id: 'guided-welcome-ready',
10368
+ title: 'Pronto para começar',
10369
+ icon: { name: 'rocket_launch' },
10370
+ },
10371
+ ],
10372
+ primaryAction: {
10373
+ label: 'Começar onboarding',
10374
+ actionId: 'next-step',
10375
+ appearance: 'primary',
10376
+ icon: { name: 'arrow_forward' },
10377
+ },
10378
+ },
10379
+ ],
10380
+ },
10381
+ {
10382
+ stepId: 'identity',
10383
+ label: 'Identificação',
10384
+ kind: 'form',
10385
+ icon: { name: 'person' },
10386
+ visual: {
10387
+ variant: 'form-card',
10388
+ surface: 'elevated',
10389
+ columns: 2,
10390
+ },
10391
+ blocks: [
10392
+ {
10393
+ blockId: 'identity-form',
10394
+ kind: 'dataCollection',
10395
+ title: 'Identificação',
10396
+ description: 'Preencha seus dados para que possamos configurar seu acesso.',
10397
+ formBlockId: 'identity-form',
10398
+ surface: 'plain',
10399
+ },
10400
+ ],
10401
+ },
10402
+ {
10403
+ stepId: 'operations',
10404
+ label: 'Operação inicial',
10405
+ kind: 'mixed',
10406
+ icon: { name: 'tune' },
10407
+ visual: {
10408
+ variant: 'selection-grid',
10409
+ surface: 'elevated',
10410
+ columns: 2,
10411
+ },
10412
+ blocks: [
10413
+ {
10414
+ blockId: 'guided:operations-equipment',
10415
+ kind: 'selectionCards',
10416
+ title: 'Equipamentos necessários',
10417
+ field: 'selectedEquipment',
10418
+ selectionMode: 'multiple',
10419
+ columns: 2,
10420
+ style: {
10421
+ iconPosition: 'top',
10422
+ variant: 'accent',
10423
+ },
10424
+ items: [
10425
+ { id: 'notebook', label: 'Notebook', value: 'NOTEBOOK', icon: { name: 'laptop_mac' } },
10426
+ { id: 'monitor', label: 'Monitor externo', value: 'MONITOR', icon: { name: 'desktop_windows' } },
10427
+ { id: 'headset', label: 'Headset', value: 'HEADSET', icon: { name: 'headset_mic' } },
10428
+ { id: 'badge', label: 'Crachá de acesso', value: 'BADGE', icon: { name: 'badge' } },
10429
+ ],
10430
+ },
10431
+ {
10432
+ blockId: 'operations-form',
10433
+ kind: 'dataCollection',
10434
+ title: 'Operação inicial',
10435
+ description: 'Configure os recursos necessários para o primeiro dia.',
10436
+ formBlockId: 'operations-form',
10437
+ surface: 'plain',
10438
+ },
10439
+ ],
10440
+ },
10441
+ {
10442
+ stepId: 'confirmation',
10443
+ label: 'Confirmação',
10444
+ kind: 'review',
10445
+ icon: { name: 'task_alt' },
10446
+ visual: {
10447
+ variant: 'review-sections',
10448
+ surface: 'soft',
10449
+ },
10450
+ blocks: [
10451
+ {
10452
+ blockId: 'guided:review',
10453
+ kind: 'reviewSections',
10454
+ title: 'Confirmação',
10455
+ description: 'Revise suas informações antes de finalizar.',
10456
+ sections: [
10457
+ {
10458
+ id: 'review-identity',
10459
+ title: 'Identificação',
10460
+ icon: { name: 'person' },
10461
+ fields: [
10462
+ { key: 'fullName', label: 'Nome', valuePath: 'formData.fullName' },
10463
+ { key: 'corporateEmail', label: 'E-mail', valuePath: 'formData.corporateEmail', format: 'email' },
10464
+ { key: 'phoneNumber', label: 'Telefone', valuePath: 'formData.phoneNumber', hideWhenEmpty: true, format: 'phone' },
10465
+ { key: 'department', label: 'Departamento', valuePath: 'formData.department' },
10466
+ { key: 'role', label: 'Cargo', valuePath: 'formData.role' },
10467
+ { key: 'startDate', label: 'Início', valuePath: 'formData.startDate', format: 'date' },
10468
+ ],
10469
+ },
10470
+ {
10471
+ id: 'review-operations',
10472
+ title: 'Operação inicial',
10473
+ icon: { name: 'tune' },
10474
+ fields: [
10475
+ { key: 'selectedEquipment', label: 'Equipamentos', valuePath: 'formData.selectedEquipment' },
10476
+ { key: 'workModel', label: 'Modelo', valuePath: 'formData.workModel' },
10477
+ { key: 'accessibilityNotes', label: 'Observações', valuePath: 'formData.accessibilityNotes', hideWhenEmpty: true },
10478
+ { key: 'privacyConsent', label: 'Consentimento', valuePath: 'formData.privacyConsent', format: 'boolean' },
10479
+ ],
10480
+ },
10481
+ ],
10482
+ },
10483
+ ],
10484
+ },
10485
+ {
10486
+ stepId: 'success',
10487
+ label: 'Tudo pronto',
10488
+ kind: 'confirmation',
10489
+ icon: { name: 'celebration' },
10490
+ visual: {
10491
+ variant: 'success-panel',
10492
+ textAlign: 'center',
10493
+ emphasis: 'high',
10494
+ },
10495
+ blocks: [
10496
+ {
10497
+ blockId: 'guided:success',
10498
+ kind: 'successPanel',
10499
+ title: 'Tudo pronto!',
10500
+ description: 'Seu onboarding foi concluído com sucesso. Nossa equipe já está preparando tudo para o seu primeiro dia.',
10501
+ secondaryMessage: 'Você receberá um e-mail com os próximos passos.',
10502
+ tone: 'success',
10503
+ icon: { name: 'celebration' },
10504
+ },
10505
+ ],
10506
+ },
10507
+ ];
10508
+ return solution;
10509
+ })();
9759
10510
  const PRIVACY_CONSENT_EDITORIAL_SOLUTION = {
9760
10511
  solutionId: 'privacy-consent',
9761
10512
  version: '1.0.0',
@@ -9876,6 +10627,7 @@ const PRIVACY_CONSENT_EDITORIAL_SOLUTION = {
9876
10627
  const EDITORIAL_SOLUTION_CATALOG = [
9877
10628
  EVENT_REGISTRATION_EDITORIAL_SOLUTION,
9878
10629
  EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION,
10630
+ EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION,
9879
10631
  PRIVACY_CONSENT_EDITORIAL_SOLUTION,
9880
10632
  ];
9881
10633
  function getEditorialSolutionCatalog() {
@@ -10218,13 +10970,17 @@ function mapFieldDefinitionToMetadata(field) {
10218
10970
  'mode',
10219
10971
  'width',
10220
10972
  'isFlex',
10973
+ 'displayOrientation',
10221
10974
  'disabled',
10222
10975
  'readOnly',
10223
10976
  'hidden',
10224
10977
  'formHidden',
10225
10978
  'tableHidden',
10979
+ 'editable',
10980
+ 'validationMode',
10226
10981
  'unique',
10227
10982
  'mask',
10983
+ 'viewOnlyStyle',
10228
10984
  'inlineEditing',
10229
10985
  'multiple',
10230
10986
  'searchable',
@@ -10235,6 +10991,11 @@ function mapFieldDefinitionToMetadata(field) {
10235
10991
  'variant',
10236
10992
  'density',
10237
10993
  'layout',
10994
+ 'debounceTime',
10995
+ 'iconColor',
10996
+ 'iconClass',
10997
+ 'iconStyle',
10998
+ 'iconFontSize',
10238
10999
  ];
10239
11000
  for (const prop of simpleProps) {
10240
11001
  const value = field[prop];
@@ -10303,6 +11064,9 @@ function mapFieldDefinitionToMetadata(field) {
10303
11064
  if (field.hint || field.helpText) {
10304
11065
  metadata.hint = field.hint ?? field.helpText;
10305
11066
  }
11067
+ if (field.hiddenCondition !== undefined) {
11068
+ metadata.hiddenCondition = field.hiddenCondition;
11069
+ }
10306
11070
  if (field.clearButton !== undefined) {
10307
11071
  metadata.clearButton = field.clearButton;
10308
11072
  }
@@ -10365,6 +11129,10 @@ function mapFieldDefinitionToMetadata(field) {
10365
11129
  validators.uniqueValidator = field.uniqueValidator;
10366
11130
  if (field.uniqueMessage !== undefined)
10367
11131
  validators.uniqueMessage = field.uniqueMessage;
11132
+ if (field.customValidator !== undefined)
11133
+ validators.customValidator = field.customValidator;
11134
+ if (field.asyncValidator !== undefined)
11135
+ validators.asyncValidator = field.asyncValidator;
10368
11136
  // Conditional: suportar função direta e/ou regras compostas
10369
11137
  if (field.conditionalValidation !== undefined) {
10370
11138
  const cv = field.conditionalValidation;
@@ -10783,265 +11551,6 @@ function resolveBuiltinPresets(locale, dateAdapter, opts = {}) {
10783
11551
  return presets;
10784
11552
  }
10785
11553
 
10786
- const INLINE_FILTER_CONTROL_TYPES = Object.freeze({
10787
- SELECT: 'filter-select-inline',
10788
- SEARCHABLE_SELECT: 'filter-searchable-select-inline',
10789
- ASYNC_SELECT: 'filter-async-select-inline',
10790
- ENTITY_LOOKUP: 'filter-entity-lookup-inline',
10791
- AUTOCOMPLETE: 'filter-autocomplete-inline',
10792
- NUMBER: 'filter-number-inline',
10793
- CURRENCY: 'filter-currency-inline',
10794
- CURRENCY_RANGE: 'filter-currency-range-inline',
10795
- MULTI_SELECT: 'filter-multiselect-inline',
10796
- INPUT: 'filter-input-inline',
10797
- TOGGLE: 'filter-toggle-inline',
10798
- RANGE: 'filter-range-inline',
10799
- DATE: 'filter-date-inline',
10800
- DATE_RANGE: 'filter-date-range-inline',
10801
- TIME: 'filter-time-inline',
10802
- TIME_RANGE: 'filter-time-range-inline',
10803
- TREE_SELECT: 'filter-tree-select-inline',
10804
- RATING: 'filter-rating-inline',
10805
- DISTANCE_RADIUS: 'filter-distance-radius-inline',
10806
- PIPELINE_STATUS: 'filter-pipeline-status-inline',
10807
- SCORE_PRIORITY: 'filter-score-priority-inline',
10808
- RELATIVE_PERIOD: 'filter-relative-period-inline',
10809
- SENTIMENT: 'filter-sentiment-inline',
10810
- COLOR_LABEL: 'filter-color-label-inline',
10811
- });
10812
- const INLINE_FILTER_CONTROL_TYPE_VALUES = Object.freeze(Object.values(INLINE_FILTER_CONTROL_TYPES));
10813
- const INLINE_FILTER_CONTROL_TYPE_SET = new Set(INLINE_FILTER_CONTROL_TYPE_VALUES);
10814
- function normalizeInlineControlTypeToken(value) {
10815
- return String(value || '')
10816
- .trim()
10817
- .toLowerCase()
10818
- .replace(/[-_\s]/g, '');
10819
- }
10820
- const INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE_MAP = {
10821
- filterselectinline: INLINE_FILTER_CONTROL_TYPES.SELECT,
10822
- filterinlineselect: INLINE_FILTER_CONTROL_TYPES.SELECT,
10823
- pdxfilterinlineselect: INLINE_FILTER_CONTROL_TYPES.SELECT,
10824
- filtersearchableselectinline: INLINE_FILTER_CONTROL_TYPES.SEARCHABLE_SELECT,
10825
- filterinlinesearchableselect: INLINE_FILTER_CONTROL_TYPES.SEARCHABLE_SELECT,
10826
- pdxfilterinlinesearchableselect: INLINE_FILTER_CONTROL_TYPES.SEARCHABLE_SELECT,
10827
- filterasyncselectinline: INLINE_FILTER_CONTROL_TYPES.ASYNC_SELECT,
10828
- filterinlineasyncselect: INLINE_FILTER_CONTROL_TYPES.ASYNC_SELECT,
10829
- pdxfilterinlineasyncselect: INLINE_FILTER_CONTROL_TYPES.ASYNC_SELECT,
10830
- filterentitylookupinline: INLINE_FILTER_CONTROL_TYPES.ENTITY_LOOKUP,
10831
- filterinlineentitylookup: INLINE_FILTER_CONTROL_TYPES.ENTITY_LOOKUP,
10832
- entitylookupinline: INLINE_FILTER_CONTROL_TYPES.ENTITY_LOOKUP,
10833
- entitylookup: INLINE_FILTER_CONTROL_TYPES.ENTITY_LOOKUP,
10834
- pdxfilterinlineentitylookup: INLINE_FILTER_CONTROL_TYPES.ENTITY_LOOKUP,
10835
- filterautocompleteinline: INLINE_FILTER_CONTROL_TYPES.AUTOCOMPLETE,
10836
- filterinlineautocomplete: INLINE_FILTER_CONTROL_TYPES.AUTOCOMPLETE,
10837
- pdxfilterinlineautocomplete: INLINE_FILTER_CONTROL_TYPES.AUTOCOMPLETE,
10838
- filternumberinline: INLINE_FILTER_CONTROL_TYPES.NUMBER,
10839
- filterinlinenumber: INLINE_FILTER_CONTROL_TYPES.NUMBER,
10840
- pdxfilterinlinenumber: INLINE_FILTER_CONTROL_TYPES.NUMBER,
10841
- filtercurrencyinline: INLINE_FILTER_CONTROL_TYPES.CURRENCY,
10842
- filterinlinecurrency: INLINE_FILTER_CONTROL_TYPES.CURRENCY,
10843
- pdxfilterinlinecurrency: INLINE_FILTER_CONTROL_TYPES.CURRENCY,
10844
- filtercurrencyrangeinline: INLINE_FILTER_CONTROL_TYPES.CURRENCY_RANGE,
10845
- filterinlinecurrencyrange: INLINE_FILTER_CONTROL_TYPES.CURRENCY_RANGE,
10846
- pdxfilterinlinecurrencyrange: INLINE_FILTER_CONTROL_TYPES.CURRENCY_RANGE,
10847
- filtermultiselectinline: INLINE_FILTER_CONTROL_TYPES.MULTI_SELECT,
10848
- filterinlinemultiselect: INLINE_FILTER_CONTROL_TYPES.MULTI_SELECT,
10849
- pdxfilterinlinemultiselect: INLINE_FILTER_CONTROL_TYPES.MULTI_SELECT,
10850
- filterinputinline: INLINE_FILTER_CONTROL_TYPES.INPUT,
10851
- filterinlineinput: INLINE_FILTER_CONTROL_TYPES.INPUT,
10852
- pdxfilterinlineinput: INLINE_FILTER_CONTROL_TYPES.INPUT,
10853
- filtertoggleinline: INLINE_FILTER_CONTROL_TYPES.TOGGLE,
10854
- filterinlinetoggle: INLINE_FILTER_CONTROL_TYPES.TOGGLE,
10855
- pdxfilterinlinetoggle: INLINE_FILTER_CONTROL_TYPES.TOGGLE,
10856
- filterrangeinline: INLINE_FILTER_CONTROL_TYPES.RANGE,
10857
- filterinlinerangeslider: INLINE_FILTER_CONTROL_TYPES.RANGE,
10858
- pdxfilterinlinerangeslider: INLINE_FILTER_CONTROL_TYPES.RANGE,
10859
- filterdateinline: INLINE_FILTER_CONTROL_TYPES.DATE,
10860
- filterinlinedate: INLINE_FILTER_CONTROL_TYPES.DATE,
10861
- pdxfilterinlinedate: INLINE_FILTER_CONTROL_TYPES.DATE,
10862
- filterdaterangeinline: INLINE_FILTER_CONTROL_TYPES.DATE_RANGE,
10863
- filterinlinedaterange: INLINE_FILTER_CONTROL_TYPES.DATE_RANGE,
10864
- pdxfilterinlinedaterange: INLINE_FILTER_CONTROL_TYPES.DATE_RANGE,
10865
- filtertimeinline: INLINE_FILTER_CONTROL_TYPES.TIME,
10866
- filterinlinetime: INLINE_FILTER_CONTROL_TYPES.TIME,
10867
- pdxfilterinlinetime: INLINE_FILTER_CONTROL_TYPES.TIME,
10868
- filtertimerangeinline: INLINE_FILTER_CONTROL_TYPES.TIME_RANGE,
10869
- filterinlinetimerange: INLINE_FILTER_CONTROL_TYPES.TIME_RANGE,
10870
- pdxfilterinlinetimerange: INLINE_FILTER_CONTROL_TYPES.TIME_RANGE,
10871
- filtertreeselectinline: INLINE_FILTER_CONTROL_TYPES.TREE_SELECT,
10872
- filterinlinetreeselect: INLINE_FILTER_CONTROL_TYPES.TREE_SELECT,
10873
- pdxfilterinlinetreeselect: INLINE_FILTER_CONTROL_TYPES.TREE_SELECT,
10874
- filterratinginline: INLINE_FILTER_CONTROL_TYPES.RATING,
10875
- filterinlinerating: INLINE_FILTER_CONTROL_TYPES.RATING,
10876
- pdxfilterinlinerating: INLINE_FILTER_CONTROL_TYPES.RATING,
10877
- filterdistanceradiusinline: INLINE_FILTER_CONTROL_TYPES.DISTANCE_RADIUS,
10878
- filterinlinedistanceradius: INLINE_FILTER_CONTROL_TYPES.DISTANCE_RADIUS,
10879
- pdxfilterinlinedistanceradius: INLINE_FILTER_CONTROL_TYPES.DISTANCE_RADIUS,
10880
- filterpipelinestatusinline: INLINE_FILTER_CONTROL_TYPES.PIPELINE_STATUS,
10881
- filterinlinepipelinestatus: INLINE_FILTER_CONTROL_TYPES.PIPELINE_STATUS,
10882
- pdxfilterinlinepipelinestatus: INLINE_FILTER_CONTROL_TYPES.PIPELINE_STATUS,
10883
- filterscorepriorityinline: INLINE_FILTER_CONTROL_TYPES.SCORE_PRIORITY,
10884
- filterinlinescorepriority: INLINE_FILTER_CONTROL_TYPES.SCORE_PRIORITY,
10885
- pdxfilterinlinescorepriority: INLINE_FILTER_CONTROL_TYPES.SCORE_PRIORITY,
10886
- filterrelativeperiodinline: INLINE_FILTER_CONTROL_TYPES.RELATIVE_PERIOD,
10887
- filterinlinerelativeperiod: INLINE_FILTER_CONTROL_TYPES.RELATIVE_PERIOD,
10888
- pdxfilterinlinerelativeperiod: INLINE_FILTER_CONTROL_TYPES.RELATIVE_PERIOD,
10889
- filtersentimentinline: INLINE_FILTER_CONTROL_TYPES.SENTIMENT,
10890
- filterinlinesentiment: INLINE_FILTER_CONTROL_TYPES.SENTIMENT,
10891
- pdxfilterinlinesentiment: INLINE_FILTER_CONTROL_TYPES.SENTIMENT,
10892
- filtercolorlabelinline: INLINE_FILTER_CONTROL_TYPES.COLOR_LABEL,
10893
- filterinlinecolorlabel: INLINE_FILTER_CONTROL_TYPES.COLOR_LABEL,
10894
- pdxfilterinlinecolorlabel: INLINE_FILTER_CONTROL_TYPES.COLOR_LABEL,
10895
- };
10896
- const INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE = Object.freeze(INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE_MAP);
10897
- const INLINE_FILTER_ALIAS_TOKENS = Object.freeze(Object.keys(INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE));
10898
- const INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE_MAP = {
10899
- filterselectinline: FieldControlType.SELECT,
10900
- filterinlineselect: FieldControlType.SELECT,
10901
- pdxfilterinlineselect: FieldControlType.SELECT,
10902
- filtermultiselectinline: FieldControlType.MULTI_SELECT,
10903
- filterinlinemultiselect: FieldControlType.MULTI_SELECT,
10904
- pdxfilterinlinemultiselect: FieldControlType.MULTI_SELECT,
10905
- filterinputinline: FieldControlType.INPUT,
10906
- filterinlineinput: FieldControlType.INPUT,
10907
- pdxfilterinlineinput: FieldControlType.INPUT,
10908
- filtertoggleinline: FieldControlType.TOGGLE,
10909
- filterinlinetoggle: FieldControlType.TOGGLE,
10910
- pdxfilterinlinetoggle: FieldControlType.TOGGLE,
10911
- filterrangeinline: FieldControlType.RANGE_SLIDER,
10912
- filterinlinerangeslider: FieldControlType.RANGE_SLIDER,
10913
- pdxfilterinlinerangeslider: FieldControlType.RANGE_SLIDER,
10914
- filtersearchableselectinline: FieldControlType.SEARCHABLE_SELECT,
10915
- filterinlinesearchableselect: FieldControlType.SEARCHABLE_SELECT,
10916
- pdxfilterinlinesearchableselect: FieldControlType.SEARCHABLE_SELECT,
10917
- filterasyncselectinline: FieldControlType.ASYNC_SELECT,
10918
- filterinlineasyncselect: FieldControlType.ASYNC_SELECT,
10919
- pdxfilterinlineasyncselect: FieldControlType.ASYNC_SELECT,
10920
- filterentitylookupinline: FieldControlType.ASYNC_SELECT,
10921
- filterinlineentitylookup: FieldControlType.ASYNC_SELECT,
10922
- entitylookupinline: FieldControlType.ASYNC_SELECT,
10923
- entitylookup: FieldControlType.ASYNC_SELECT,
10924
- pdxfilterinlineentitylookup: FieldControlType.ASYNC_SELECT,
10925
- filterautocompleteinline: FieldControlType.AUTO_COMPLETE,
10926
- filterinlineautocomplete: FieldControlType.AUTO_COMPLETE,
10927
- pdxfilterinlineautocomplete: FieldControlType.AUTO_COMPLETE,
10928
- filternumberinline: FieldControlType.NUMERIC_TEXT_BOX,
10929
- filterinlinenumber: FieldControlType.NUMERIC_TEXT_BOX,
10930
- pdxfilterinlinenumber: FieldControlType.NUMERIC_TEXT_BOX,
10931
- filtercurrencyinline: FieldControlType.CURRENCY_INPUT,
10932
- filterinlinecurrency: FieldControlType.CURRENCY_INPUT,
10933
- pdxfilterinlinecurrency: FieldControlType.CURRENCY_INPUT,
10934
- filtercurrencyrangeinline: FieldControlType.PRICE_RANGE,
10935
- filterinlinecurrencyrange: FieldControlType.PRICE_RANGE,
10936
- pdxfilterinlinecurrencyrange: FieldControlType.PRICE_RANGE,
10937
- filterdateinline: FieldControlType.DATE_PICKER,
10938
- filterinlinedate: FieldControlType.DATE_PICKER,
10939
- pdxfilterinlinedate: FieldControlType.DATE_PICKER,
10940
- filterdaterangeinline: FieldControlType.DATE_RANGE,
10941
- filterinlinedaterange: FieldControlType.DATE_RANGE,
10942
- pdxfilterinlinedaterange: FieldControlType.DATE_RANGE,
10943
- filtertimeinline: FieldControlType.TIME_PICKER,
10944
- filterinlinetime: FieldControlType.TIME_PICKER,
10945
- pdxfilterinlinetime: FieldControlType.TIME_PICKER,
10946
- filtertimerangeinline: FieldControlType.TIME_RANGE,
10947
- filterinlinetimerange: FieldControlType.TIME_RANGE,
10948
- pdxfilterinlinetimerange: FieldControlType.TIME_RANGE,
10949
- filtertreeselectinline: FieldControlType.TREE_SELECT,
10950
- filterinlinetreeselect: FieldControlType.TREE_SELECT,
10951
- pdxfilterinlinetreeselect: FieldControlType.TREE_SELECT,
10952
- };
10953
- const INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE = Object.freeze(INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE_MAP);
10954
- function resolveInlineFilterControlTypeAlias(value) {
10955
- const token = normalizeInlineControlTypeToken(value);
10956
- if (!token)
10957
- return undefined;
10958
- return INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE[token];
10959
- }
10960
- function resolveInlineFilterAliasToBaseControlType(value) {
10961
- const token = normalizeInlineControlTypeToken(value);
10962
- if (!token)
10963
- return undefined;
10964
- return INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE[token];
10965
- }
10966
- function isInlineFilterControlType(value) {
10967
- return INLINE_FILTER_CONTROL_TYPE_SET.has(String(value || '').trim());
10968
- }
10969
-
10970
- function toUpperSnakeCase(raw) {
10971
- return raw
10972
- .trim()
10973
- .replace(/([a-z0-9])([A-Z])/g, '$1_$2')
10974
- .replace(/[-\s]+/g, '_')
10975
- .replace(/__+/g, '_')
10976
- .toUpperCase();
10977
- }
10978
- function normalizeControlTypeToken(value) {
10979
- return String(value || '')
10980
- .trim()
10981
- .toLowerCase()
10982
- .replace(/[-_\s]/g, '');
10983
- }
10984
- const CONTROL_TYPE_TOKEN_TO_KEY = Object.entries(FieldControlType).reduce((acc, [key, controlTypeValue]) => {
10985
- acc[normalizeControlTypeToken(key)] = key;
10986
- acc[normalizeControlTypeToken(controlTypeValue)] = key;
10987
- return acc;
10988
- }, {});
10989
- const ALIAS_TOKEN_TO_CONTROL_TYPE = {
10990
- // Legacy/common synonyms
10991
- searchable: FieldControlType.SEARCHABLE_SELECT,
10992
- searchableinput: FieldControlType.SEARCHABLE_SELECT,
10993
- searchableselect: FieldControlType.SEARCHABLE_SELECT,
10994
- materialsearchableselect: FieldControlType.SEARCHABLE_SELECT,
10995
- asyncselect: FieldControlType.ASYNC_SELECT,
10996
- materialasyncselect: FieldControlType.ASYNC_SELECT,
10997
- autocomplete: FieldControlType.AUTO_COMPLETE,
10998
- multiselect: FieldControlType.MULTI_SELECT,
10999
- multiselecttree: FieldControlType.MULTI_SELECT_TREE,
11000
- treeselect: FieldControlType.TREE_SELECT,
11001
- datepicker: FieldControlType.DATE_PICKER,
11002
- daterange: FieldControlType.DATE_RANGE,
11003
- datetime: FieldControlType.DATETIME_LOCAL_INPUT,
11004
- timepicker: FieldControlType.TIME_PICKER,
11005
- timerange: FieldControlType.TIME_RANGE,
11006
- pricerange: FieldControlType.PRICE_RANGE,
11007
- rangeslider: FieldControlType.RANGE_SLIDER,
11008
- number: FieldControlType.NUMERIC_TEXT_BOX,
11009
- numeric: FieldControlType.NUMERIC_TEXT_BOX,
11010
- currencyinput: FieldControlType.CURRENCY_INPUT,
11011
- switch: FieldControlType.TOGGLE,
11012
- radiogroup: FieldControlType.RADIO,
11013
- checkboxgroup: FieldControlType.CHECKBOX,
11014
- chiplist: FieldControlType.CHIP_LIST,
11015
- chipinput: FieldControlType.CHIP_INPUT,
11016
- searchinput: FieldControlType.SEARCH_INPUT,
11017
- };
11018
- function normalizeControlTypeKey(value) {
11019
- const token = normalizeControlTypeToken(value);
11020
- if (!token)
11021
- return '';
11022
- const resolvedKey = CONTROL_TYPE_TOKEN_TO_KEY[token];
11023
- if (resolvedKey)
11024
- return resolvedKey;
11025
- return toUpperSnakeCase(String(value || ''));
11026
- }
11027
- function resolveControlTypeAlias(value, fallback = FieldControlType.INPUT) {
11028
- const raw = String(value || '').trim();
11029
- if (!raw)
11030
- return fallback;
11031
- const token = normalizeControlTypeToken(raw);
11032
- const inlineAliased = INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE[token];
11033
- if (inlineAliased)
11034
- return inlineAliased;
11035
- const aliased = ALIAS_TOKEN_TO_CONTROL_TYPE[token];
11036
- if (aliased)
11037
- return aliased;
11038
- const resolvedKey = CONTROL_TYPE_TOKEN_TO_KEY[token];
11039
- if (resolvedKey) {
11040
- return FieldControlType[resolvedKey];
11041
- }
11042
- return raw;
11043
- }
11044
-
11045
11554
  const dialogBaseFields = [
11046
11555
  { key: 'message', label: 'Mensagem', type: 'textarea', rows: 2, placeholder: 'Texto principal' },
11047
11556
  { key: 'title', label: 'Título', type: 'text', placeholder: 'Título do diálogo' },
@@ -17110,5 +17619,5 @@ function provideHookWhitelist(allowed) {
17110
17619
  * Generated bundle index. Do not edit.
17111
17620
  */
17112
17621
 
17113
- export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, ApiConfigStorage, ApiEndpoint, BUILTIN_SHELL_PRESETS, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ConnectionManagerService, ConsoleLoggerSink, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_TABLE_CONFIG, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DynamicFormService, DynamicGridPageComponent, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG$1 as GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_CATALOG as GLOBAL_ACTION_SPEC_CATALOG, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_ALIAS_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_ALIAS_TOKEN_TO_CONTROL_TYPE, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisI18nService, PraxisIconDirective, PraxisIconPickerComponent, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRichTextBlockComponent, PraxisUserContextSummaryComponent, RULE_PROPERTY_SCHEMA, RemoteConfigStorage, ResourceQuickConnectComponent, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildSchemaId, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getGlobalActionCatalog, getGlobalActionUiSchema, getReferencedFieldMetadata, getTextTransformer, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isInlineFilterControlType, isRangeValidForFilter, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldConstraints, normalizeFormConfig, normalizeFormMetadata, normalizePath, normalizeStart, normalizeUnknownError, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisDynamicPageMetadata, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, removeDiacritics, reportTelemetryHookFactory, requiredCheckedValidator, resolveBuiltinPresets, resolveControlTypeAlias, resolveHidden, resolveInlineFilterAliasToBaseControlType, resolveInlineFilterControlTypeAlias, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolveSpan, slugify, stripMasksHook, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, trim, uniqueAsyncValidator, urlValidator, withMessage, withPraxisHttpLoading };
17622
+ export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, ApiConfigStorage, ApiEndpoint, BUILTIN_SHELL_PRESETS, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ConnectionManagerService, ConsoleLoggerSink, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_TABLE_CONFIG, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DynamicFormService, DynamicGridPageComponent, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG$1 as GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_CATALOG as GLOBAL_ACTION_SPEC_CATALOG, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisI18nService, PraxisIconDirective, PraxisIconPickerComponent, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRichTextBlockComponent, PraxisUserContextSummaryComponent, RULE_PROPERTY_SCHEMA, RemoteConfigStorage, ResourceQuickConnectComponent, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildSchemaId, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getGlobalActionCatalog, getGlobalActionUiSchema, getReferencedFieldMetadata, getTextTransformer, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isInlineFilterControlType, isRangeValidForFilter, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldConstraints, normalizeFormConfig, normalizeFormMetadata, normalizePath, normalizeStart, normalizeUnknownError, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisDynamicPageMetadata, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, removeDiacritics, reportTelemetryHookFactory, requiredCheckedValidator, resolveBuiltinPresets, resolveControlTypeAlias, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolveSpan, slugify, stripMasksHook, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, trim, uniqueAsyncValidator, urlValidator, withMessage, withPraxisHttpLoading };
17114
17623
  //# sourceMappingURL=praxisui-core.mjs.map