@seedgrid/fe-components 2026.11.2 → 2026.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/dist/ai/seedgrid-components.manifest.json +350 -65
  2. package/dist/buttons/SgButton.d.ts +6 -2
  3. package/dist/buttons/SgButton.d.ts.map +1 -1
  4. package/dist/buttons/SgButton.js +2 -2
  5. package/dist/buttons/SgButton.meta.js +3 -3
  6. package/dist/buttons/SgFloatActionButton.d.ts +2 -2
  7. package/dist/buttons/SgFloatActionButton.d.ts.map +1 -1
  8. package/dist/buttons/SgFloatActionButton.js +7 -7
  9. package/dist/buttons/SgFloatActionButton.meta.js +2 -2
  10. package/dist/buttons/SgSplitButton.d.ts +2 -2
  11. package/dist/buttons/SgSplitButton.d.ts.map +1 -1
  12. package/dist/buttons/SgSplitButton.js +4 -4
  13. package/dist/buttons/SgSplitButton.meta.js +3 -3
  14. package/dist/commons/SgAvatar.d.ts +2 -2
  15. package/dist/commons/SgAvatar.d.ts.map +1 -1
  16. package/dist/commons/SgAvatar.js +3 -3
  17. package/dist/commons/SgBadge.d.ts +1 -1
  18. package/dist/commons/SgBadge.d.ts.map +1 -1
  19. package/dist/commons/SgBadge.js +3 -3
  20. package/dist/gadgets/calendar/SgCalendar.d.ts +6 -0
  21. package/dist/gadgets/calendar/SgCalendar.d.ts.map +1 -1
  22. package/dist/gadgets/calendar/SgCalendar.js +9 -5
  23. package/dist/gadgets/calendar/SgCalendar.meta.d.ts.map +1 -1
  24. package/dist/gadgets/calendar/SgCalendar.meta.js +1 -0
  25. package/dist/generated/compiledStyles.d.ts +1 -1
  26. package/dist/generated/compiledStyles.d.ts.map +1 -1
  27. package/dist/generated/compiledStyles.js +1 -1
  28. package/dist/i18n/en-US.d.ts.map +1 -1
  29. package/dist/i18n/en-US.js +26 -0
  30. package/dist/i18n/es.d.ts.map +1 -1
  31. package/dist/i18n/es.js +26 -0
  32. package/dist/i18n/fr.d.ts.map +1 -1
  33. package/dist/i18n/fr.js +26 -0
  34. package/dist/i18n/pt-BR.d.ts.map +1 -1
  35. package/dist/i18n/pt-BR.js +26 -0
  36. package/dist/i18n/pt-PT.d.ts.map +1 -1
  37. package/dist/i18n/pt-PT.js +26 -0
  38. package/dist/index.d.ts +3 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +2 -1
  41. package/dist/inputs/SgAutocomplete.d.ts +1 -1
  42. package/dist/inputs/SgAutocomplete.d.ts.map +1 -1
  43. package/dist/inputs/SgAutocomplete.js +3 -3
  44. package/dist/inputs/SgCameraCapture.d.ts +1 -1
  45. package/dist/inputs/SgCameraCapture.d.ts.map +1 -1
  46. package/dist/inputs/SgCameraCapture.js +4 -4
  47. package/dist/inputs/SgCameraCapture.meta.js +1 -1
  48. package/dist/inputs/SgCheckboxGroup.d.ts +2 -2
  49. package/dist/inputs/SgCheckboxGroup.d.ts.map +1 -1
  50. package/dist/inputs/SgCheckboxGroup.js +12 -12
  51. package/dist/inputs/SgCombobox.js +5 -5
  52. package/dist/inputs/SgDatatable.d.ts +7 -0
  53. package/dist/inputs/SgDatatable.d.ts.map +1 -1
  54. package/dist/inputs/SgDatatable.js +33 -21
  55. package/dist/inputs/SgDatatable.meta.d.ts.map +1 -1
  56. package/dist/inputs/SgDatatable.meta.js +5 -1
  57. package/dist/inputs/SgFileUpload.d.ts +1 -1
  58. package/dist/inputs/SgFileUpload.d.ts.map +1 -1
  59. package/dist/inputs/SgFileUpload.js +2 -2
  60. package/dist/inputs/SgFileUpload.meta.js +1 -1
  61. package/dist/inputs/SgImageUpload.meta.js +1 -1
  62. package/dist/inputs/SgInputCurrency.d.ts.map +1 -1
  63. package/dist/inputs/SgInputCurrency.js +6 -4
  64. package/dist/inputs/SgInputDate.d.ts.map +1 -1
  65. package/dist/inputs/SgInputDate.js +3 -4
  66. package/dist/inputs/SgInputDateTime.d.ts.map +1 -1
  67. package/dist/inputs/SgInputDateTime.js +11 -0
  68. package/dist/inputs/SgInputNumber.d.ts.map +1 -1
  69. package/dist/inputs/SgInputNumber.js +6 -4
  70. package/dist/inputs/SgInputText.d.ts.map +1 -1
  71. package/dist/inputs/SgInputText.js +6 -4
  72. package/dist/inputs/SgInputTextArea.d.ts.map +1 -1
  73. package/dist/inputs/SgInputTextArea.js +4 -2
  74. package/dist/inputs/SgMultiSelect.meta.js +1 -1
  75. package/dist/inputs/SgMultiSelectChips.meta.js +1 -1
  76. package/dist/inputs/SgMultiSelectDropdown.js +1 -1
  77. package/dist/inputs/SgOrderList.d.ts +3 -3
  78. package/dist/inputs/SgOrderList.d.ts.map +1 -1
  79. package/dist/inputs/SgOrderList.js +13 -13
  80. package/dist/inputs/SgOrderList.meta.js +1 -1
  81. package/dist/inputs/SgPeriodSelector.d.ts +1 -1
  82. package/dist/inputs/SgPeriodSelector.d.ts.map +1 -1
  83. package/dist/inputs/SgPeriodSelector.js +3 -3
  84. package/dist/inputs/SgPickList.d.ts +3 -3
  85. package/dist/inputs/SgPickList.d.ts.map +1 -1
  86. package/dist/inputs/SgPickList.js +28 -28
  87. package/dist/inputs/SgPickList.meta.js +1 -1
  88. package/dist/inputs/SgRadioGroup.d.ts +2 -2
  89. package/dist/inputs/SgRadioGroup.d.ts.map +1 -1
  90. package/dist/inputs/SgRadioGroup.js +5 -5
  91. package/dist/inputs/SgRating.d.ts +1 -1
  92. package/dist/inputs/SgRating.d.ts.map +1 -1
  93. package/dist/inputs/SgRating.js +7 -7
  94. package/dist/inputs/SgRating.meta.js +1 -1
  95. package/dist/inputs/SgSlider.d.ts +1 -1
  96. package/dist/inputs/SgSlider.d.ts.map +1 -1
  97. package/dist/inputs/SgSlider.js +3 -3
  98. package/dist/inputs/SgSlider.meta.js +1 -1
  99. package/dist/inputs/SgStepperInput.d.ts +2 -2
  100. package/dist/inputs/SgStepperInput.d.ts.map +1 -1
  101. package/dist/inputs/SgStepperInput.js +4 -4
  102. package/dist/inputs/SgStepperInput.meta.js +1 -1
  103. package/dist/inputs/SgTextEditor.d.ts +1 -1
  104. package/dist/inputs/SgTextEditor.d.ts.map +1 -1
  105. package/dist/inputs/SgTextEditor.js +14 -14
  106. package/dist/inputs/SgToggleSwitch.meta.js +1 -1
  107. package/dist/inputs/SgYearPartSelector.d.ts +1 -1
  108. package/dist/inputs/SgYearPartSelector.d.ts.map +1 -1
  109. package/dist/inputs/SgYearPartSelector.js +1 -2
  110. package/dist/inputs/SgYearPartSelector.meta.js +2 -2
  111. package/dist/inputs/dateTimeLogic.d.ts +7 -1
  112. package/dist/inputs/dateTimeLogic.d.ts.map +1 -1
  113. package/dist/inputs/dateTimeLogic.js +17 -4
  114. package/dist/inputs/useSgMultiSelect.d.ts +1 -1
  115. package/dist/inputs/useSgMultiSelect.d.ts.map +1 -1
  116. package/dist/inputs/useSgMultiSelect.js +1 -1
  117. package/dist/layout/SgAccordion.d.ts +1 -1
  118. package/dist/layout/SgAccordion.d.ts.map +1 -1
  119. package/dist/layout/SgAccordion.js +3 -3
  120. package/dist/layout/SgBreadcrumb.d.ts +1 -1
  121. package/dist/layout/SgBreadcrumb.d.ts.map +1 -1
  122. package/dist/layout/SgBreadcrumb.js +1 -1
  123. package/dist/layout/SgCard.d.ts +1 -1
  124. package/dist/layout/SgCard.d.ts.map +1 -1
  125. package/dist/layout/SgCard.js +14 -14
  126. package/dist/layout/SgMenu.d.ts +1 -1
  127. package/dist/layout/SgMenu.d.ts.map +1 -1
  128. package/dist/layout/SgMenu.js +15 -15
  129. package/dist/layout/SgPageControl.d.ts +1 -1
  130. package/dist/layout/SgPageControl.d.ts.map +1 -1
  131. package/dist/layout/SgPageControl.js +4 -4
  132. package/dist/layout/SgPageControlPage.meta.js +2 -2
  133. package/dist/layout/SgToolBar.d.ts +1 -1
  134. package/dist/layout/SgToolBar.d.ts.map +1 -1
  135. package/dist/layout/SgToolBar.js +4 -4
  136. package/dist/layout/SgToolbarIconButton.meta.js +2 -2
  137. package/dist/layout/SgTreeView.d.ts +4 -4
  138. package/dist/layout/SgTreeView.d.ts.map +1 -1
  139. package/dist/layout/SgTreeView.js +6 -6
  140. package/dist/menus/SgDockMenu.d.ts +1 -1
  141. package/dist/menus/SgDockMenu.d.ts.map +1 -1
  142. package/dist/menus/SgDockMenu.js +4 -4
  143. package/dist/notifications/SgNotificationBell.d.ts +51 -0
  144. package/dist/notifications/SgNotificationBell.d.ts.map +1 -0
  145. package/dist/notifications/SgNotificationBell.js +348 -0
  146. package/dist/notifications/SgNotificationBell.meta.d.ts +4 -0
  147. package/dist/notifications/SgNotificationBell.meta.d.ts.map +1 -0
  148. package/dist/notifications/SgNotificationBell.meta.js +75 -0
  149. package/dist/notifications/notificationBellLogic.d.ts +148 -0
  150. package/dist/notifications/notificationBellLogic.d.ts.map +1 -0
  151. package/dist/notifications/notificationBellLogic.js +244 -0
  152. package/dist/overlay/SgConfirmationDialog.d.ts +1 -1
  153. package/dist/overlay/SgConfirmationDialog.d.ts.map +1 -1
  154. package/dist/overlay/SgConfirmationDialog.js +1 -1
  155. package/dist/overlay/SgPopup.d.ts +1 -1
  156. package/dist/overlay/SgPopup.d.ts.map +1 -1
  157. package/dist/overlay/SgPopup.js +1 -1
  158. package/dist/realtime/SgRealtimeProvider.d.ts +5 -0
  159. package/dist/realtime/SgRealtimeProvider.d.ts.map +1 -1
  160. package/dist/realtime/SgRealtimeProvider.js +31 -8
  161. package/dist/sandbox.cjs +64 -64
  162. package/dist/style.css +1 -1
  163. package/dist/wizard/SgWizard.d.ts +7 -0
  164. package/dist/wizard/SgWizard.d.ts.map +1 -1
  165. package/dist/wizard/SgWizard.js +11 -2
  166. package/dist/wizard/SgWizard.meta.d.ts.map +1 -1
  167. package/dist/wizard/SgWizard.meta.js +1 -0
  168. package/package.json +3 -3
@@ -4,7 +4,7 @@ import { type SgGroupBoxProps } from "../layout/SgGroupBox";
4
4
  export interface SgOrderListItem {
5
5
  label: string;
6
6
  value: string | number;
7
- disabled?: boolean;
7
+ enabled?: boolean;
8
8
  icon?: React.ReactNode;
9
9
  data?: unknown;
10
10
  }
@@ -34,13 +34,13 @@ export interface SgOrderListProps extends RhfFieldProps {
34
34
  showControls?: boolean;
35
35
  controlsPosition?: SgOrderListControlsPosition;
36
36
  draggable?: boolean;
37
- disabled?: boolean;
37
+ enabled?: boolean;
38
38
  readOnly?: boolean;
39
39
  emptyMessage?: string;
40
40
  itemTemplate?: (item: SgOrderListItem, state: {
41
41
  index: number;
42
42
  selected: boolean;
43
- disabled: boolean;
43
+ enabled: boolean;
44
44
  }) => React.ReactNode;
45
45
  className?: string;
46
46
  style?: React.CSSProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"SgOrderList.d.ts","sourceRoot":"","sources":["../../src/inputs/SgOrderList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE/D,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGxE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,eAAe,EAAE,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,KAC3D,KAAK,CAAC,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3F;AAggBD,eAAO,MAAM,WAAW,yFA4BtB,CAAC"}
1
+ {"version":3,"file":"SgOrderList.d.ts","sourceRoot":"","sources":["../../src/inputs/SgOrderList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE/D,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGxE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,eAAe,EAAE,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,KAC1D,KAAK,CAAC,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3F;AAggBD,eAAO,MAAM,WAAW,yFA4BtB,CAAC"}
@@ -33,7 +33,7 @@ function isSameOrder(a, b) {
33
33
  function getMovableSelection(items, selection) {
34
34
  const selectedValues = new Set(selection);
35
35
  return new Set(items
36
- .filter((item) => selectedValues.has(item.value) && !item.disabled)
36
+ .filter((item) => selectedValues.has(item.value) && item.enabled !== false)
37
37
  .map((item) => item.value));
38
38
  }
39
39
  function moveSelectionTop(items, selected) {
@@ -111,7 +111,7 @@ function resolveMessage(translated, key, fallback) {
111
111
  }
112
112
  function SgOrderListBase(props, imperativeRef) {
113
113
  const i18n = useComponentsI18n();
114
- const { id, title, source, value: controlledValue, onChange, selectedValues: controlledSelection, onSelectionChange, selectionMode = "multiple", showControls = true, controlsPosition = "left", draggable = true, disabled = false, readOnly = false, emptyMessage, itemTemplate, className = "", style, listClassName = "", itemClassName = "", groupBoxProps = {}, error } = props;
114
+ const { id, title, source, value: controlledValue, onChange, selectedValues: controlledSelection, onSelectionChange, selectionMode = "multiple", showControls = true, controlsPosition = "left", draggable = true, enabled = true, readOnly = false, emptyMessage, itemTemplate, className = "", style, listClassName = "", itemClassName = "", groupBoxProps = {}, error } = props;
115
115
  const [internalItems, setInternalItems] = React.useState(() => controlledValue ?? source);
116
116
  const [internalSelection, setInternalSelection] = React.useState(() => uniqueValues(controlledSelection ?? []));
117
117
  const [anchorValue, setAnchorValue] = React.useState(null);
@@ -140,7 +140,7 @@ function SgOrderListBase(props, imperativeRef) {
140
140
  return isSameValueList(previous, next) ? previous : next;
141
141
  });
142
142
  }, [currentItems, isSelectionControlled]);
143
- const canInteract = !disabled && !readOnly;
143
+ const canInteract = enabled && !readOnly;
144
144
  const allowDrag = draggable && canInteract;
145
145
  const movableSelection = React.useMemo(() => getMovableSelection(currentItems, currentSelection), [currentItems, currentSelection]);
146
146
  const commitItems = React.useCallback((nextItems) => {
@@ -181,7 +181,7 @@ function SgOrderListBase(props, imperativeRef) {
181
181
  clearSelection: () => commitSelection([])
182
182
  }), [applyMove, commitItems, commitSelection, currentItems, currentSelection]);
183
183
  const handleItemSelection = React.useCallback((event, item, index) => {
184
- if (!canInteract || item.disabled)
184
+ if (!canInteract || (item.enabled === false))
185
185
  return;
186
186
  const itemValue = item.value;
187
187
  if (selectionMode === "single") {
@@ -196,7 +196,7 @@ function SgOrderListBase(props, imperativeRef) {
196
196
  const end = Math.max(anchorIndex, index);
197
197
  const rangeValues = currentItems
198
198
  .slice(start, end + 1)
199
- .filter((entry) => !entry.disabled)
199
+ .filter((entry) => entry.enabled !== false)
200
200
  .map((entry) => entry.value);
201
201
  if (event.metaKey || event.ctrlKey) {
202
202
  commitSelection([...currentSelection, ...rangeValues]);
@@ -227,7 +227,7 @@ function SgOrderListBase(props, imperativeRef) {
227
227
  setDropIndex(null);
228
228
  }, []);
229
229
  const handleDragStart = React.useCallback((event, item, index) => {
230
- if (!allowDrag || item.disabled) {
230
+ if (!allowDrag || (item.enabled === false)) {
231
231
  event.preventDefault();
232
232
  return;
233
233
  }
@@ -297,20 +297,20 @@ function SgOrderListBase(props, imperativeRef) {
297
297
  const canMoveUp = canInteract && moveSelectionUp(currentItems, movableSelection) !== currentItems;
298
298
  const canMoveDown = canInteract && moveSelectionDown(currentItems, movableSelection) !== currentItems;
299
299
  const canMoveBottom = canInteract && moveSelectionBottom(currentItems, movableSelection) !== currentItems;
300
- const renderedList = (_jsxs("ul", { id: id, role: "listbox", "aria-multiselectable": selectionMode === "multiple" ? true : undefined, "aria-disabled": disabled || undefined, "aria-readonly": readOnly || undefined, className: cn("w-full min-w-0 overflow-y-auto rounded-lg border border-[rgb(var(--sg-border))] bg-[rgb(var(--sg-surface))] p-1", "max-h-[22rem]", listClassName), children: [currentItems.length === 0 ? (_jsx("li", { className: "list-none px-3 py-4 text-sm text-[rgb(var(--sg-muted))]", children: emptyLabel })) : (currentItems.map((item, index) => {
300
+ const renderedList = (_jsxs("ul", { id: id, role: "listbox", "aria-multiselectable": selectionMode === "multiple" ? true : undefined, "aria-disabled": !enabled || undefined, "aria-readonly": readOnly || undefined, className: cn("w-full min-w-0 overflow-y-auto rounded-lg border border-[rgb(var(--sg-border))] bg-[rgb(var(--sg-surface))] p-1", "max-h-[22rem]", listClassName), children: [currentItems.length === 0 ? (_jsx("li", { className: "list-none px-3 py-4 text-sm text-[rgb(var(--sg-muted))]", children: emptyLabel })) : (currentItems.map((item, index) => {
301
301
  const isItemSelected = selectedSet.has(item.value);
302
- const isItemDisabled = disabled || Boolean(item.disabled);
302
+ const isItemDisabled = !enabled || Boolean((item.enabled === false));
303
303
  const isDropTarget = dropIndex === index && draggingIndex !== null && draggingIndex !== index;
304
304
  const isDragging = draggingIndex === index;
305
- return (_jsx("li", { className: "list-none", children: _jsxs("button", { type: "button", role: "option", "aria-selected": isItemSelected, draggable: allowDrag && !item.disabled, disabled: isItemDisabled, onClick: (event) => handleItemSelection(event, item, index), onKeyDown: (event) => handleItemKeyDown(event, item, index), onDragStart: (event) => handleDragStart(event, item, index), onDragOver: (event) => handleDragOver(event, index), onDrop: (event) => handleDrop(event, index), onDragEnd: clearDragState, className: cn("group flex w-full items-center gap-2 rounded-md px-3 py-2 text-left text-sm transition-all", isItemSelected
305
+ return (_jsx("li", { className: "list-none", children: _jsxs("button", { type: "button", role: "option", "aria-selected": isItemSelected, draggable: allowDrag && item.enabled !== false, disabled: isItemDisabled, onClick: (event) => handleItemSelection(event, item, index), onKeyDown: (event) => handleItemKeyDown(event, item, index), onDragStart: (event) => handleDragStart(event, item, index), onDragOver: (event) => handleDragOver(event, index), onDrop: (event) => handleDrop(event, index), onDragEnd: clearDragState, className: cn("group flex w-full items-center gap-2 rounded-md px-3 py-2 text-left text-sm transition-all", isItemSelected
306
306
  ? "bg-[rgb(var(--sg-primary-100))] text-[rgb(var(--sg-text))] ring-1 ring-[rgb(var(--sg-primary-300))]"
307
- : "bg-[rgb(var(--sg-input-bg,var(--sg-surface)))] text-[rgb(var(--sg-text))] hover:bg-[rgb(var(--sg-primary-50))]", isItemDisabled ? "cursor-not-allowed opacity-60" : "cursor-pointer", allowDrag && !item.disabled ? "active:cursor-grabbing" : "", isDropTarget ? "ring-2 ring-[rgb(var(--sg-primary-400))]" : "", isDragging ? "opacity-50" : "", itemClassName), children: [_jsx("span", { className: "min-w-0 flex-1", children: itemTemplate ? (itemTemplate(item, {
307
+ : "bg-[rgb(var(--sg-input-bg,var(--sg-surface)))] text-[rgb(var(--sg-text))] hover:bg-[rgb(var(--sg-primary-50))]", isItemDisabled ? "cursor-not-allowed opacity-60" : "cursor-pointer", allowDrag && item.enabled !== false ? "active:cursor-grabbing" : "", isDropTarget ? "ring-2 ring-[rgb(var(--sg-primary-400))]" : "", isDragging ? "opacity-50" : "", itemClassName), children: [_jsx("span", { className: "min-w-0 flex-1", children: itemTemplate ? (itemTemplate(item, {
308
308
  index,
309
309
  selected: isItemSelected,
310
- disabled: isItemDisabled
311
- })) : (_jsxs("span", { className: "flex items-center gap-2", children: [item.icon ? _jsx("span", { className: "shrink-0", children: item.icon }) : null, _jsx("span", { className: "truncate", children: item.label })] })) }), allowDrag && !item.disabled ? (_jsx("span", { "aria-hidden": "true", className: "shrink-0 text-xs tracking-wide text-[rgb(var(--sg-muted))]", children: "::" })) : null] }) }, `${item.value}-${index}`));
310
+ enabled: !isItemDisabled
311
+ })) : (_jsxs("span", { className: "flex items-center gap-2", children: [item.icon ? _jsx("span", { className: "shrink-0", children: item.icon }) : null, _jsx("span", { className: "truncate", children: item.label })] })) }), allowDrag && item.enabled !== false ? (_jsx("span", { "aria-hidden": "true", className: "shrink-0 text-xs tracking-wide text-[rgb(var(--sg-muted))]", children: "::" })) : null] }) }, `${item.value}-${index}`));
312
312
  })), allowDrag && currentItems.length > 0 ? (_jsx("li", { className: "list-none", children: _jsx("div", { onDragOver: (event) => handleDragOver(event, currentItems.length), onDrop: (event) => handleDrop(event, currentItems.length), className: cn("mt-1 h-3 rounded-md border border-dashed border-transparent transition-colors", dropIndex === currentItems.length ? "border-[rgb(var(--sg-primary-400))] bg-[rgb(var(--sg-primary-100))]" : "") }) })) : null] }));
313
- const controls = showControls ? (_jsxs("div", { className: "flex shrink-0 flex-col gap-2", children: [_jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canMoveTop, title: moveTopLabel, "aria-label": moveTopLabel, onClick: () => applyMove("top"), children: "Top" }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canMoveUp, title: moveUpLabel, "aria-label": moveUpLabel, onClick: () => applyMove("up"), children: "Up" }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canMoveDown, title: moveDownLabel, "aria-label": moveDownLabel, onClick: () => applyMove("down"), children: "Down" }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canMoveBottom, title: moveBottomLabel, "aria-label": moveBottomLabel, onClick: () => applyMove("bottom"), children: "Bottom" })] })) : null;
313
+ const controls = showControls ? (_jsxs("div", { className: "flex shrink-0 flex-col gap-2", children: [_jsx(SgButton, { size: "sm", appearance: "outline", enabled: canMoveTop, title: moveTopLabel, "aria-label": moveTopLabel, onClick: () => applyMove("top"), children: "Top" }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canMoveUp, title: moveUpLabel, "aria-label": moveUpLabel, onClick: () => applyMove("up"), children: "Up" }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canMoveDown, title: moveDownLabel, "aria-label": moveDownLabel, onClick: () => applyMove("down"), children: "Down" }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canMoveBottom, title: moveBottomLabel, "aria-label": moveBottomLabel, onClick: () => applyMove("bottom"), children: "Bottom" })] })) : null;
314
314
  const containerDirection = controlsPosition === "right" ? "flex-row-reverse" : "flex-row";
315
315
  const resolvedTitle = (groupBoxProps.title ?? title ?? "").trim() || " ";
316
316
  return (_jsx("div", { className: className, style: style, children: _jsxs(SgGroupBox, { ...groupBoxProps, title: resolvedTitle, children: [error ? _jsx("p", { className: "mb-2 text-xs text-red-600", children: error }) : null, _jsxs("div", { className: cn("flex items-start gap-3", containerDirection), children: [controls, _jsx("div", { className: "min-w-0 flex-1", children: renderedList })] })] }) }));
@@ -18,7 +18,7 @@ export const sgMeta = {
18
18
  { name: "selectionMode", type: "\"single\" | \"multiple\"", default: "single", description: "Modo de selecao.", semanticRole: "behavior", bindable: true },
19
19
  { name: "showControls", type: "boolean", default: true, description: "Exibe botoes de ordenacao.", semanticRole: "appearance", bindable: true },
20
20
  { name: "draggable", type: "boolean", default: false, description: "Permite arrastar itens.", semanticRole: "behavior", bindable: true },
21
- { name: "disabled", type: "boolean", default: false, description: "Desabilita interacao.", semanticRole: "behavior", bindable: true },
21
+ { name: "enabled", type: "boolean", default: true, description: "Desabilita interacao.", semanticRole: "behavior", bindable: true },
22
22
  { name: "onChange", type: "(items: SgOrderListItem[]) => void", description: "Callback ao alterar a ordem.", semanticRole: "event", bindable: false }
23
23
  ],
24
24
  states: ["default", "disabled", "readOnly", "empty"],
@@ -67,7 +67,7 @@ export type SgPeriodSelectorProps = {
67
67
  allowCustomPeriod?: boolean;
68
68
  /** Locale para labels e formatacao. Default "pt-BR". */
69
69
  locale?: string;
70
- disabled?: boolean;
70
+ enabled?: boolean;
71
71
  required?: boolean;
72
72
  minDate?: Date;
73
73
  maxDate?: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"SgPeriodSelector.d.ts","sourceRoot":"","sources":["../../src/inputs/SgPeriodSelector.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAO7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;GAIG;AACH,oBAAY,YAAY;IACtB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,SAAS,cAAc;CACxB;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,mEAAmE;IACnE,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,kEAAkE;IAClE,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5C,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,oFAAoF;IACpF,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AA4CF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,SAAU,GAAG,MAAM,CAEhF;AAgKD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,EACpB,GAAG,GAAE,IAAiB,EACtB,OAAO,GAAE,oBAAyB,GACjC,cAAc,CAkBhB;AAoCD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,EACD,MAAM,SAAU,GACf,kBAAkB,EAAE,CAuBtB;AAsKD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC,2CA+BtE"}
1
+ {"version":3,"file":"SgPeriodSelector.d.ts","sourceRoot":"","sources":["../../src/inputs/SgPeriodSelector.tsx"],"names":[],"mappings":"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"}
@@ -318,7 +318,7 @@ function parseIsoDate(value) {
318
318
  return Number.isNaN(date.getTime()) ? null : date;
319
319
  }
320
320
  function SgPeriodSelectorBase(props) {
321
- const { id = "sg-period-selector", label, value, onChange, permitPast = true, permitCurrent = true, permitFuture = true, permitAll = true, allowCustomPeriod = true, locale = "pt-BR", disabled, required, minDate, maxDate, referenceDate, className, error } = props;
321
+ const { id = "sg-period-selector", label, value, onChange, permitPast = true, permitCurrent = true, permitFuture = true, permitAll = true, allowCustomPeriod = true, locale = "pt-BR", enabled = true, required, minDate, maxDate, referenceDate, className, error } = props;
322
322
  const isControlled = value !== undefined;
323
323
  const [internalPreset, setInternalPreset] = React.useState(value ?? null);
324
324
  const selectedPreset = isControlled ? value ?? null : internalPreset;
@@ -360,10 +360,10 @@ function SgPeriodSelectorBase(props) {
360
360
  onChange?.(resolvePeriod(preset, referenceDate ?? new Date(), resolveOptions));
361
361
  }, [customEnd, customStart, emitCustom, isControlled, onChange, referenceDate, resolveOptions]);
362
362
  const showCustomRange = allowCustomPeriod && selectedPreset === PeriodPreset.CUSTOM;
363
- return (_jsxs("div", { className: cn("w-full max-w-[18rem]", className), children: [_jsx(SgCombobox, { id: id, label: label, source: options, value: selectedPreset ?? null, grouped: true, openOnFocus: true, enabled: disabled ? false : undefined, required: required, error: error, renderGroupHeader: (group) => group ? (_jsx("div", { className: "mt-2 border-b border-border pb-1.5 text-center text-[11px] font-bold uppercase tracking-wider text-muted-foreground", children: group })) : null, onValueChange: handleValueChange }), showCustomRange ? (_jsxs("div", { className: "mt-2 grid grid-cols-1 gap-2", children: [_jsx(SgInputDate, { id: `${id}-custom-start`, inputProps: { value: customStart }, minDate: minDate, maxDate: maxDate, enabled: disabled ? false : undefined, onChange: (next) => {
363
+ return (_jsxs("div", { className: cn("w-full max-w-[18rem]", className), children: [_jsx(SgCombobox, { id: id, label: label, source: options, value: selectedPreset ?? null, grouped: true, openOnFocus: true, enabled: enabled, required: required, error: error, renderGroupHeader: (group) => group ? (_jsx("div", { className: "mt-2 border-b border-border pb-1.5 text-center text-[11px] font-bold uppercase tracking-wider text-muted-foreground", children: group })) : null, onValueChange: handleValueChange }), showCustomRange ? (_jsxs("div", { className: "mt-2 grid grid-cols-1 gap-2", children: [_jsx(SgInputDate, { id: `${id}-custom-start`, inputProps: { value: customStart }, minDate: minDate, maxDate: maxDate, enabled: enabled, onChange: (next) => {
364
364
  setCustomStart(next);
365
365
  emitCustom(next, customEnd);
366
- } }), _jsx(SgInputDate, { id: `${id}-custom-end`, inputProps: { value: customEnd }, minDate: minDate, maxDate: maxDate, enabled: disabled ? false : undefined, onChange: (next) => {
366
+ } }), _jsx(SgInputDate, { id: `${id}-custom-end`, inputProps: { value: customEnd }, minDate: minDate, maxDate: maxDate, enabled: enabled, onChange: (next) => {
367
367
  setCustomEnd(next);
368
368
  emitCustom(customStart, next);
369
369
  } })] })) : null] }));
@@ -4,7 +4,7 @@ import { type SgGroupBoxProps } from "../layout/SgGroupBox";
4
4
  export interface SgPickListItem {
5
5
  label: string;
6
6
  value: string | number;
7
- disabled?: boolean;
7
+ enabled?: boolean;
8
8
  icon?: React.ReactNode;
9
9
  data?: unknown;
10
10
  }
@@ -52,13 +52,13 @@ export interface SgPickListProps extends RhfFieldProps {
52
52
  targetFilterPlaceholder?: string;
53
53
  filterMatchMode?: SgPickListFilterMatchMode;
54
54
  draggable?: boolean;
55
- disabled?: boolean;
55
+ enabled?: boolean;
56
56
  readOnly?: boolean;
57
57
  emptyMessage?: string;
58
58
  itemTemplate?: (item: SgPickListItem, state: {
59
59
  index: number;
60
60
  selected: boolean;
61
- disabled: boolean;
61
+ enabled: boolean;
62
62
  list: SgPickListListName;
63
63
  }) => React.ReactNode;
64
64
  className?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SgPickList.d.ts","sourceRoot":"","sources":["../../src/inputs/SgPickList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SgPickList.d.ts","sourceRoot":"","sources":["../../src/inputs/SgPickList.tsx"],"names":[],"mappings":"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"}
@@ -31,17 +31,17 @@ function moveSingleItem(items, fromIndex, toIndex) {
31
31
  return next;
32
32
  }
33
33
  function moveSelectionTop(items, selected) {
34
- const picked = items.filter((item) => selected.has(item.value) && !item.disabled);
34
+ const picked = items.filter((item) => selected.has(item.value) && item.enabled !== false);
35
35
  if (picked.length === 0)
36
36
  return items;
37
- const rest = items.filter((item) => !(selected.has(item.value) && !item.disabled));
37
+ const rest = items.filter((item) => !(selected.has(item.value) && item.enabled !== false));
38
38
  return [...picked, ...rest];
39
39
  }
40
40
  function moveSelectionBottom(items, selected) {
41
- const picked = items.filter((item) => selected.has(item.value) && !item.disabled);
41
+ const picked = items.filter((item) => selected.has(item.value) && item.enabled !== false);
42
42
  if (picked.length === 0)
43
43
  return items;
44
- const rest = items.filter((item) => !(selected.has(item.value) && !item.disabled));
44
+ const rest = items.filter((item) => !(selected.has(item.value) && item.enabled !== false));
45
45
  return [...rest, ...picked];
46
46
  }
47
47
  function moveSelectionUp(items, selected) {
@@ -49,9 +49,9 @@ function moveSelectionUp(items, selected) {
49
49
  for (let index = 1; index < next.length; index += 1) {
50
50
  const current = next[index];
51
51
  const prev = next[index - 1];
52
- if (!(selected.has(current.value) && !current.disabled))
52
+ if (!(selected.has(current.value) && current.enabled !== false))
53
53
  continue;
54
- if (selected.has(prev.value) && !prev.disabled)
54
+ if (selected.has(prev.value) && prev.enabled !== false)
55
55
  continue;
56
56
  next[index] = prev;
57
57
  next[index - 1] = current;
@@ -63,9 +63,9 @@ function moveSelectionDown(items, selected) {
63
63
  for (let index = next.length - 2; index >= 0; index -= 1) {
64
64
  const current = next[index];
65
65
  const nextItem = next[index + 1];
66
- if (!(selected.has(current.value) && !current.disabled))
66
+ if (!(selected.has(current.value) && current.enabled !== false))
67
67
  continue;
68
- if (selected.has(nextItem.value) && !nextItem.disabled)
68
+ if (selected.has(nextItem.value) && nextItem.enabled !== false)
69
69
  continue;
70
70
  next[index] = nextItem;
71
71
  next[index + 1] = current;
@@ -86,7 +86,7 @@ function matchFilter(label, query, mode) {
86
86
  }
87
87
  function SgPickListBase(props, imperativeRef) {
88
88
  const i18n = useComponentsI18n();
89
- const { id, title, source, target, value: controlledValue, onChange, sourceSelection: controlledSourceSelection, targetSelection: controlledTargetSelection, onSourceSelectionChange, onTargetSelectionChange, selectionMode = "multiple", sourceHeader, targetHeader, showTransferControls = true, showSourceControls = true, showTargetControls = true, showSourceFilter = false, showTargetFilter = false, sourceFilterPlaceholder, targetFilterPlaceholder, filterMatchMode = "contains", draggable = true, disabled = false, readOnly = false, emptyMessage, itemTemplate, className = "", style, listClassName = "", itemClassName = "", groupBoxProps = {}, error } = props;
89
+ const { id, title, source, target, value: controlledValue, onChange, sourceSelection: controlledSourceSelection, targetSelection: controlledTargetSelection, onSourceSelectionChange, onTargetSelectionChange, selectionMode = "multiple", sourceHeader, targetHeader, showTransferControls = true, showSourceControls = true, showTargetControls = true, showSourceFilter = false, showTargetFilter = false, sourceFilterPlaceholder, targetFilterPlaceholder, filterMatchMode = "contains", draggable = true, enabled = true, readOnly = false, emptyMessage, itemTemplate, className = "", style, listClassName = "", itemClassName = "", groupBoxProps = {}, error } = props;
90
90
  const [internalValue, setInternalValue] = React.useState(() => ({ source, target }));
91
91
  const [internalSourceSelection, setInternalSourceSelection] = React.useState(() => uniqueValues(controlledSourceSelection ?? []));
92
92
  const [internalTargetSelection, setInternalTargetSelection] = React.useState(() => uniqueValues(controlledTargetSelection ?? []));
@@ -110,7 +110,7 @@ function SgPickListBase(props, imperativeRef) {
110
110
  const targetSelection = uniqueValues(targetSelectionRaw.filter((valueItem) => targetItems.some((item) => item.value === valueItem)));
111
111
  const sourceSelectedSet = new Set(sourceSelection);
112
112
  const targetSelectedSet = new Set(targetSelection);
113
- const canInteract = !disabled && !readOnly;
113
+ const canInteract = enabled && !readOnly;
114
114
  const commitValue = React.useCallback((nextValue, type) => {
115
115
  if (!isValueControlled)
116
116
  setInternalValue(nextValue);
@@ -135,10 +135,10 @@ function SgPickListBase(props, imperativeRef) {
135
135
  const moveToTarget = React.useCallback(() => {
136
136
  if (!canInteract)
137
137
  return;
138
- const picked = sourceItems.filter((item) => sourceSelectedSet.has(item.value) && !item.disabled);
138
+ const picked = sourceItems.filter((item) => sourceSelectedSet.has(item.value) && item.enabled !== false);
139
139
  if (picked.length === 0)
140
140
  return;
141
- const nextSource = sourceItems.filter((item) => !(sourceSelectedSet.has(item.value) && !item.disabled));
141
+ const nextSource = sourceItems.filter((item) => !(sourceSelectedSet.has(item.value) && item.enabled !== false));
142
142
  const nextTarget = [...targetItems, ...picked];
143
143
  commitValue({ source: nextSource, target: nextTarget }, "moveToTarget");
144
144
  commitSourceSelection([]);
@@ -147,10 +147,10 @@ function SgPickListBase(props, imperativeRef) {
147
147
  const moveAllToTarget = React.useCallback(() => {
148
148
  if (!canInteract)
149
149
  return;
150
- const picked = sourceItems.filter((item) => !item.disabled);
150
+ const picked = sourceItems.filter((item) => item.enabled !== false);
151
151
  if (picked.length === 0)
152
152
  return;
153
- const nextSource = sourceItems.filter((item) => item.disabled);
153
+ const nextSource = sourceItems.filter((item) => (item.enabled === false));
154
154
  const nextTarget = [...targetItems, ...picked];
155
155
  commitValue({ source: nextSource, target: nextTarget }, "moveAllToTarget");
156
156
  commitSourceSelection([]);
@@ -159,10 +159,10 @@ function SgPickListBase(props, imperativeRef) {
159
159
  const moveToSource = React.useCallback(() => {
160
160
  if (!canInteract)
161
161
  return;
162
- const picked = targetItems.filter((item) => targetSelectedSet.has(item.value) && !item.disabled);
162
+ const picked = targetItems.filter((item) => targetSelectedSet.has(item.value) && item.enabled !== false);
163
163
  if (picked.length === 0)
164
164
  return;
165
- const nextTarget = targetItems.filter((item) => !(targetSelectedSet.has(item.value) && !item.disabled));
165
+ const nextTarget = targetItems.filter((item) => !(targetSelectedSet.has(item.value) && item.enabled !== false));
166
166
  const nextSource = [...sourceItems, ...picked];
167
167
  commitValue({ source: nextSource, target: nextTarget }, "moveToSource");
168
168
  commitTargetSelection([]);
@@ -171,10 +171,10 @@ function SgPickListBase(props, imperativeRef) {
171
171
  const moveAllToSource = React.useCallback(() => {
172
172
  if (!canInteract)
173
173
  return;
174
- const picked = targetItems.filter((item) => !item.disabled);
174
+ const picked = targetItems.filter((item) => item.enabled !== false);
175
175
  if (picked.length === 0)
176
176
  return;
177
- const nextTarget = targetItems.filter((item) => item.disabled);
177
+ const nextTarget = targetItems.filter((item) => (item.enabled === false));
178
178
  const nextSource = [...sourceItems, ...picked];
179
179
  commitValue({ source: nextSource, target: nextTarget }, "moveAllToSource");
180
180
  commitTargetSelection([]);
@@ -185,7 +185,7 @@ function SgPickListBase(props, imperativeRef) {
185
185
  return;
186
186
  if (from === "source") {
187
187
  const moving = sourceItems[fromIndex];
188
- if (!moving || moving.disabled)
188
+ if (!moving || (moving.enabled === false))
189
189
  return;
190
190
  const nextSource = sourceItems.filter((_, index) => index !== fromIndex);
191
191
  const nextTarget = [...targetItems, moving];
@@ -195,7 +195,7 @@ function SgPickListBase(props, imperativeRef) {
195
195
  return;
196
196
  }
197
197
  const moving = targetItems[fromIndex];
198
- if (!moving || moving.disabled)
198
+ if (!moving || (moving.enabled === false))
199
199
  return;
200
200
  const nextTarget = targetItems.filter((_, index) => index !== fromIndex);
201
201
  const nextSource = [...sourceItems, moving];
@@ -243,7 +243,7 @@ function SgPickListBase(props, imperativeRef) {
243
243
  commitValue({ source: sourceItems, target: nextItems }, "reorderTarget");
244
244
  };
245
245
  const handleSelect = (list, item) => {
246
- if (!canInteract || item.disabled)
246
+ if (!canInteract || (item.enabled === false))
247
247
  return;
248
248
  const selected = list === "source" ? sourceSelectedSet : targetSelectedSet;
249
249
  const commit = list === "source" ? commitSourceSelection : commitTargetSelection;
@@ -276,7 +276,7 @@ function SgPickListBase(props, imperativeRef) {
276
276
  const fromList = dragState.from === "source" ? sourceItems : targetItems;
277
277
  const toList = to === "source" ? sourceItems : targetItems;
278
278
  const moving = fromList[dragState.fromIndex];
279
- if (!moving || moving.disabled) {
279
+ if (!moving || (moving.enabled === false)) {
280
280
  setDragState(null);
281
281
  return;
282
282
  }
@@ -324,8 +324,8 @@ function SgPickListBase(props, imperativeRef) {
324
324
  handleDrop(list, list === "source" ? sourceItems.length : targetItems.length);
325
325
  }, children: items.length === 0 ? (_jsx("li", { className: "list-none px-3 py-4 text-sm text-[rgb(var(--sg-muted))]", children: emptyLabel })) : (items.map(({ item, index }) => {
326
326
  const selectedItem = selected.has(item.value);
327
- const itemDisabled = disabled || Boolean(item.disabled);
328
- return (_jsx("li", { className: "list-none", children: _jsxs("button", { type: "button", role: "option", "aria-selected": selectedItem, disabled: itemDisabled, draggable: dragEnabled && !item.disabled, onClick: (event) => {
327
+ const itemDisabled = !enabled || Boolean((item.enabled === false));
328
+ return (_jsx("li", { className: "list-none", children: _jsxs("button", { type: "button", role: "option", "aria-selected": selectedItem, disabled: itemDisabled, draggable: dragEnabled && item.enabled !== false, onClick: (event) => {
329
329
  if (event.detail >= 2) {
330
330
  moveSingleByDoubleClick(list, index);
331
331
  return;
@@ -353,11 +353,11 @@ function SgPickListBase(props, imperativeRef) {
353
353
  }, onDragEnd: () => setDragState(null), className: cn("flex w-full items-center gap-2 rounded-md px-3 py-2 text-left text-sm", selectedItem
354
354
  ? "bg-[rgb(var(--sg-primary-100))] ring-1 ring-[rgb(var(--sg-primary-300))]"
355
355
  : "bg-[rgb(var(--sg-input-bg,var(--sg-surface)))] hover:bg-[rgb(var(--sg-primary-50))]", itemDisabled ? "cursor-not-allowed opacity-60" : "cursor-pointer", itemClassName), children: [_jsx("span", { className: "min-w-0 flex-1 truncate", children: itemTemplate
356
- ? itemTemplate(item, { index, selected: selectedItem, disabled: itemDisabled, list })
357
- : (_jsxs("span", { className: "flex items-center gap-2", children: [item.icon ? _jsx("span", { className: "shrink-0", children: item.icon }) : null, _jsx("span", { className: "truncate", children: item.label })] })) }), dragEnabled && !item.disabled ? (_jsx("span", { "aria-hidden": "true", className: "shrink-0 text-xs text-[rgb(var(--sg-muted))]", children: "::" })) : null] }) }, `${item.value}-${index}`));
356
+ ? itemTemplate(item, { index, selected: selectedItem, enabled: !itemDisabled, list })
357
+ : (_jsxs("span", { className: "flex items-center gap-2", children: [item.icon ? _jsx("span", { className: "shrink-0", children: item.icon }) : null, _jsx("span", { className: "truncate", children: item.label })] })) }), dragEnabled && item.enabled !== false ? (_jsx("span", { "aria-hidden": "true", className: "shrink-0 text-xs text-[rgb(var(--sg-muted))]", children: "::" })) : null] }) }, `${item.value}-${index}`));
358
358
  })) }));
359
- const renderReorderControls = (list) => (_jsxs("div", { className: "flex shrink-0 flex-col gap-2", children: [_jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canInteract, "aria-label": moveTopLabel, title: moveTopLabel, onClick: () => applyReorder(list, "top"), children: t(i18n, "components.actions.top") }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canInteract, "aria-label": moveUpLabel, title: moveUpLabel, onClick: () => applyReorder(list, "up"), children: t(i18n, "components.actions.up") }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canInteract, "aria-label": moveDownLabel, title: moveDownLabel, onClick: () => applyReorder(list, "down"), children: t(i18n, "components.actions.down") }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canInteract, "aria-label": moveBottomLabel, title: moveBottomLabel, onClick: () => applyReorder(list, "bottom"), children: t(i18n, "components.actions.bottom") })] }));
360
- const transferControls = showTransferControls ? (_jsxs("div", { className: "flex shrink-0 flex-row gap-2 md:flex-col", children: [_jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canInteract, "aria-label": moveToTargetLabel, title: moveToTargetLabel, onClick: moveToTarget, children: ">" }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canInteract, "aria-label": moveAllToTargetLabel, title: moveAllToTargetLabel, onClick: moveAllToTarget, children: ">>" }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canInteract, "aria-label": moveToSourceLabel, title: moveToSourceLabel, onClick: moveToSource, children: "<" }), _jsx(SgButton, { size: "sm", appearance: "outline", disabled: !canInteract, "aria-label": moveAllToSourceLabel, title: moveAllToSourceLabel, onClick: moveAllToSource, children: "<<" })] })) : null;
359
+ const renderReorderControls = (list) => (_jsxs("div", { className: "flex shrink-0 flex-col gap-2", children: [_jsx(SgButton, { size: "sm", appearance: "outline", enabled: canInteract, "aria-label": moveTopLabel, title: moveTopLabel, onClick: () => applyReorder(list, "top"), children: t(i18n, "components.actions.top") }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canInteract, "aria-label": moveUpLabel, title: moveUpLabel, onClick: () => applyReorder(list, "up"), children: t(i18n, "components.actions.up") }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canInteract, "aria-label": moveDownLabel, title: moveDownLabel, onClick: () => applyReorder(list, "down"), children: t(i18n, "components.actions.down") }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canInteract, "aria-label": moveBottomLabel, title: moveBottomLabel, onClick: () => applyReorder(list, "bottom"), children: t(i18n, "components.actions.bottom") })] }));
360
+ const transferControls = showTransferControls ? (_jsxs("div", { className: "flex shrink-0 flex-row gap-2 md:flex-col", children: [_jsx(SgButton, { size: "sm", appearance: "outline", enabled: canInteract, "aria-label": moveToTargetLabel, title: moveToTargetLabel, onClick: moveToTarget, children: ">" }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canInteract, "aria-label": moveAllToTargetLabel, title: moveAllToTargetLabel, onClick: moveAllToTarget, children: ">>" }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canInteract, "aria-label": moveToSourceLabel, title: moveToSourceLabel, onClick: moveToSource, children: "<" }), _jsx(SgButton, { size: "sm", appearance: "outline", enabled: canInteract, "aria-label": moveAllToSourceLabel, title: moveAllToSourceLabel, onClick: moveAllToSource, children: "<<" })] })) : null;
361
361
  const resolvedTitle = (groupBoxProps.title ?? title ?? "").trim() || " ";
362
362
  return (_jsx("div", { className: className, style: style, children: _jsxs(SgGroupBox, { ...groupBoxProps, title: resolvedTitle, children: [error ? _jsx("p", { className: "mb-2 text-xs text-red-600", children: error }) : null, _jsxs("div", { className: "grid gap-3 md:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] md:items-start", children: [_jsxs("div", { className: "min-w-0 space-y-2", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-[rgb(var(--sg-muted))]", children: sourceHeaderLabel }), showSourceFilter ? (_jsx("input", { value: sourceFilter, onChange: (event) => setSourceFilter(event.target.value), placeholder: sourceFilterLabel, className: "w-full rounded-md border border-[rgb(var(--sg-border))] bg-[rgb(var(--sg-input-bg,var(--sg-surface)))] px-2 py-1 text-sm text-[rgb(var(--sg-input-fg,var(--sg-text)))] placeholder:text-[rgb(var(--sg-input-placeholder,var(--sg-muted)))] outline-none focus:ring-2 focus:ring-[rgb(var(--sg-ring))]" })) : null, _jsxs("div", { className: "flex items-start gap-2", children: [showSourceControls ? renderReorderControls("source") : null, _jsx("div", { className: "min-w-0 flex-1", children: renderList("source", filteredSource, sourceSelectedSet) })] })] }), _jsx("div", { className: "flex justify-center md:pt-7", children: transferControls }), _jsxs("div", { className: "min-w-0 space-y-2", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-[rgb(var(--sg-muted))]", children: targetHeaderLabel }), showTargetFilter ? (_jsx("input", { value: targetFilter, onChange: (event) => setTargetFilter(event.target.value), placeholder: targetFilterLabel, className: "w-full rounded-md border border-[rgb(var(--sg-border))] bg-[rgb(var(--sg-input-bg,var(--sg-surface)))] px-2 py-1 text-sm text-[rgb(var(--sg-input-fg,var(--sg-text)))] placeholder:text-[rgb(var(--sg-input-placeholder,var(--sg-muted)))] outline-none focus:ring-2 focus:ring-[rgb(var(--sg-ring))]" })) : null, _jsxs("div", { className: "flex items-start gap-2", children: [_jsx("div", { className: "min-w-0 flex-1", children: renderList("target", filteredTarget, targetSelectedSet) }), showTargetControls ? renderReorderControls("target") : null] })] })] })] }) }));
363
363
  }
@@ -15,7 +15,7 @@ export const sgMeta = {
15
15
  { name: "id", type: "string", description: "Identificador unico do componente.", semanticRole: "data", bindable: false },
16
16
  { name: "value", type: "SgPickListValue", description: "Estado atual das listas.", semanticRole: "value", bindable: true },
17
17
  { name: "selectionMode", type: "\"single\" | \"multiple\"", description: "Modo de selecao nas listas.", semanticRole: "behavior", bindable: true },
18
- { name: "disabled", type: "boolean", default: false, description: "Desabilita interacao.", semanticRole: "behavior", bindable: true },
18
+ { name: "enabled", type: "boolean", default: true, description: "Desabilita interacao.", semanticRole: "behavior", bindable: true },
19
19
  { name: "onChange", type: "(event: SgPickListChangeEvent) => void", description: "Callback ao mover itens.", semanticRole: "event", bindable: false }
20
20
  ],
21
21
  states: ["default", "disabled", "empty"],
@@ -7,7 +7,7 @@ export interface SgRadioGroupOption {
7
7
  label: string;
8
8
  value: string | number;
9
9
  icon?: React.ReactNode;
10
- disabled?: boolean;
10
+ enabled?: boolean;
11
11
  }
12
12
  export interface SgRadioGroupProps extends RhfFieldProps {
13
13
  id?: string;
@@ -17,7 +17,7 @@ export interface SgRadioGroupProps extends RhfFieldProps {
17
17
  orientation?: SgRadioGroupOrientation;
18
18
  selectionStyle?: SgRadioGroupSelectionStyle;
19
19
  iconOnly?: boolean;
20
- disabled?: boolean;
20
+ enabled?: boolean;
21
21
  readOnly?: boolean;
22
22
  required?: boolean;
23
23
  onChange?: (value: string | number | null) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"SgRadioGroup.d.ts","sourceRoot":"","sources":["../../src/inputs/SgRadioGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAElF,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC;AAChE,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAGnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3F;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAmPpD"}
1
+ {"version":3,"file":"SgRadioGroup.d.ts","sourceRoot":"","sources":["../../src/inputs/SgRadioGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAElF,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC;AAChE,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAGnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3F;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAmPpD"}
@@ -7,7 +7,7 @@ import { t, useComponentsI18n } from "../i18n";
7
7
  import { mergeRequiredRule, resolveFieldError } from "../rhf";
8
8
  export function SgRadioGroup(props) {
9
9
  const i18n = useComponentsI18n();
10
- const { id, title, source, value: controlledValue, orientation = "vertical", selectionStyle = "radio", iconOnly = false, disabled = false, readOnly = false, required = false, onChange, name, control, register, rules, error, className = "", style, optionClassName = "", groupBoxProps = {} } = props;
10
+ const { id, title, source, value: controlledValue, orientation = "vertical", selectionStyle = "radio", iconOnly = false, enabled = true, readOnly = false, required = false, onChange, name, control, register, rules, error, className = "", style, optionClassName = "", groupBoxProps = {} } = props;
11
11
  const resolvedGroupBoxTitle = (() => {
12
12
  const baseTitle = groupBoxProps.title ?? title ?? "";
13
13
  if (!required || !baseTitle.trim())
@@ -19,7 +19,7 @@ export function SgRadioGroup(props) {
19
19
  const currentValue = isControlled ? controlledValue : internalValue;
20
20
  const isHighlightSelection = selectionStyle === "highlight";
21
21
  const handleChange = (newValue) => {
22
- if (disabled || readOnly)
22
+ if (!enabled || readOnly)
23
23
  return;
24
24
  if (!isControlled) {
25
25
  setInternalValue(newValue);
@@ -28,7 +28,7 @@ export function SgRadioGroup(props) {
28
28
  };
29
29
  const renderRadioOption = (option, index, registration) => {
30
30
  const isSelected = currentValue === option.value;
31
- const isDisabled = disabled || option.disabled;
31
+ const isDisabled = !enabled || (option.enabled === false);
32
32
  const inputClassName = isHighlightSelection
33
33
  ? "sr-only"
34
34
  : "w-4 h-4 text-[rgb(var(--sg-primary-500))] border-[rgb(var(--sg-border))] focus:ring-[rgb(var(--sg-ring))] focus:ring-2 cursor-pointer disabled:cursor-not-allowed";
@@ -75,7 +75,7 @@ export function SgRadioGroup(props) {
75
75
  const content = (_jsxs("div", { className: className, style: style, children: [_jsx(SgGroupBox, { ...groupBoxProps, title: resolvedGroupBoxTitle || " ", className: groupBoxProps.className || "", children: _jsx("div", { className: `
76
76
  flex ${isHighlightSelection ? "gap-0" : "gap-4"}
77
77
  ${orientation === "vertical" ? "flex-col" : "flex-row flex-wrap"}
78
- `, role: "radiogroup", "aria-disabled": disabled || undefined, "aria-readonly": readOnly || undefined, "aria-required": required || undefined, children: source.map((option, index) => renderRadioOption(option, index)) }) }), error && (_jsx("div", { className: "mt-1 text-sm text-red-500", children: error }))] }));
78
+ `, role: "radiogroup", "aria-disabled": !enabled || undefined, "aria-readonly": readOnly || undefined, "aria-required": required || undefined, children: source.map((option, index) => renderRadioOption(option, index)) }) }), error && (_jsx("div", { className: "mt-1 text-sm text-red-500", children: error }))] }));
79
79
  const resolvedRules = mergeRequiredRule(rules, required, t(i18n, "components.inputs.required"));
80
80
  // React Hook Form integration
81
81
  if (control && name) {
@@ -89,7 +89,7 @@ export function SgRadioGroup(props) {
89
89
  return (_jsxs("div", { className: className, style: style, children: [_jsx(SgGroupBox, { ...groupBoxProps, title: resolvedGroupBoxTitle || " ", children: _jsx("div", { className: `
90
90
  flex ${isHighlightSelection ? "gap-0" : "gap-4"}
91
91
  ${orientation === "vertical" ? "flex-col" : "flex-row flex-wrap"}
92
- `, role: "radiogroup", "aria-disabled": disabled || undefined, "aria-readonly": readOnly || undefined, "aria-required": required || undefined, children: source.map((option, index) => renderRadioOption(option, index, registration)) }) }), error && (_jsx("div", { className: "mt-1 text-sm text-red-500", children: error }))] }));
92
+ `, role: "radiogroup", "aria-disabled": !enabled || undefined, "aria-readonly": readOnly || undefined, "aria-required": required || undefined, children: source.map((option, index) => renderRadioOption(option, index, registration)) }) }), error && (_jsx("div", { className: "mt-1 text-sm text-red-500", children: error }))] }));
93
93
  }
94
94
  return content;
95
95
  }
@@ -15,7 +15,7 @@ export interface SgRatingProps extends RhfFieldProps {
15
15
  /** Show cancel button */
16
16
  cancel?: boolean;
17
17
  /** Disabled state */
18
- disabled?: boolean;
18
+ enabled?: boolean;
19
19
  /** Read only mode */
20
20
  readOnly?: boolean;
21
21
  /** Size of the stars */
@@ -1 +1 @@
1
- {"version":3,"file":"SgRating.d.ts","sourceRoot":"","sources":["../../src/inputs/SgRating.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGlF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,wBAAwB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wBAAwB;IACxB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,mCAAmC;IACnC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,kCAAkC;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oCAAoC;IACpC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,wCAAwC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+QD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAyC5C"}
1
+ {"version":3,"file":"SgRating.d.ts","sourceRoot":"","sources":["../../src/inputs/SgRating.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGlF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,wBAAwB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wBAAwB;IACxB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,mCAAmC;IACnC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,kCAAkC;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oCAAoC;IACpC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,wCAAwC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+QD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAyC5C"}
@@ -23,7 +23,7 @@ function ErrorText(props) {
23
23
  }
24
24
  function SgRatingBase(props) {
25
25
  const i18n = useComponentsI18n();
26
- const { id, label, value = 0, stars = 5, allowHalf = false, cancel = true, disabled = false, readOnly = false, size = "md", className = "", style, onIcon, offIcon, cancelIcon, color = "hsl(var(--primary))", emptyColor = "hsl(var(--muted-foreground))", showTooltip = false, onChange, onHover, error, required = false, requiredMessage } = props;
26
+ const { id, label, value = 0, stars = 5, allowHalf = false, cancel = true, enabled = true, readOnly = false, size = "md", className = "", style, onIcon, offIcon, cancelIcon, color = "hsl(var(--primary))", emptyColor = "hsl(var(--muted-foreground))", showTooltip = false, onChange, onHover, error, required = false, requiredMessage } = props;
27
27
  const [hoverValue, setHoverValue] = React.useState(null);
28
28
  const [internalValue, setInternalValue] = React.useState(value);
29
29
  const [internalError, setInternalError] = React.useState(null);
@@ -31,7 +31,7 @@ function SgRatingBase(props) {
31
31
  setInternalValue(value);
32
32
  }, [value]);
33
33
  const handleStarClick = (starIndex, isHalf) => {
34
- if (disabled || readOnly)
34
+ if (!enabled || readOnly)
35
35
  return;
36
36
  const newValue = allowHalf && isHalf ? starIndex + 0.5 : starIndex + 1;
37
37
  setInternalValue(newValue);
@@ -46,7 +46,7 @@ function SgRatingBase(props) {
46
46
  }
47
47
  };
48
48
  const handleStarHover = (starIndex, isHalf) => {
49
- if (disabled || readOnly)
49
+ if (!enabled || readOnly)
50
50
  return;
51
51
  const newHoverValue = allowHalf && isHalf ? starIndex + 0.5 : starIndex + 1;
52
52
  setHoverValue(newHoverValue);
@@ -57,7 +57,7 @@ function SgRatingBase(props) {
57
57
  onHover?.(null);
58
58
  };
59
59
  const handleCancel = () => {
60
- if (disabled || readOnly)
60
+ if (!enabled || readOnly)
61
61
  return;
62
62
  setInternalValue(0);
63
63
  onChange?.(0);
@@ -71,7 +71,7 @@ function SgRatingBase(props) {
71
71
  };
72
72
  const displayValue = hoverValue ?? internalValue;
73
73
  const starSize = STAR_SIZES[size];
74
- const isInteractive = !disabled && !readOnly;
74
+ const isInteractive = enabled && !readOnly;
75
75
  const getStarFillPercentage = (starIndex) => {
76
76
  const starValue = starIndex + 1;
77
77
  if (displayValue >= starValue)
@@ -82,9 +82,9 @@ function SgRatingBase(props) {
82
82
  return 0;
83
83
  };
84
84
  return (_jsxs("div", { className: `sg-rating ${className}`, style: style, children: [label && (_jsxs("label", { htmlFor: id, className: "mb-2 block text-sm font-medium", children: [label, required && _jsx("span", { className: "ml-1 text-red-600", children: "*" })] })), _jsxs("div", { className: "flex items-center gap-1", onMouseLeave: handleMouseLeave, style: {
85
- opacity: disabled ? 0.5 : 1,
85
+ opacity: !enabled ? 0.5 : 1,
86
86
  cursor: isInteractive ? "pointer" : "default"
87
- }, children: [cancel && (_jsx("button", { type: "button", onClick: handleCancel, disabled: disabled || readOnly, className: "mr-1 transition-opacity hover:opacity-80", style: {
87
+ }, children: [cancel && (_jsx("button", { type: "button", onClick: handleCancel, disabled: !enabled || readOnly, className: "mr-1 transition-opacity hover:opacity-80", style: {
88
88
  color: emptyColor,
89
89
  cursor: isInteractive ? "pointer" : "default"
90
90
  }, title: t(i18n, "components.rating.cancel"), children: cancelIcon ?? _jsx(CancelIcon, { size: starSize }) })), Array.from({ length: stars }).map((_, index) => {
@@ -16,7 +16,7 @@ export const sgMeta = {
16
16
  { name: "label", type: "string", description: "Rotulo do campo.", semanticRole: "label", bindable: true },
17
17
  { name: "value", type: "number", description: "Nota atual.", semanticRole: "value", bindable: true },
18
18
  { name: "readOnly", type: "boolean", default: false, description: "Impede alteracao da nota.", semanticRole: "behavior", bindable: true },
19
- { name: "disabled", type: "boolean", default: false, description: "Desabilita interacao.", semanticRole: "behavior", bindable: true },
19
+ { name: "enabled", type: "boolean", default: true, description: "Desabilita interacao.", semanticRole: "behavior", bindable: true },
20
20
  { name: "size", type: "\"sm\" | \"md\" | \"lg\" | \"xl\"", description: "Tamanho visual do controle.", semanticRole: "appearance", bindable: true },
21
21
  { name: "onChange", type: "(value: number) => void", description: "Callback de mudanca.", semanticRole: "event", bindable: false }
22
22
  ],