@lmb-it/kitsconcerto-native 0.1.277 → 0.1.285

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 (236) hide show
  1. package/apps/mobile/src/Core/AutoComplete/index.cjs +12 -4
  2. package/apps/mobile/src/Core/AutoComplete/index.cjs.map +1 -1
  3. package/apps/mobile/src/Core/AutoComplete/index.js +12 -4
  4. package/apps/mobile/src/Core/AutoComplete/index.js.map +1 -1
  5. package/apps/mobile/src/Core/MultiSelect/index.cjs +7 -4
  6. package/apps/mobile/src/Core/MultiSelect/index.cjs.map +1 -1
  7. package/apps/mobile/src/Core/MultiSelect/index.js +7 -4
  8. package/apps/mobile/src/Core/MultiSelect/index.js.map +1 -1
  9. package/components/Avatar/index.cjs +1 -0
  10. package/components/Avatar/index.cjs.map +1 -1
  11. package/components/Avatar/index.js +1 -0
  12. package/components/Avatar/index.js.map +1 -1
  13. package/components/Banner/banner.cjs +1 -0
  14. package/components/Banner/banner.cjs.map +1 -1
  15. package/components/Banner/banner.js +1 -0
  16. package/components/Banner/banner.js.map +1 -1
  17. package/components/BottomTabBar/index.cjs +1 -0
  18. package/components/BottomTabBar/index.cjs.map +1 -1
  19. package/components/BottomTabBar/index.js +1 -0
  20. package/components/BottomTabBar/index.js.map +1 -1
  21. package/components/BreadCrumb/index.cjs.map +1 -1
  22. package/components/BreadCrumb/index.js.map +1 -1
  23. package/components/Button/Button.cjs +1 -0
  24. package/components/Button/Button.cjs.map +1 -1
  25. package/components/Button/Button.js +1 -0
  26. package/components/Button/Button.js.map +1 -1
  27. package/components/Carousel/index.cjs +1 -0
  28. package/components/Carousel/index.cjs.map +1 -1
  29. package/components/Carousel/index.js +1 -0
  30. package/components/Carousel/index.js.map +1 -1
  31. package/components/ChatBubble/index.cjs +1 -0
  32. package/components/ChatBubble/index.cjs.map +1 -1
  33. package/components/ChatBubble/index.js +1 -0
  34. package/components/ChatBubble/index.js.map +1 -1
  35. package/components/Chip/index.cjs +1 -0
  36. package/components/Chip/index.cjs.map +1 -1
  37. package/components/Chip/index.js +1 -0
  38. package/components/Chip/index.js.map +1 -1
  39. package/components/DateSeparator/index.cjs +1 -0
  40. package/components/DateSeparator/index.cjs.map +1 -1
  41. package/components/DateSeparator/index.js +1 -0
  42. package/components/DateSeparator/index.js.map +1 -1
  43. package/components/DetailsList/index.cjs +1 -0
  44. package/components/DetailsList/index.cjs.map +1 -1
  45. package/components/DetailsList/index.js +1 -0
  46. package/components/DetailsList/index.js.map +1 -1
  47. package/components/EmptyState/index.cjs +1 -0
  48. package/components/EmptyState/index.cjs.map +1 -1
  49. package/components/EmptyState/index.js +1 -0
  50. package/components/EmptyState/index.js.map +1 -1
  51. package/components/Gallery/index.cjs +1 -0
  52. package/components/Gallery/index.cjs.map +1 -1
  53. package/components/Gallery/index.js +1 -0
  54. package/components/Gallery/index.js.map +1 -1
  55. package/components/MessageComposer/index.cjs +1 -0
  56. package/components/MessageComposer/index.cjs.map +1 -1
  57. package/components/MessageComposer/index.js +1 -0
  58. package/components/MessageComposer/index.js.map +1 -1
  59. package/components/MessageReceipt/index.cjs +1 -0
  60. package/components/MessageReceipt/index.cjs.map +1 -1
  61. package/components/MessageReceipt/index.js +1 -0
  62. package/components/MessageReceipt/index.js.map +1 -1
  63. package/components/ProgressBar/index.cjs +1 -0
  64. package/components/ProgressBar/index.cjs.map +1 -1
  65. package/components/ProgressBar/index.js +1 -0
  66. package/components/ProgressBar/index.js.map +1 -1
  67. package/components/SegmentedControl/index.cjs +1 -0
  68. package/components/SegmentedControl/index.cjs.map +1 -1
  69. package/components/SegmentedControl/index.js +1 -0
  70. package/components/SegmentedControl/index.js.map +1 -1
  71. package/components/StatCard/index.cjs +1 -0
  72. package/components/StatCard/index.cjs.map +1 -1
  73. package/components/StatCard/index.js +1 -0
  74. package/components/StatCard/index.js.map +1 -1
  75. package/components/Stepper/index.cjs +1 -0
  76. package/components/Stepper/index.cjs.map +1 -1
  77. package/components/Stepper/index.js +1 -0
  78. package/components/Stepper/index.js.map +1 -1
  79. package/components/Tabs/index.cjs +1 -0
  80. package/components/Tabs/index.cjs.map +1 -1
  81. package/components/Tabs/index.js +1 -0
  82. package/components/Tabs/index.js.map +1 -1
  83. package/components/Timeline/index.cjs +1 -0
  84. package/components/Timeline/index.cjs.map +1 -1
  85. package/components/Timeline/index.js +1 -0
  86. package/components/Timeline/index.js.map +1 -1
  87. package/components/Translate/index.cjs +1 -0
  88. package/components/Translate/index.cjs.map +1 -1
  89. package/components/Translate/index.js +1 -0
  90. package/components/Translate/index.js.map +1 -1
  91. package/components/TypingIndicator/index.cjs +1 -0
  92. package/components/TypingIndicator/index.cjs.map +1 -1
  93. package/components/TypingIndicator/index.js +1 -0
  94. package/components/TypingIndicator/index.js.map +1 -1
  95. package/components/overlay/ConfirmDialog/index.cjs +1 -0
  96. package/components/overlay/ConfirmDialog/index.cjs.map +1 -1
  97. package/components/overlay/ConfirmDialog/index.js +1 -0
  98. package/components/overlay/ConfirmDialog/index.js.map +1 -1
  99. package/components/overlay/Dialog/index.cjs +1 -0
  100. package/components/overlay/Dialog/index.cjs.map +1 -1
  101. package/components/overlay/Dialog/index.js +1 -0
  102. package/components/overlay/Dialog/index.js.map +1 -1
  103. package/contexts/BreadcrumbContext.cjs +33 -0
  104. package/contexts/BreadcrumbContext.cjs.map +1 -0
  105. package/contexts/BreadcrumbContext.js +28 -0
  106. package/contexts/BreadcrumbContext.js.map +1 -0
  107. package/form/controls/Checkbox/index.cjs +1 -0
  108. package/form/controls/Checkbox/index.cjs.map +1 -1
  109. package/form/controls/Checkbox/index.js +1 -0
  110. package/form/controls/Checkbox/index.js.map +1 -1
  111. package/form/controls/RadioButton/radio.cjs +1 -0
  112. package/form/controls/RadioButton/radio.cjs.map +1 -1
  113. package/form/controls/RadioButton/radio.js +1 -0
  114. package/form/controls/RadioButton/radio.js.map +1 -1
  115. package/form/controls/TriStateCheckbox/index.cjs +1 -0
  116. package/form/controls/TriStateCheckbox/index.cjs.map +1 -1
  117. package/form/controls/TriStateCheckbox/index.js +1 -0
  118. package/form/controls/TriStateCheckbox/index.js.map +1 -1
  119. package/form/file-pickers/index.cjs +1 -0
  120. package/form/file-pickers/index.cjs.map +1 -1
  121. package/form/file-pickers/index.js +1 -0
  122. package/form/file-pickers/index.js.map +1 -1
  123. package/form/helpers/FormContainer/index.cjs +13 -2
  124. package/form/helpers/FormContainer/index.cjs.map +1 -1
  125. package/form/helpers/FormContainer/index.js +13 -2
  126. package/form/helpers/FormContainer/index.js.map +1 -1
  127. package/form/inputs/ColorPicker/index.cjs +1 -0
  128. package/form/inputs/ColorPicker/index.cjs.map +1 -1
  129. package/form/inputs/ColorPicker/index.js +1 -0
  130. package/form/inputs/ColorPicker/index.js.map +1 -1
  131. package/form/inputs/Datepicker/index.cjs +1 -0
  132. package/form/inputs/Datepicker/index.cjs.map +1 -1
  133. package/form/inputs/Datepicker/index.js +1 -0
  134. package/form/inputs/Datepicker/index.js.map +1 -1
  135. package/form/inputs/InputLocation/index.cjs +1 -0
  136. package/form/inputs/InputLocation/index.cjs.map +1 -1
  137. package/form/inputs/InputLocation/index.js +1 -0
  138. package/form/inputs/InputLocation/index.js.map +1 -1
  139. package/form/inputs/InputMask/index.cjs +1 -0
  140. package/form/inputs/InputMask/index.cjs.map +1 -1
  141. package/form/inputs/InputMask/index.js +1 -0
  142. package/form/inputs/InputMask/index.js.map +1 -1
  143. package/form/inputs/InputNumber/index.cjs +1 -0
  144. package/form/inputs/InputNumber/index.cjs.map +1 -1
  145. package/form/inputs/InputNumber/index.js +1 -0
  146. package/form/inputs/InputNumber/index.js.map +1 -1
  147. package/form/inputs/InputPassword/index.cjs +1 -0
  148. package/form/inputs/InputPassword/index.cjs.map +1 -1
  149. package/form/inputs/InputPassword/index.js +1 -0
  150. package/form/inputs/InputPassword/index.js.map +1 -1
  151. package/form/inputs/InputSwitch/index.cjs +1 -0
  152. package/form/inputs/InputSwitch/index.cjs.map +1 -1
  153. package/form/inputs/InputSwitch/index.js +1 -0
  154. package/form/inputs/InputSwitch/index.js.map +1 -1
  155. package/form/inputs/InputText/index.cjs +1 -0
  156. package/form/inputs/InputText/index.cjs.map +1 -1
  157. package/form/inputs/InputText/index.js +1 -0
  158. package/form/inputs/InputText/index.js.map +1 -1
  159. package/form/inputs/InputTextarea/index.cjs +1 -0
  160. package/form/inputs/InputTextarea/index.cjs.map +1 -1
  161. package/form/inputs/InputTextarea/index.js +1 -0
  162. package/form/inputs/InputTextarea/index.js.map +1 -1
  163. package/form/inputs/PhoneInput/index.cjs +1 -0
  164. package/form/inputs/PhoneInput/index.cjs.map +1 -1
  165. package/form/inputs/PhoneInput/index.js +1 -0
  166. package/form/inputs/PhoneInput/index.js.map +1 -1
  167. package/form/selects/AutoComplete/index.cjs +11 -1
  168. package/form/selects/AutoComplete/index.cjs.map +1 -1
  169. package/form/selects/AutoComplete/index.js +12 -2
  170. package/form/selects/AutoComplete/index.js.map +1 -1
  171. package/form/selects/CascadeSelect/index.cjs +1 -0
  172. package/form/selects/CascadeSelect/index.cjs.map +1 -1
  173. package/form/selects/CascadeSelect/index.js +1 -0
  174. package/form/selects/CascadeSelect/index.js.map +1 -1
  175. package/form/selects/Dropdown/index.cjs +1 -0
  176. package/form/selects/Dropdown/index.cjs.map +1 -1
  177. package/form/selects/Dropdown/index.js +1 -0
  178. package/form/selects/Dropdown/index.js.map +1 -1
  179. package/form/selects/ListBox/index.cjs +1 -0
  180. package/form/selects/ListBox/index.cjs.map +1 -1
  181. package/form/selects/ListBox/index.js +1 -0
  182. package/form/selects/ListBox/index.js.map +1 -1
  183. package/form/selects/MultiSelect/index.cjs +9 -1
  184. package/form/selects/MultiSelect/index.cjs.map +1 -1
  185. package/form/selects/MultiSelect/index.js +10 -2
  186. package/form/selects/MultiSelect/index.js.map +1 -1
  187. package/form/selects/TreeSelect/index.cjs +1 -0
  188. package/form/selects/TreeSelect/index.cjs.map +1 -1
  189. package/form/selects/TreeSelect/index.js +1 -0
  190. package/form/selects/TreeSelect/index.js.map +1 -1
  191. package/form/selects/helpers/SelectPopupOverlay.cjs +1 -0
  192. package/form/selects/helpers/SelectPopupOverlay.cjs.map +1 -1
  193. package/form/selects/helpers/SelectPopupOverlay.js +1 -0
  194. package/form/selects/helpers/SelectPopupOverlay.js.map +1 -1
  195. package/form-renderer/components/fields/FileUploader/index.cjs +1 -0
  196. package/form-renderer/components/fields/FileUploader/index.cjs.map +1 -1
  197. package/form-renderer/components/fields/FileUploader/index.js +1 -0
  198. package/form-renderer/components/fields/FileUploader/index.js.map +1 -1
  199. package/form-renderer/components/fields/Group/index.cjs +1 -0
  200. package/form-renderer/components/fields/Group/index.cjs.map +1 -1
  201. package/form-renderer/components/fields/Group/index.js +1 -0
  202. package/form-renderer/components/fields/Group/index.js.map +1 -1
  203. package/form-renderer/components/fields/Radios/index.cjs +1 -0
  204. package/form-renderer/components/fields/Radios/index.cjs.map +1 -1
  205. package/form-renderer/components/fields/Radios/index.js +1 -0
  206. package/form-renderer/components/fields/Radios/index.js.map +1 -1
  207. package/form-renderer/components/fields/Select/index.cjs +1 -0
  208. package/form-renderer/components/fields/Select/index.cjs.map +1 -1
  209. package/form-renderer/components/fields/Select/index.js +1 -0
  210. package/form-renderer/components/fields/Select/index.js.map +1 -1
  211. package/hooks/main.cjs +1 -0
  212. package/hooks/main.cjs.map +1 -1
  213. package/hooks/main.js +1 -0
  214. package/hooks/main.js.map +1 -1
  215. package/hooks/useBreadcrumbTrail.cjs +21 -0
  216. package/hooks/useBreadcrumbTrail.cjs.map +1 -0
  217. package/hooks/useBreadcrumbTrail.js +16 -0
  218. package/hooks/useBreadcrumbTrail.js.map +1 -0
  219. package/hooks/useComponentDefaults.cjs +50 -8
  220. package/hooks/useComponentDefaults.cjs.map +1 -1
  221. package/hooks/useComponentDefaults.js +50 -8
  222. package/hooks/useComponentDefaults.js.map +1 -1
  223. package/index.cjs +5 -0
  224. package/index.cjs.map +1 -1
  225. package/index.d.ts +245 -19
  226. package/index.js +2 -0
  227. package/index.js.map +1 -1
  228. package/package.json +1 -1
  229. package/packages/types/src/Theme/defaultTheme.cjs +24 -4
  230. package/packages/types/src/Theme/defaultTheme.cjs.map +1 -1
  231. package/packages/types/src/Theme/defaultTheme.js +24 -4
  232. package/packages/types/src/Theme/defaultTheme.js.map +1 -1
  233. package/primitives/Card/index.cjs +1 -0
  234. package/primitives/Card/index.cjs.map +1 -1
  235. package/primitives/Card/index.js +1 -0
  236. package/primitives/Card/index.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/form/inputs/InputText/index.native.tsx"],"sourcesContent":["import React, {ReactPortal} from \"react\";\nimport type { IKitsInputText } from \"@lmb-it/kitsconcerto-types\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { applyKeyFilterKeepPrev } from \"../../helpers/native/keyfilter\";\nimport { keyboardTypeFromKeyFilter } from \"../../helpers/native/keyboardFromFilter\";\nimport { FloatLabelNative } from \"../../helpers/native/FloatLabel\";\nimport {\n KitsCoreInput as Input,\n KitsCoreInputField as InputField,\n KitsCoreInputSlot as InputSlot,\n style,\n} from \"@lmb-it/kitsconcertomobile\";\nimport { View } from \"react-native\";\nimport {useComponentDefaults, useFocusStyles, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\nimport {useFormFieldKeyboardNav} from \"../../../hooks/useFormFieldKeyboardNav\";\nimport {mergeRefs} from \"../../../utils/mergeRefs\";\nimport { useLanguage } from \"../../../_compat\";\n\nconst KitsInputText = ({ ref, ...rawProps }: IKitsInputText) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('InputText', rawProps, 'Input');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const { isRTL } = useLanguage();\n\n const {\n id,\n label,\n rightAddon,\n leftAddon,\n errors,\n invalid,\n hideError,\n required,\n keyFilter,\n value,\n defaultValue,\n attached,\n onChange,\n disabled,\n helperText,\n isFloatedLabel,\n placeholder,\n containerStyle,\n localProps,\n keyboardNavId,\n keyboardType,\n maxLength,\n minLength: _minLength, // submit-time only — RN has no minLength prop\n ...rest\n } = props;\n\n\n const resolvedKeyboardType = keyboardType ?? keyboardTypeFromKeyFilter(keyFilter as any);\n\n const {inputRef, navProps} = useFormFieldKeyboardNav(keyboardNavId ?? id);\n\n /** 🔑 controlled detection */\n const isControlled = value !== undefined;\n\n /** 🔹 internal state only for uncontrolled */\n const [internalValue, setInternalValue] = React.useState<string>(\n String(defaultValue ?? \"\")\n );\n\n /** 🔹 focused state (for FloatLabel + _focus styles) */\n const [isFocused, setFocused] = React.useState(false);\n const rootStyle = resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle;\n\n\n\n const focusResolvedStyle = useFocusStyles(rootStyle, isFocused);\n\n\n /** 🔄 sync only when controlled */\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue(String(value ?? \"\"));\n }\n }, [isControlled, value]);\n\n /** ✍️ change handler */\n const handleChangeText = (nextRaw: string) => {\n const prev = isControlled ? String(value ?? \"\") : internalValue;\n\n const filtered = keyFilter\n ? applyKeyFilterKeepPrev(prev, nextRaw, keyFilter as any)\n : nextRaw;\n\n if (!isControlled) {\n setInternalValue(filtered);\n }\n\n onChange?.({\n target: { value: filtered },\n } as any);\n };\n\n const displayValue = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n const inputEl = (\n <Input\n {...(localProps as any)}\n isDisabled={!!disabled}\n isInvalid={!!invalid}\n isFocused={isFocused}\n style={resolvedRootStyle}\n {...(rest as any)}\n >\n <InputField\n ref={mergeRefs(inputRef, ref)}\n value={displayValue}\n placeholder={isFloatedLabel ? undefined : placeholder}\n editable={!disabled}\n keyboardType={resolvedKeyboardType}\n maxLength={maxLength}\n onChangeText={handleChangeText}\n onFocus={(e: any) => {\n setFocused(true);\n (rest as any)?.onFocus?.(e);\n }}\n onBlur={(e: any) => {\n setFocused(false);\n (rest as any)?.onBlur?.(e);\n }}\n // Locale-aware alignment — placeholder and typed text both\n // need explicit textAlign so they start at the reading edge.\n // RN's TextInput default of 'auto' picks alignment from the\n // first character, which fails on empty inputs (placeholder\n // sits at the wrong edge in RTL).\n style={{\n textAlign: isRTL ? \"right\" : \"left\",\n writingDirection: isRTL ? \"rtl\" : \"ltr\",\n }}\n {...navProps}\n />\n </Input>\n );\n\n // `attached`: input is being placed inside an outer group that already\n // owns the chrome (FormContainer is upstream). Mirror web: return the\n // bare Input element. Addon rendering belongs to FormContainer alone —\n // see helpers/FormContainer/index.native.tsx.\n if(attached){\n return isFloatedLabel ? (\n <FloatLabelNative\n label={\n typeof label === \"string\"\n ? label\n : (label as any)?.text ?? \"\"\n }\n value={displayValue}\n isFocused={isFocused}\n disabled={disabled}\n onFocusRequest={() => setFocused(true)}\n >\n <View style={{ width: \"100%\" }}>\n {inputEl}\n </View>\n </FloatLabelNative>\n ) : (\n inputEl\n )\n }\n\n return (\n <KitsContainer\n id={id}\n disabled={disabled}\n hideError={hideError}\n isFloatedLabel={isFloatedLabel}\n helperText={helperText}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n errors={errors}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n {isFloatedLabel ? (\n <FloatLabelNative\n label={\n typeof label === \"string\"\n ? label\n : (label as any)?.text ?? \"\"\n }\n value={displayValue}\n isFocused={isFocused}\n disabled={disabled}\n onFocusRequest={() => setFocused(true)}\n >\n {inputEl}\n </FloatLabelNative>\n ) : (\n inputEl\n )}\n </KitsContainer>\n );\n};\n\nexport default KitsInputText;\n"],"names":["useComponentDefaults","useResolvedStyle","useLanguage","keyboardTypeFromKeyFilter","useFormFieldKeyboardNav","useFocusStyles","applyKeyFilterKeepPrev","jsx","Input","InputField","mergeRefs","FloatLabelNative","View","KitsContainer"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/form/inputs/InputText/index.native.tsx"],"sourcesContent":["import React, {ReactPortal} from \"react\";\nimport type { IKitsInputText } from \"@lmb-it/kitsconcerto-types\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { applyKeyFilterKeepPrev } from \"../../helpers/native/keyfilter\";\nimport { keyboardTypeFromKeyFilter } from \"../../helpers/native/keyboardFromFilter\";\nimport { FloatLabelNative } from \"../../helpers/native/FloatLabel\";\nimport {\n KitsCoreInput as Input,\n KitsCoreInputField as InputField,\n KitsCoreInputSlot as InputSlot,\n style,\n} from \"@lmb-it/kitsconcertomobile\";\nimport { View } from \"react-native\";\nimport {useComponentDefaults, useFocusStyles, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\nimport {useFormFieldKeyboardNav} from \"../../../hooks/useFormFieldKeyboardNav\";\nimport {mergeRefs} from \"../../../utils/mergeRefs\";\nimport { useLanguage } from \"../../../_compat\";\n\nconst KitsInputText = ({ ref, ...rawProps }: IKitsInputText) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('InputText', rawProps, 'Input');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const { isRTL } = useLanguage();\n\n const {\n id,\n label,\n rightAddon,\n leftAddon,\n errors,\n invalid,\n hideError,\n required,\n keyFilter,\n value,\n defaultValue,\n attached,\n onChange,\n disabled,\n helperText,\n isFloatedLabel,\n placeholder,\n containerStyle,\n localProps,\n keyboardNavId,\n keyboardType,\n maxLength,\n minLength: _minLength, // submit-time only — RN has no minLength prop\n ...rest\n } = props;\n\n\n const resolvedKeyboardType = keyboardType ?? keyboardTypeFromKeyFilter(keyFilter as any);\n\n const {inputRef, navProps} = useFormFieldKeyboardNav(keyboardNavId ?? id);\n\n /** 🔑 controlled detection */\n const isControlled = value !== undefined;\n\n /** 🔹 internal state only for uncontrolled */\n const [internalValue, setInternalValue] = React.useState<string>(\n String(defaultValue ?? \"\")\n );\n\n /** 🔹 focused state (for FloatLabel + _focus styles) */\n const [isFocused, setFocused] = React.useState(false);\n const rootStyle = resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle;\n\n\n\n const focusResolvedStyle = useFocusStyles(rootStyle, isFocused);\n\n\n /** 🔄 sync only when controlled */\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue(String(value ?? \"\"));\n }\n }, [isControlled, value]);\n\n /** ✍️ change handler */\n const handleChangeText = (nextRaw: string) => {\n const prev = isControlled ? String(value ?? \"\") : internalValue;\n\n const filtered = keyFilter\n ? applyKeyFilterKeepPrev(prev, nextRaw, keyFilter as any)\n : nextRaw;\n\n if (!isControlled) {\n setInternalValue(filtered);\n }\n\n onChange?.({\n target: { value: filtered },\n } as any);\n };\n\n const displayValue = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n const inputEl = (\n <Input\n {...(localProps as any)}\n isDisabled={!!disabled}\n isInvalid={!!invalid}\n isFocused={isFocused}\n style={resolvedRootStyle}\n {...(rest as any)}\n >\n <InputField\n ref={mergeRefs(inputRef, ref)}\n value={displayValue}\n placeholder={isFloatedLabel ? undefined : placeholder}\n editable={!disabled}\n keyboardType={resolvedKeyboardType}\n maxLength={maxLength}\n onChangeText={handleChangeText}\n onFocus={(e: any) => {\n setFocused(true);\n (rest as any)?.onFocus?.(e);\n }}\n onBlur={(e: any) => {\n setFocused(false);\n (rest as any)?.onBlur?.(e);\n }}\n // Locale-aware alignment — placeholder and typed text both\n // need explicit textAlign so they start at the reading edge.\n // RN's TextInput default of 'auto' picks alignment from the\n // first character, which fails on empty inputs (placeholder\n // sits at the wrong edge in RTL).\n style={{\n textAlign: isRTL ? \"right\" : \"left\",\n writingDirection: isRTL ? \"rtl\" : \"ltr\",\n }}\n {...navProps}\n />\n </Input>\n );\n\n // `attached`: input is being placed inside an outer group that already\n // owns the chrome (FormContainer is upstream). Mirror web: return the\n // bare Input element. Addon rendering belongs to FormContainer alone —\n // see helpers/FormContainer/index.native.tsx.\n if(attached){\n return isFloatedLabel ? (\n <FloatLabelNative\n label={\n typeof label === \"string\"\n ? label\n : (label as any)?.text ?? \"\"\n }\n value={displayValue}\n isFocused={isFocused}\n disabled={disabled}\n onFocusRequest={() => setFocused(true)}\n >\n <View style={{ width: \"100%\" }}>\n {inputEl}\n </View>\n </FloatLabelNative>\n ) : (\n inputEl\n )\n }\n\n return (\n <KitsContainer\n id={id}\n disabled={disabled}\n hideError={hideError}\n isFloatedLabel={isFloatedLabel}\n helperText={helperText}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n errors={errors}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n {isFloatedLabel ? (\n <FloatLabelNative\n label={\n typeof label === \"string\"\n ? label\n : (label as any)?.text ?? \"\"\n }\n value={displayValue}\n isFocused={isFocused}\n disabled={disabled}\n onFocusRequest={() => setFocused(true)}\n >\n {inputEl}\n </FloatLabelNative>\n ) : (\n inputEl\n )}\n </KitsContainer>\n );\n};\n\nexport default KitsInputText;\n"],"names":["useComponentDefaults","useResolvedStyle","useLanguage","keyboardTypeFromKeyFilter","useFormFieldKeyboardNav","useFocusStyles","applyKeyFilterKeepPrev","jsx","Input","InputField","mergeRefs","FloatLabelNative","View","KitsContainer"],"mappings":"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"}
@@ -87,6 +87,7 @@ import '../../../apps/mobile/src/Core/Input/Slot.js';
87
87
  import { useLanguage } from '../../../hooks/locale.js';
88
88
  import '../../../contexts/DialogContext.js';
89
89
  import '../../../contexts/PermissionsContext.js';
90
+ import '../../../contexts/BreadcrumbContext.js';
90
91
  import useComponentDefaults from '../../../hooks/useComponentDefaults.js';
91
92
  import useResolvedStyle from '../../../hooks/useResolvedStyle.js';
92
93
  import { useFocusStyles } from '../../../hooks/useFocusStyles.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/inputs/InputText/index.native.tsx"],"sourcesContent":["import React, {ReactPortal} from \"react\";\nimport type { IKitsInputText } from \"@lmb-it/kitsconcerto-types\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { applyKeyFilterKeepPrev } from \"../../helpers/native/keyfilter\";\nimport { keyboardTypeFromKeyFilter } from \"../../helpers/native/keyboardFromFilter\";\nimport { FloatLabelNative } from \"../../helpers/native/FloatLabel\";\nimport {\n KitsCoreInput as Input,\n KitsCoreInputField as InputField,\n KitsCoreInputSlot as InputSlot,\n style,\n} from \"@lmb-it/kitsconcertomobile\";\nimport { View } from \"react-native\";\nimport {useComponentDefaults, useFocusStyles, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\nimport {useFormFieldKeyboardNav} from \"../../../hooks/useFormFieldKeyboardNav\";\nimport {mergeRefs} from \"../../../utils/mergeRefs\";\nimport { useLanguage } from \"../../../_compat\";\n\nconst KitsInputText = ({ ref, ...rawProps }: IKitsInputText) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('InputText', rawProps, 'Input');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const { isRTL } = useLanguage();\n\n const {\n id,\n label,\n rightAddon,\n leftAddon,\n errors,\n invalid,\n hideError,\n required,\n keyFilter,\n value,\n defaultValue,\n attached,\n onChange,\n disabled,\n helperText,\n isFloatedLabel,\n placeholder,\n containerStyle,\n localProps,\n keyboardNavId,\n keyboardType,\n maxLength,\n minLength: _minLength, // submit-time only — RN has no minLength prop\n ...rest\n } = props;\n\n\n const resolvedKeyboardType = keyboardType ?? keyboardTypeFromKeyFilter(keyFilter as any);\n\n const {inputRef, navProps} = useFormFieldKeyboardNav(keyboardNavId ?? id);\n\n /** 🔑 controlled detection */\n const isControlled = value !== undefined;\n\n /** 🔹 internal state only for uncontrolled */\n const [internalValue, setInternalValue] = React.useState<string>(\n String(defaultValue ?? \"\")\n );\n\n /** 🔹 focused state (for FloatLabel + _focus styles) */\n const [isFocused, setFocused] = React.useState(false);\n const rootStyle = resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle;\n\n\n\n const focusResolvedStyle = useFocusStyles(rootStyle, isFocused);\n\n\n /** 🔄 sync only when controlled */\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue(String(value ?? \"\"));\n }\n }, [isControlled, value]);\n\n /** ✍️ change handler */\n const handleChangeText = (nextRaw: string) => {\n const prev = isControlled ? String(value ?? \"\") : internalValue;\n\n const filtered = keyFilter\n ? applyKeyFilterKeepPrev(prev, nextRaw, keyFilter as any)\n : nextRaw;\n\n if (!isControlled) {\n setInternalValue(filtered);\n }\n\n onChange?.({\n target: { value: filtered },\n } as any);\n };\n\n const displayValue = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n const inputEl = (\n <Input\n {...(localProps as any)}\n isDisabled={!!disabled}\n isInvalid={!!invalid}\n isFocused={isFocused}\n style={resolvedRootStyle}\n {...(rest as any)}\n >\n <InputField\n ref={mergeRefs(inputRef, ref)}\n value={displayValue}\n placeholder={isFloatedLabel ? undefined : placeholder}\n editable={!disabled}\n keyboardType={resolvedKeyboardType}\n maxLength={maxLength}\n onChangeText={handleChangeText}\n onFocus={(e: any) => {\n setFocused(true);\n (rest as any)?.onFocus?.(e);\n }}\n onBlur={(e: any) => {\n setFocused(false);\n (rest as any)?.onBlur?.(e);\n }}\n // Locale-aware alignment — placeholder and typed text both\n // need explicit textAlign so they start at the reading edge.\n // RN's TextInput default of 'auto' picks alignment from the\n // first character, which fails on empty inputs (placeholder\n // sits at the wrong edge in RTL).\n style={{\n textAlign: isRTL ? \"right\" : \"left\",\n writingDirection: isRTL ? \"rtl\" : \"ltr\",\n }}\n {...navProps}\n />\n </Input>\n );\n\n // `attached`: input is being placed inside an outer group that already\n // owns the chrome (FormContainer is upstream). Mirror web: return the\n // bare Input element. Addon rendering belongs to FormContainer alone —\n // see helpers/FormContainer/index.native.tsx.\n if(attached){\n return isFloatedLabel ? (\n <FloatLabelNative\n label={\n typeof label === \"string\"\n ? label\n : (label as any)?.text ?? \"\"\n }\n value={displayValue}\n isFocused={isFocused}\n disabled={disabled}\n onFocusRequest={() => setFocused(true)}\n >\n <View style={{ width: \"100%\" }}>\n {inputEl}\n </View>\n </FloatLabelNative>\n ) : (\n inputEl\n )\n }\n\n return (\n <KitsContainer\n id={id}\n disabled={disabled}\n hideError={hideError}\n isFloatedLabel={isFloatedLabel}\n helperText={helperText}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n errors={errors}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n {isFloatedLabel ? (\n <FloatLabelNative\n label={\n typeof label === \"string\"\n ? label\n : (label as any)?.text ?? \"\"\n }\n value={displayValue}\n isFocused={isFocused}\n disabled={disabled}\n onFocusRequest={() => setFocused(true)}\n >\n {inputEl}\n </FloatLabelNative>\n ) : (\n inputEl\n )}\n </KitsContainer>\n );\n};\n\nexport default KitsInputText;\n"],"names":["Input","InputField"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAM,gBAAgB,CAAC,EAAE,GAAA,EAAK,GAAG,UAAS,KAAsB;AAC5D,EAAA,MAAM,EAAC,aAAa,KAAA,EAAO,UAAA,EAAY,eAAa,GAAI,oBAAA,CAAqB,WAAA,EAAa,QAAA,EAAU,OAAO,CAAA;AAC3G,EAAA,MAAM,kBAAA,GAAqB,iBAAiB,UAAU,CAAA;AACtD,EAAA,MAAM,iBAAA,GAAoB,gBAAA,CAAiB,aAAA,EAAe,IAAA,IAAQ,EAAE,CAAA;AACpE,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,WAAA,EAAY;AAE9B,EAAA,MAAM;AAAA,IACF,EAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,EAAW,UAAA;AAAA;AAAA,IACX,GAAG;AAAA,GACP,GAAI,KAAA;AAGJ,EAAA,MAAM,oBAAA,GAAuB,YAAA,IAAgB,yBAAA,CAA0B,SAAgB,CAAA;AAEvF,EAAA,MAAM,EAAC,QAAA,EAAU,QAAA,EAAQ,GAAI,uBAAA,CAAwB,iBAAiB,EAAE,CAAA;AAGxE,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAG/B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,KAAA,CAAM,QAAA;AAAA,IAC5C,MAAA,CAAO,gBAAgB,EAAE;AAAA,GAC7B;AAGA,EAAA,MAAM,CAAC,SAAA,EAAW,UAAU,CAAA,GAAI,KAAA,CAAM,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,SAAA,GAAY,qBAAqB,MAAA,CAAO,IAAA,CAAK,iBAAiB,CAAA,CAAE,MAAA,GAAS,IAAI,iBAAA,GAAoB,kBAAA;AAIvG,EAA2B,cAAA,CAAe,SAAA,EAAW,SAAS;AAI9D,EAAA,KAAA,CAAM,UAAU,MAAM;AAClB,IAAA,IAAI,YAAA,EAAc;AACd,MAAA,gBAAA,CAAiB,MAAA,CAAO,KAAA,IAAS,EAAE,CAAC,CAAA;AAAA,IACxC;AAAA,EACJ,CAAA,EAAG,CAAC,YAAA,EAAc,KAAK,CAAC,CAAA;AAGxB,EAAA,MAAM,gBAAA,GAAmB,CAAC,OAAA,KAAoB;AAC1C,IAAA,MAAM,IAAA,GAAO,YAAA,GAAe,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA,GAAI,aAAA;AAElD,IAAA,MAAM,WAAW,SAAA,GACX,sBAAA,CAAuB,IAAA,EAAM,OAAA,EAAS,SAAgB,CAAA,GACtD,OAAA;AAEN,IAAA,IAAI,CAAC,YAAA,EAAc;AACf,MAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,IAC7B;AAEA,IAAA,QAAA,GAAW;AAAA,MACP,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA;AAAS,KACtB,CAAA;AAAA,EACZ,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,YAAA,GACf,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA,GAClB,aAAA;AAEN,EAAA,MAAM,OAAA,mBACF,GAAA;AAAA,IAACA,aAAA;AAAA,IAAA;AAAA,MACI,GAAI,UAAA;AAAA,MACL,UAAA,EAAY,CAAC,CAAC,QAAA;AAAA,MACd,SAAA,EAAW,CAAC,CAAC,OAAA;AAAA,MACb,SAAA;AAAA,MACA,KAAA,EAAO,iBAAA;AAAA,MACN,GAAI,IAAA;AAAA,MAEL,QAAA,kBAAA,GAAA;AAAA,QAACC,kBAAA;AAAA,QAAA;AAAA,UACG,GAAA,EAAK,SAAA,CAAU,QAAA,EAAU,GAAG,CAAA;AAAA,UAC5B,KAAA,EAAO,YAAA;AAAA,UACP,WAAA,EAAa,iBAAiB,MAAA,GAAY,WAAA;AAAA,UAC1C,UAAU,CAAC,QAAA;AAAA,UACX,YAAA,EAAc,oBAAA;AAAA,UACd,SAAA;AAAA,UACA,YAAA,EAAc,gBAAA;AAAA,UACd,OAAA,EAAS,CAAC,CAAA,KAAW;AACjB,YAAA,UAAA,CAAW,IAAI,CAAA;AACf,YAAC,IAAA,EAAc,UAAU,CAAC,CAAA;AAAA,UAC9B,CAAA;AAAA,UACA,MAAA,EAAQ,CAAC,CAAA,KAAW;AAChB,YAAA,UAAA,CAAW,KAAK,CAAA;AAChB,YAAC,IAAA,EAAc,SAAS,CAAC,CAAA;AAAA,UAC7B,CAAA;AAAA,UAMA,KAAA,EAAO;AAAA,YACH,SAAA,EAAW,QAAQ,OAAA,GAAU,MAAA;AAAA,YAC7B,gBAAA,EAAkB,QAAQ,KAAA,GAAQ;AAAA,WACtC;AAAA,UACC,GAAG;AAAA;AAAA;AACR;AAAA,GACJ;AAOJ,EAAA,IAAG,QAAA,EAAS;AACR,IAAA,OAAO,cAAA,mBACH,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACG,OACI,OAAO,KAAA,KAAU,QAAA,GACX,KAAA,GACC,OAAe,IAAA,IAAQ,EAAA;AAAA,QAElC,KAAA,EAAO,YAAA;AAAA,QACP,SAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA,EAAgB,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,QAErC,8BAAC,IAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,IACjB,QAAA,EAAA,OAAA,EACL;AAAA;AAAA,KACJ,GAEA,OAAA;AAAA,EAER;AAEA,EAAA,uBACI,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACG,EAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MAEC,QAAA,EAAA,cAAA,mBACG,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACG,OACI,OAAO,KAAA,KAAU,QAAA,GACX,KAAA,GACC,OAAe,IAAA,IAAQ,EAAA;AAAA,UAElC,KAAA,EAAO,YAAA;AAAA,UACP,SAAA;AAAA,UACA,QAAA;AAAA,UACA,cAAA,EAAgB,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,UAEpC,QAAA,EAAA;AAAA;AAAA,OACL,GAEA;AAAA;AAAA,GAER;AAER;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/inputs/InputText/index.native.tsx"],"sourcesContent":["import React, {ReactPortal} from \"react\";\nimport type { IKitsInputText } from \"@lmb-it/kitsconcerto-types\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { applyKeyFilterKeepPrev } from \"../../helpers/native/keyfilter\";\nimport { keyboardTypeFromKeyFilter } from \"../../helpers/native/keyboardFromFilter\";\nimport { FloatLabelNative } from \"../../helpers/native/FloatLabel\";\nimport {\n KitsCoreInput as Input,\n KitsCoreInputField as InputField,\n KitsCoreInputSlot as InputSlot,\n style,\n} from \"@lmb-it/kitsconcertomobile\";\nimport { View } from \"react-native\";\nimport {useComponentDefaults, useFocusStyles, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\nimport {useFormFieldKeyboardNav} from \"../../../hooks/useFormFieldKeyboardNav\";\nimport {mergeRefs} from \"../../../utils/mergeRefs\";\nimport { useLanguage } from \"../../../_compat\";\n\nconst KitsInputText = ({ ref, ...rawProps }: IKitsInputText) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('InputText', rawProps, 'Input');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const { isRTL } = useLanguage();\n\n const {\n id,\n label,\n rightAddon,\n leftAddon,\n errors,\n invalid,\n hideError,\n required,\n keyFilter,\n value,\n defaultValue,\n attached,\n onChange,\n disabled,\n helperText,\n isFloatedLabel,\n placeholder,\n containerStyle,\n localProps,\n keyboardNavId,\n keyboardType,\n maxLength,\n minLength: _minLength, // submit-time only — RN has no minLength prop\n ...rest\n } = props;\n\n\n const resolvedKeyboardType = keyboardType ?? keyboardTypeFromKeyFilter(keyFilter as any);\n\n const {inputRef, navProps} = useFormFieldKeyboardNav(keyboardNavId ?? id);\n\n /** 🔑 controlled detection */\n const isControlled = value !== undefined;\n\n /** 🔹 internal state only for uncontrolled */\n const [internalValue, setInternalValue] = React.useState<string>(\n String(defaultValue ?? \"\")\n );\n\n /** 🔹 focused state (for FloatLabel + _focus styles) */\n const [isFocused, setFocused] = React.useState(false);\n const rootStyle = resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle;\n\n\n\n const focusResolvedStyle = useFocusStyles(rootStyle, isFocused);\n\n\n /** 🔄 sync only when controlled */\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue(String(value ?? \"\"));\n }\n }, [isControlled, value]);\n\n /** ✍️ change handler */\n const handleChangeText = (nextRaw: string) => {\n const prev = isControlled ? String(value ?? \"\") : internalValue;\n\n const filtered = keyFilter\n ? applyKeyFilterKeepPrev(prev, nextRaw, keyFilter as any)\n : nextRaw;\n\n if (!isControlled) {\n setInternalValue(filtered);\n }\n\n onChange?.({\n target: { value: filtered },\n } as any);\n };\n\n const displayValue = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n const inputEl = (\n <Input\n {...(localProps as any)}\n isDisabled={!!disabled}\n isInvalid={!!invalid}\n isFocused={isFocused}\n style={resolvedRootStyle}\n {...(rest as any)}\n >\n <InputField\n ref={mergeRefs(inputRef, ref)}\n value={displayValue}\n placeholder={isFloatedLabel ? undefined : placeholder}\n editable={!disabled}\n keyboardType={resolvedKeyboardType}\n maxLength={maxLength}\n onChangeText={handleChangeText}\n onFocus={(e: any) => {\n setFocused(true);\n (rest as any)?.onFocus?.(e);\n }}\n onBlur={(e: any) => {\n setFocused(false);\n (rest as any)?.onBlur?.(e);\n }}\n // Locale-aware alignment — placeholder and typed text both\n // need explicit textAlign so they start at the reading edge.\n // RN's TextInput default of 'auto' picks alignment from the\n // first character, which fails on empty inputs (placeholder\n // sits at the wrong edge in RTL).\n style={{\n textAlign: isRTL ? \"right\" : \"left\",\n writingDirection: isRTL ? \"rtl\" : \"ltr\",\n }}\n {...navProps}\n />\n </Input>\n );\n\n // `attached`: input is being placed inside an outer group that already\n // owns the chrome (FormContainer is upstream). Mirror web: return the\n // bare Input element. Addon rendering belongs to FormContainer alone —\n // see helpers/FormContainer/index.native.tsx.\n if(attached){\n return isFloatedLabel ? (\n <FloatLabelNative\n label={\n typeof label === \"string\"\n ? label\n : (label as any)?.text ?? \"\"\n }\n value={displayValue}\n isFocused={isFocused}\n disabled={disabled}\n onFocusRequest={() => setFocused(true)}\n >\n <View style={{ width: \"100%\" }}>\n {inputEl}\n </View>\n </FloatLabelNative>\n ) : (\n inputEl\n )\n }\n\n return (\n <KitsContainer\n id={id}\n disabled={disabled}\n hideError={hideError}\n isFloatedLabel={isFloatedLabel}\n helperText={helperText}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n errors={errors}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n {isFloatedLabel ? (\n <FloatLabelNative\n label={\n typeof label === \"string\"\n ? label\n : (label as any)?.text ?? \"\"\n }\n value={displayValue}\n isFocused={isFocused}\n disabled={disabled}\n onFocusRequest={() => setFocused(true)}\n >\n {inputEl}\n </FloatLabelNative>\n ) : (\n inputEl\n )}\n </KitsContainer>\n );\n};\n\nexport default KitsInputText;\n"],"names":["Input","InputField"],"mappings":"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"}
@@ -93,6 +93,7 @@ var mergeRefs = require('../../../utils/mergeRefs.cjs');
93
93
  var locale = require('../../../hooks/locale.cjs');
94
94
  require('../../../contexts/DialogContext.cjs');
95
95
  require('../../../contexts/PermissionsContext.cjs');
96
+ require('../../../contexts/BreadcrumbContext.cjs');
96
97
  var useComponentDefaults = require('../../../hooks/useComponentDefaults.cjs');
97
98
  var useResolvedStyle = require('../../../hooks/useResolvedStyle.cjs');
98
99
  var KitsThemeProvider_native = require('../../../contexts/Theme/KitsThemeProvider.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/form/inputs/InputTextarea/index.native.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport type { IKitsInputTextarea } from \"@lmb-it/kitsconcerto-types\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { useSeparator } from \"../../../factory\";\nimport { applyKeyFilter } from \"../InputText/keyFilter.native\";\nimport { keyboardTypeFromKeyFilter } from \"../../helpers/native/keyboardFromFilter\";\nimport {useFormFieldKeyboardNav} from \"../../../hooks/useFormFieldKeyboardNav\";\nimport {mergeRefs} from \"../../../utils/mergeRefs\";\n\n// ✅ correct Gluestack components\nimport {\n Textarea,\n TextareaInput,\n} from \"@lmb-it/kitsconcertomobile\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\nimport { useLanguage } from \"../../../_compat\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\ntype NativeTextareaRef = {\n focus(): void;\n blur(): void;\n clear(): void;\n};\n\nconst KitsInputTextarea = forwardRef<\n NativeTextareaRef,\n IKitsInputTextarea\n>((rawProps, ref) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('Textarea', rawProps);\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const { isRTL } = useLanguage();\n /*\n * ⛔ THE TYPED TEXT HAD NO COLOUR OF ITS OWN — found on AlphaMatch's\n * offer composer, 22 Sep 2026: near-black on a dark field while typing.\n * `resolvedRootStyle`/`resolvedThemeStyle` DO carry `color: 'text'`, but\n * that lands on the outer `<Textarea>` wrapper, which is a View — RN does\n * not propagate `color` from a View into a nested TextInput's own text\n * rendering. `<TextareaInput>` is the actual RN TextInput and needs the\n * colour on ITS OWN style, the same way InputText's shared Field.tsx\n * always does (`color: resolveThemeTokenForNative('text')`).\n */\n const { resolveToken } = useKitsTheme();\n const resolvedRootColor =\n (resolvedRootStyle as any)?.color ?? (resolvedThemeStyle as any)?.color;\n const valueColor =\n typeof resolvedRootColor === \"string\" && resolvedRootColor.length > 0\n ? resolvedRootColor\n : resolveToken('text');\n const {\n id,\n label,\n value,\n defaultValue,\n onChange,\n keyFilter,\n errors,\n hideError,\n invalid,\n isFloatedLabel,\n disabled,\n helperText,\n inputSize,\n containerStyle,\n localProps,\n keyboardNavId,\n rows,\n autoResize,\n maxLength,\n minLength: _minLength, // submit-time only — RN has no minLength prop\n // Props that belong on the inner TextareaInput, not the outer wrapper.\n // Spreading nativeProps onto <Textarea> silently drops them because the\n // wrapper doesn't render text. Pull them out and forward explicitly so\n // placeholder, autoCapitalize, autoCorrect etc. actually take effect.\n placeholder,\n placeholderTextColor,\n autoCapitalize,\n autoCorrect,\n autoFocus,\n returnKeyType,\n ...rest\n } = props as IKitsInputTextarea & {\n placeholder?: string;\n placeholderTextColor?: string;\n autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters';\n autoCorrect?: boolean;\n autoFocus?: boolean;\n returnKeyType?: string;\n };\n\n const resolvedKeyboardType = keyboardTypeFromKeyFilter(keyFilter as any);\n\n // Calculate height from rows: lineHeight × rows + vertical padding\n const LINE_HEIGHT = 20;\n const VERTICAL_PADDING = 16;\n const calculatedHeight = rows ? (LINE_HEIGHT * rows) + VERTICAL_PADDING : undefined;\n\n const {inputRef, navProps} = useFormFieldKeyboardNav(keyboardNavId ?? id);\n\n const isControlled = value !== undefined;\n\n const { cssProps, nativeProps } = useSeparator<any>({\n ...(rest as any),\n ...(localProps as any),\n });\n\n const fieldRef = useRef<any>(null);\n\n /** internal state for uncontrolled mode */\n const [internalValue, setInternalValue] = useState<string>(\n () => String(defaultValue ?? \"\")\n );\n\n /** sync when controlled */\n useEffect(() => {\n if (isControlled) {\n setInternalValue(String(value ?? \"\"));\n }\n }, [isControlled, value]);\n\n useImperativeHandle(ref, () => ({\n focus: () => fieldRef.current?.focus?.(),\n blur: () => fieldRef.current?.blur?.(),\n clear: () => {\n if (!isControlled) setInternalValue(\"\");\n onChange?.({ target: { value: \"\" } } as any);\n },\n }));\n\n const handleChangeText = useCallback(\n (nextRaw: string) => {\n const prev = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n const filtered = keyFilter\n ? applyKeyFilter(prev, nextRaw, keyFilter as any)\n : nextRaw;\n\n if (!isControlled) {\n setInternalValue(filtered);\n }\n\n // Prime-like event\n onChange?.({ target: { value: filtered } } as any);\n },\n [keyFilter, onChange, isControlled, internalValue, value],\n );\n\n const displayValue = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n return (\n <KitsContainer\n id={id}\n helperText={helperText}\n isFloatedLabel={isFloatedLabel}\n errors={errors}\n invalid={invalid}\n label={label}\n hideError={hideError}\n disabled={disabled}\n inputSize={inputSize}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n <Textarea\n size={inputSize ?? \"md\"}\n isDisabled={!!disabled}\n isInvalid={!!invalid}\n style={{\n ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle),\n ...(cssProps as any),\n ...(calculatedHeight ? {height: calculatedHeight, minHeight: calculatedHeight} : {}),\n }}\n {...nativeProps}\n >\n <TextareaInput\n ref={mergeRefs(inputRef, fieldRef)}\n value={displayValue}\n onChangeText={handleChangeText}\n editable={!disabled}\n numberOfLines={rows ?? 4}\n keyboardType={resolvedKeyboardType}\n maxLength={maxLength}\n textAlignVertical=\"top\"\n // Forward input-level props that were destructured off `props`\n // — these would never reach the inner input if we relied on\n // `nativeProps` because nativeProps is spread on the outer\n // <Textarea> wrapper, which doesn't render text.\n placeholder={placeholder}\n placeholderTextColor={placeholderTextColor}\n autoCapitalize={autoCapitalize}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n returnKeyType={returnKeyType as any}\n // Inline padding so the cursor isn't flush against the edge\n // when the consumer overrides height via `rows`. Without\n // this the height inline-style replaces Gluestack's default\n // padding and the caret renders at (0,0) of the textarea.\n style={{\n paddingHorizontal: 12,\n paddingVertical: 8,\n textAlign: isRTL ? \"right\" : \"left\",\n writingDirection: isRTL ? \"rtl\" : \"ltr\",\n color: valueColor,\n // ...(calculatedHeight ? {height: calculatedHeight - VERTICAL_PADDING} : {}),\n }}\n {...navProps}\n />\n </Textarea>\n </KitsContainer>\n );\n});\n\nKitsInputTextarea.displayName = \"KitsInputTextarea\";\nexport default KitsInputTextarea;\n"],"names":["forwardRef","useComponentDefaults","useResolvedStyle","useLanguage","useKitsTheme","keyboardTypeFromKeyFilter","useFormFieldKeyboardNav","useSeparator","useRef","useState","useEffect","useImperativeHandle","useCallback","applyKeyFilter","jsx","KitsContainer","Textarea","TextareaInput","mergeRefs"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/form/inputs/InputTextarea/index.native.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport type { IKitsInputTextarea } from \"@lmb-it/kitsconcerto-types\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { useSeparator } from \"../../../factory\";\nimport { applyKeyFilter } from \"../InputText/keyFilter.native\";\nimport { keyboardTypeFromKeyFilter } from \"../../helpers/native/keyboardFromFilter\";\nimport {useFormFieldKeyboardNav} from \"../../../hooks/useFormFieldKeyboardNav\";\nimport {mergeRefs} from \"../../../utils/mergeRefs\";\n\n// ✅ correct Gluestack components\nimport {\n Textarea,\n TextareaInput,\n} from \"@lmb-it/kitsconcertomobile\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\nimport { useLanguage } from \"../../../_compat\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\ntype NativeTextareaRef = {\n focus(): void;\n blur(): void;\n clear(): void;\n};\n\nconst KitsInputTextarea = forwardRef<\n NativeTextareaRef,\n IKitsInputTextarea\n>((rawProps, ref) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('Textarea', rawProps);\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const { isRTL } = useLanguage();\n /*\n * ⛔ THE TYPED TEXT HAD NO COLOUR OF ITS OWN — found on AlphaMatch's\n * offer composer, 22 Sep 2026: near-black on a dark field while typing.\n * `resolvedRootStyle`/`resolvedThemeStyle` DO carry `color: 'text'`, but\n * that lands on the outer `<Textarea>` wrapper, which is a View — RN does\n * not propagate `color` from a View into a nested TextInput's own text\n * rendering. `<TextareaInput>` is the actual RN TextInput and needs the\n * colour on ITS OWN style, the same way InputText's shared Field.tsx\n * always does (`color: resolveThemeTokenForNative('text')`).\n */\n const { resolveToken } = useKitsTheme();\n const resolvedRootColor =\n (resolvedRootStyle as any)?.color ?? (resolvedThemeStyle as any)?.color;\n const valueColor =\n typeof resolvedRootColor === \"string\" && resolvedRootColor.length > 0\n ? resolvedRootColor\n : resolveToken('text');\n const {\n id,\n label,\n value,\n defaultValue,\n onChange,\n keyFilter,\n errors,\n hideError,\n invalid,\n isFloatedLabel,\n disabled,\n helperText,\n inputSize,\n containerStyle,\n localProps,\n keyboardNavId,\n rows,\n autoResize,\n maxLength,\n minLength: _minLength, // submit-time only — RN has no minLength prop\n // Props that belong on the inner TextareaInput, not the outer wrapper.\n // Spreading nativeProps onto <Textarea> silently drops them because the\n // wrapper doesn't render text. Pull them out and forward explicitly so\n // placeholder, autoCapitalize, autoCorrect etc. actually take effect.\n placeholder,\n placeholderTextColor,\n autoCapitalize,\n autoCorrect,\n autoFocus,\n returnKeyType,\n ...rest\n } = props as IKitsInputTextarea & {\n placeholder?: string;\n placeholderTextColor?: string;\n autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters';\n autoCorrect?: boolean;\n autoFocus?: boolean;\n returnKeyType?: string;\n };\n\n const resolvedKeyboardType = keyboardTypeFromKeyFilter(keyFilter as any);\n\n // Calculate height from rows: lineHeight × rows + vertical padding\n const LINE_HEIGHT = 20;\n const VERTICAL_PADDING = 16;\n const calculatedHeight = rows ? (LINE_HEIGHT * rows) + VERTICAL_PADDING : undefined;\n\n const {inputRef, navProps} = useFormFieldKeyboardNav(keyboardNavId ?? id);\n\n const isControlled = value !== undefined;\n\n const { cssProps, nativeProps } = useSeparator<any>({\n ...(rest as any),\n ...(localProps as any),\n });\n\n const fieldRef = useRef<any>(null);\n\n /** internal state for uncontrolled mode */\n const [internalValue, setInternalValue] = useState<string>(\n () => String(defaultValue ?? \"\")\n );\n\n /** sync when controlled */\n useEffect(() => {\n if (isControlled) {\n setInternalValue(String(value ?? \"\"));\n }\n }, [isControlled, value]);\n\n useImperativeHandle(ref, () => ({\n focus: () => fieldRef.current?.focus?.(),\n blur: () => fieldRef.current?.blur?.(),\n clear: () => {\n if (!isControlled) setInternalValue(\"\");\n onChange?.({ target: { value: \"\" } } as any);\n },\n }));\n\n const handleChangeText = useCallback(\n (nextRaw: string) => {\n const prev = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n const filtered = keyFilter\n ? applyKeyFilter(prev, nextRaw, keyFilter as any)\n : nextRaw;\n\n if (!isControlled) {\n setInternalValue(filtered);\n }\n\n // Prime-like event\n onChange?.({ target: { value: filtered } } as any);\n },\n [keyFilter, onChange, isControlled, internalValue, value],\n );\n\n const displayValue = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n return (\n <KitsContainer\n id={id}\n helperText={helperText}\n isFloatedLabel={isFloatedLabel}\n errors={errors}\n invalid={invalid}\n label={label}\n hideError={hideError}\n disabled={disabled}\n inputSize={inputSize}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n <Textarea\n size={inputSize ?? \"md\"}\n isDisabled={!!disabled}\n isInvalid={!!invalid}\n style={{\n ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle),\n ...(cssProps as any),\n ...(calculatedHeight ? {height: calculatedHeight, minHeight: calculatedHeight} : {}),\n }}\n {...nativeProps}\n >\n <TextareaInput\n ref={mergeRefs(inputRef, fieldRef)}\n value={displayValue}\n onChangeText={handleChangeText}\n editable={!disabled}\n numberOfLines={rows ?? 4}\n keyboardType={resolvedKeyboardType}\n maxLength={maxLength}\n textAlignVertical=\"top\"\n // Forward input-level props that were destructured off `props`\n // — these would never reach the inner input if we relied on\n // `nativeProps` because nativeProps is spread on the outer\n // <Textarea> wrapper, which doesn't render text.\n placeholder={placeholder}\n placeholderTextColor={placeholderTextColor}\n autoCapitalize={autoCapitalize}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n returnKeyType={returnKeyType as any}\n // Inline padding so the cursor isn't flush against the edge\n // when the consumer overrides height via `rows`. Without\n // this the height inline-style replaces Gluestack's default\n // padding and the caret renders at (0,0) of the textarea.\n style={{\n paddingHorizontal: 12,\n paddingVertical: 8,\n textAlign: isRTL ? \"right\" : \"left\",\n writingDirection: isRTL ? \"rtl\" : \"ltr\",\n color: valueColor,\n // ...(calculatedHeight ? {height: calculatedHeight - VERTICAL_PADDING} : {}),\n }}\n {...navProps}\n />\n </Textarea>\n </KitsContainer>\n );\n});\n\nKitsInputTextarea.displayName = \"KitsInputTextarea\";\nexport default KitsInputTextarea;\n"],"names":["forwardRef","useComponentDefaults","useResolvedStyle","useLanguage","useKitsTheme","keyboardTypeFromKeyFilter","useFormFieldKeyboardNav","useSeparator","useRef","useState","useEffect","useImperativeHandle","useCallback","applyKeyFilter","jsx","KitsContainer","Textarea","TextareaInput","mergeRefs"],"mappings":"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"}
@@ -89,6 +89,7 @@ import { mergeRefs } from '../../../utils/mergeRefs.js';
89
89
  import { useLanguage } from '../../../hooks/locale.js';
90
90
  import '../../../contexts/DialogContext.js';
91
91
  import '../../../contexts/PermissionsContext.js';
92
+ import '../../../contexts/BreadcrumbContext.js';
92
93
  import useComponentDefaults from '../../../hooks/useComponentDefaults.js';
93
94
  import useResolvedStyle from '../../../hooks/useResolvedStyle.js';
94
95
  import { useKitsTheme } from '../../../contexts/Theme/KitsThemeProvider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/inputs/InputTextarea/index.native.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport type { IKitsInputTextarea } from \"@lmb-it/kitsconcerto-types\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { useSeparator } from \"../../../factory\";\nimport { applyKeyFilter } from \"../InputText/keyFilter.native\";\nimport { keyboardTypeFromKeyFilter } from \"../../helpers/native/keyboardFromFilter\";\nimport {useFormFieldKeyboardNav} from \"../../../hooks/useFormFieldKeyboardNav\";\nimport {mergeRefs} from \"../../../utils/mergeRefs\";\n\n// ✅ correct Gluestack components\nimport {\n Textarea,\n TextareaInput,\n} from \"@lmb-it/kitsconcertomobile\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\nimport { useLanguage } from \"../../../_compat\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\ntype NativeTextareaRef = {\n focus(): void;\n blur(): void;\n clear(): void;\n};\n\nconst KitsInputTextarea = forwardRef<\n NativeTextareaRef,\n IKitsInputTextarea\n>((rawProps, ref) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('Textarea', rawProps);\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const { isRTL } = useLanguage();\n /*\n * ⛔ THE TYPED TEXT HAD NO COLOUR OF ITS OWN — found on AlphaMatch's\n * offer composer, 22 Sep 2026: near-black on a dark field while typing.\n * `resolvedRootStyle`/`resolvedThemeStyle` DO carry `color: 'text'`, but\n * that lands on the outer `<Textarea>` wrapper, which is a View — RN does\n * not propagate `color` from a View into a nested TextInput's own text\n * rendering. `<TextareaInput>` is the actual RN TextInput and needs the\n * colour on ITS OWN style, the same way InputText's shared Field.tsx\n * always does (`color: resolveThemeTokenForNative('text')`).\n */\n const { resolveToken } = useKitsTheme();\n const resolvedRootColor =\n (resolvedRootStyle as any)?.color ?? (resolvedThemeStyle as any)?.color;\n const valueColor =\n typeof resolvedRootColor === \"string\" && resolvedRootColor.length > 0\n ? resolvedRootColor\n : resolveToken('text');\n const {\n id,\n label,\n value,\n defaultValue,\n onChange,\n keyFilter,\n errors,\n hideError,\n invalid,\n isFloatedLabel,\n disabled,\n helperText,\n inputSize,\n containerStyle,\n localProps,\n keyboardNavId,\n rows,\n autoResize,\n maxLength,\n minLength: _minLength, // submit-time only — RN has no minLength prop\n // Props that belong on the inner TextareaInput, not the outer wrapper.\n // Spreading nativeProps onto <Textarea> silently drops them because the\n // wrapper doesn't render text. Pull them out and forward explicitly so\n // placeholder, autoCapitalize, autoCorrect etc. actually take effect.\n placeholder,\n placeholderTextColor,\n autoCapitalize,\n autoCorrect,\n autoFocus,\n returnKeyType,\n ...rest\n } = props as IKitsInputTextarea & {\n placeholder?: string;\n placeholderTextColor?: string;\n autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters';\n autoCorrect?: boolean;\n autoFocus?: boolean;\n returnKeyType?: string;\n };\n\n const resolvedKeyboardType = keyboardTypeFromKeyFilter(keyFilter as any);\n\n // Calculate height from rows: lineHeight × rows + vertical padding\n const LINE_HEIGHT = 20;\n const VERTICAL_PADDING = 16;\n const calculatedHeight = rows ? (LINE_HEIGHT * rows) + VERTICAL_PADDING : undefined;\n\n const {inputRef, navProps} = useFormFieldKeyboardNav(keyboardNavId ?? id);\n\n const isControlled = value !== undefined;\n\n const { cssProps, nativeProps } = useSeparator<any>({\n ...(rest as any),\n ...(localProps as any),\n });\n\n const fieldRef = useRef<any>(null);\n\n /** internal state for uncontrolled mode */\n const [internalValue, setInternalValue] = useState<string>(\n () => String(defaultValue ?? \"\")\n );\n\n /** sync when controlled */\n useEffect(() => {\n if (isControlled) {\n setInternalValue(String(value ?? \"\"));\n }\n }, [isControlled, value]);\n\n useImperativeHandle(ref, () => ({\n focus: () => fieldRef.current?.focus?.(),\n blur: () => fieldRef.current?.blur?.(),\n clear: () => {\n if (!isControlled) setInternalValue(\"\");\n onChange?.({ target: { value: \"\" } } as any);\n },\n }));\n\n const handleChangeText = useCallback(\n (nextRaw: string) => {\n const prev = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n const filtered = keyFilter\n ? applyKeyFilter(prev, nextRaw, keyFilter as any)\n : nextRaw;\n\n if (!isControlled) {\n setInternalValue(filtered);\n }\n\n // Prime-like event\n onChange?.({ target: { value: filtered } } as any);\n },\n [keyFilter, onChange, isControlled, internalValue, value],\n );\n\n const displayValue = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n return (\n <KitsContainer\n id={id}\n helperText={helperText}\n isFloatedLabel={isFloatedLabel}\n errors={errors}\n invalid={invalid}\n label={label}\n hideError={hideError}\n disabled={disabled}\n inputSize={inputSize}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n <Textarea\n size={inputSize ?? \"md\"}\n isDisabled={!!disabled}\n isInvalid={!!invalid}\n style={{\n ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle),\n ...(cssProps as any),\n ...(calculatedHeight ? {height: calculatedHeight, minHeight: calculatedHeight} : {}),\n }}\n {...nativeProps}\n >\n <TextareaInput\n ref={mergeRefs(inputRef, fieldRef)}\n value={displayValue}\n onChangeText={handleChangeText}\n editable={!disabled}\n numberOfLines={rows ?? 4}\n keyboardType={resolvedKeyboardType}\n maxLength={maxLength}\n textAlignVertical=\"top\"\n // Forward input-level props that were destructured off `props`\n // — these would never reach the inner input if we relied on\n // `nativeProps` because nativeProps is spread on the outer\n // <Textarea> wrapper, which doesn't render text.\n placeholder={placeholder}\n placeholderTextColor={placeholderTextColor}\n autoCapitalize={autoCapitalize}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n returnKeyType={returnKeyType as any}\n // Inline padding so the cursor isn't flush against the edge\n // when the consumer overrides height via `rows`. Without\n // this the height inline-style replaces Gluestack's default\n // padding and the caret renders at (0,0) of the textarea.\n style={{\n paddingHorizontal: 12,\n paddingVertical: 8,\n textAlign: isRTL ? \"right\" : \"left\",\n writingDirection: isRTL ? \"rtl\" : \"ltr\",\n color: valueColor,\n // ...(calculatedHeight ? {height: calculatedHeight - VERTICAL_PADDING} : {}),\n }}\n {...navProps}\n />\n </Textarea>\n </KitsContainer>\n );\n});\n\nKitsInputTextarea.displayName = \"KitsInputTextarea\";\nexport default KitsInputTextarea;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/inputs/InputTextarea/index.native.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport type { IKitsInputTextarea } from \"@lmb-it/kitsconcerto-types\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { useSeparator } from \"../../../factory\";\nimport { applyKeyFilter } from \"../InputText/keyFilter.native\";\nimport { keyboardTypeFromKeyFilter } from \"../../helpers/native/keyboardFromFilter\";\nimport {useFormFieldKeyboardNav} from \"../../../hooks/useFormFieldKeyboardNav\";\nimport {mergeRefs} from \"../../../utils/mergeRefs\";\n\n// ✅ correct Gluestack components\nimport {\n Textarea,\n TextareaInput,\n} from \"@lmb-it/kitsconcertomobile\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\nimport { useLanguage } from \"../../../_compat\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\ntype NativeTextareaRef = {\n focus(): void;\n blur(): void;\n clear(): void;\n};\n\nconst KitsInputTextarea = forwardRef<\n NativeTextareaRef,\n IKitsInputTextarea\n>((rawProps, ref) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('Textarea', rawProps);\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const { isRTL } = useLanguage();\n /*\n * ⛔ THE TYPED TEXT HAD NO COLOUR OF ITS OWN — found on AlphaMatch's\n * offer composer, 22 Sep 2026: near-black on a dark field while typing.\n * `resolvedRootStyle`/`resolvedThemeStyle` DO carry `color: 'text'`, but\n * that lands on the outer `<Textarea>` wrapper, which is a View — RN does\n * not propagate `color` from a View into a nested TextInput's own text\n * rendering. `<TextareaInput>` is the actual RN TextInput and needs the\n * colour on ITS OWN style, the same way InputText's shared Field.tsx\n * always does (`color: resolveThemeTokenForNative('text')`).\n */\n const { resolveToken } = useKitsTheme();\n const resolvedRootColor =\n (resolvedRootStyle as any)?.color ?? (resolvedThemeStyle as any)?.color;\n const valueColor =\n typeof resolvedRootColor === \"string\" && resolvedRootColor.length > 0\n ? resolvedRootColor\n : resolveToken('text');\n const {\n id,\n label,\n value,\n defaultValue,\n onChange,\n keyFilter,\n errors,\n hideError,\n invalid,\n isFloatedLabel,\n disabled,\n helperText,\n inputSize,\n containerStyle,\n localProps,\n keyboardNavId,\n rows,\n autoResize,\n maxLength,\n minLength: _minLength, // submit-time only — RN has no minLength prop\n // Props that belong on the inner TextareaInput, not the outer wrapper.\n // Spreading nativeProps onto <Textarea> silently drops them because the\n // wrapper doesn't render text. Pull them out and forward explicitly so\n // placeholder, autoCapitalize, autoCorrect etc. actually take effect.\n placeholder,\n placeholderTextColor,\n autoCapitalize,\n autoCorrect,\n autoFocus,\n returnKeyType,\n ...rest\n } = props as IKitsInputTextarea & {\n placeholder?: string;\n placeholderTextColor?: string;\n autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters';\n autoCorrect?: boolean;\n autoFocus?: boolean;\n returnKeyType?: string;\n };\n\n const resolvedKeyboardType = keyboardTypeFromKeyFilter(keyFilter as any);\n\n // Calculate height from rows: lineHeight × rows + vertical padding\n const LINE_HEIGHT = 20;\n const VERTICAL_PADDING = 16;\n const calculatedHeight = rows ? (LINE_HEIGHT * rows) + VERTICAL_PADDING : undefined;\n\n const {inputRef, navProps} = useFormFieldKeyboardNav(keyboardNavId ?? id);\n\n const isControlled = value !== undefined;\n\n const { cssProps, nativeProps } = useSeparator<any>({\n ...(rest as any),\n ...(localProps as any),\n });\n\n const fieldRef = useRef<any>(null);\n\n /** internal state for uncontrolled mode */\n const [internalValue, setInternalValue] = useState<string>(\n () => String(defaultValue ?? \"\")\n );\n\n /** sync when controlled */\n useEffect(() => {\n if (isControlled) {\n setInternalValue(String(value ?? \"\"));\n }\n }, [isControlled, value]);\n\n useImperativeHandle(ref, () => ({\n focus: () => fieldRef.current?.focus?.(),\n blur: () => fieldRef.current?.blur?.(),\n clear: () => {\n if (!isControlled) setInternalValue(\"\");\n onChange?.({ target: { value: \"\" } } as any);\n },\n }));\n\n const handleChangeText = useCallback(\n (nextRaw: string) => {\n const prev = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n const filtered = keyFilter\n ? applyKeyFilter(prev, nextRaw, keyFilter as any)\n : nextRaw;\n\n if (!isControlled) {\n setInternalValue(filtered);\n }\n\n // Prime-like event\n onChange?.({ target: { value: filtered } } as any);\n },\n [keyFilter, onChange, isControlled, internalValue, value],\n );\n\n const displayValue = isControlled\n ? String(value ?? \"\")\n : internalValue;\n\n return (\n <KitsContainer\n id={id}\n helperText={helperText}\n isFloatedLabel={isFloatedLabel}\n errors={errors}\n invalid={invalid}\n label={label}\n hideError={hideError}\n disabled={disabled}\n inputSize={inputSize}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n <Textarea\n size={inputSize ?? \"md\"}\n isDisabled={!!disabled}\n isInvalid={!!invalid}\n style={{\n ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle),\n ...(cssProps as any),\n ...(calculatedHeight ? {height: calculatedHeight, minHeight: calculatedHeight} : {}),\n }}\n {...nativeProps}\n >\n <TextareaInput\n ref={mergeRefs(inputRef, fieldRef)}\n value={displayValue}\n onChangeText={handleChangeText}\n editable={!disabled}\n numberOfLines={rows ?? 4}\n keyboardType={resolvedKeyboardType}\n maxLength={maxLength}\n textAlignVertical=\"top\"\n // Forward input-level props that were destructured off `props`\n // — these would never reach the inner input if we relied on\n // `nativeProps` because nativeProps is spread on the outer\n // <Textarea> wrapper, which doesn't render text.\n placeholder={placeholder}\n placeholderTextColor={placeholderTextColor}\n autoCapitalize={autoCapitalize}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n returnKeyType={returnKeyType as any}\n // Inline padding so the cursor isn't flush against the edge\n // when the consumer overrides height via `rows`. Without\n // this the height inline-style replaces Gluestack's default\n // padding and the caret renders at (0,0) of the textarea.\n style={{\n paddingHorizontal: 12,\n paddingVertical: 8,\n textAlign: isRTL ? \"right\" : \"left\",\n writingDirection: isRTL ? \"rtl\" : \"ltr\",\n color: valueColor,\n // ...(calculatedHeight ? {height: calculatedHeight - VERTICAL_PADDING} : {}),\n }}\n {...navProps}\n />\n </Textarea>\n </KitsContainer>\n );\n});\n\nKitsInputTextarea.displayName = \"KitsInputTextarea\";\nexport default KitsInputTextarea;\n"],"names":[],"mappings":"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"}
@@ -89,6 +89,7 @@ var usePhoneInput = require('./usePhoneInput.cjs');
89
89
  var Svg = require('react-native-svg');
90
90
  require('../../../contexts/DialogContext.cjs');
91
91
  require('../../../contexts/PermissionsContext.cjs');
92
+ require('../../../contexts/BreadcrumbContext.cjs');
92
93
  var useComponentDefaults = require('../../../hooks/useComponentDefaults.cjs');
93
94
  var useResolvedStyle = require('../../../hooks/useResolvedStyle.cjs');
94
95
  var index_native = require('../../../primitives/Icon/index.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/form/inputs/PhoneInput/index.native.tsx"],"sourcesContent":["import type {IKitsPhoneInput} from \"@lmb-it/kitsconcerto-types\";\nimport {KitsContainer, KitsInputText, Icon} from \"../../../_compat\";\nimport {useImperativeHandle, useMemo} from \"react\";\nimport {useSeparator} from \"../../../factory\";\nimport {usePhoneInput} from \"./usePhoneInput\";\nimport {SvgUri} from \"react-native-svg\";\nimport {View} from \"react-native\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\n\n\nconst KitsPhoneComponent =\n (\n {\n ref,\n isWithCountryCode,\n label,\n value,\n placeholder,\n onChange,\n invalid,\n disabled,\n required,\n errors,\n hideError,\n id,\n defaultCountry,\n inputSize,\n isFloatedLabel,\n leftAddon,\n rightAddon,\n includedCountries,\n excludedCountries,\n outputFormat='string',\n ...props\n }: IKitsPhoneInput\n ) => {\n const { mergedProps: _mergedProps, themeStyle, elementStyles } = useComponentDefaults('PhoneInput', props as any, 'Input');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {nativeProps} = useSeparator<any>(props);\n\n const {\n displayValue,\n e164Value,\n objectValue,\n countryFlagUrl,\n countryISO,\n handleChange,\n } = usePhoneInput({\n value,\n onChange,\n outputFormat,\n isWithCountryCode,\n defaultCountry,\n includedCountries,\n excludedCountries,\n });\n\n useImperativeHandle(ref, () => ({\n value: outputFormat === 'object' ? (objectValue ?? e164Value) : e164Value,\n setValue: (v: any) => handleChange(typeof v === \"string\" ? v : \"\"),\n }));\n\n const flagAddon = useMemo(() => {\n if (!isWithCountryCode) return leftAddon;\n\n if (countryFlagUrl) {\n return (\n <View style={{width: 20, height: 20, overflow: 'hidden', borderRadius: 2}}>\n <SvgUri\n uri={countryFlagUrl}\n width={20}\n height={20}\n />\n </View>\n );\n }\n\n return <Icon name=\"phone\" size={'2xs'}/>;\n }, [isWithCountryCode, countryFlagUrl, countryISO, leftAddon]);\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n errors={errors}\n required={required}\n hideError={hideError}\n label={label}\n elementStyles={elementStyles}\n >\n <KitsInputText\n id={`${id}-phone`}\n keyboardNavId={id}\n value={displayValue}\n rightAddon={rightAddon}\n leftAddon={flagAddon}\n onChange={(e: any) => handleChange(e.target.value)}\n invalid={invalid}\n disabled={disabled}\n keyboardType=\"phone-pad\"\n placeholder={placeholder ?? (isWithCountryCode ? \"+1 (555) 123-4567\" : \"\")}\n localProps={Object.keys(themeStyle).length ? { style: { width: '100%', ...(themeStyle as any) } } : undefined}\n />\n </KitsContainer>\n );\n }\n\n\nexport default KitsPhoneComponent;\n"],"names":["useComponentDefaults","useResolvedStyle","useSeparator","usePhoneInput","useImperativeHandle","useMemo","jsx","View","SvgUri","Icon","KitsContainer","KitsInputText"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/form/inputs/PhoneInput/index.native.tsx"],"sourcesContent":["import type {IKitsPhoneInput} from \"@lmb-it/kitsconcerto-types\";\nimport {KitsContainer, KitsInputText, Icon} from \"../../../_compat\";\nimport {useImperativeHandle, useMemo} from \"react\";\nimport {useSeparator} from \"../../../factory\";\nimport {usePhoneInput} from \"./usePhoneInput\";\nimport {SvgUri} from \"react-native-svg\";\nimport {View} from \"react-native\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\n\n\nconst KitsPhoneComponent =\n (\n {\n ref,\n isWithCountryCode,\n label,\n value,\n placeholder,\n onChange,\n invalid,\n disabled,\n required,\n errors,\n hideError,\n id,\n defaultCountry,\n inputSize,\n isFloatedLabel,\n leftAddon,\n rightAddon,\n includedCountries,\n excludedCountries,\n outputFormat='string',\n ...props\n }: IKitsPhoneInput\n ) => {\n const { mergedProps: _mergedProps, themeStyle, elementStyles } = useComponentDefaults('PhoneInput', props as any, 'Input');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {nativeProps} = useSeparator<any>(props);\n\n const {\n displayValue,\n e164Value,\n objectValue,\n countryFlagUrl,\n countryISO,\n handleChange,\n } = usePhoneInput({\n value,\n onChange,\n outputFormat,\n isWithCountryCode,\n defaultCountry,\n includedCountries,\n excludedCountries,\n });\n\n useImperativeHandle(ref, () => ({\n value: outputFormat === 'object' ? (objectValue ?? e164Value) : e164Value,\n setValue: (v: any) => handleChange(typeof v === \"string\" ? v : \"\"),\n }));\n\n const flagAddon = useMemo(() => {\n if (!isWithCountryCode) return leftAddon;\n\n if (countryFlagUrl) {\n return (\n <View style={{width: 20, height: 20, overflow: 'hidden', borderRadius: 2}}>\n <SvgUri\n uri={countryFlagUrl}\n width={20}\n height={20}\n />\n </View>\n );\n }\n\n return <Icon name=\"phone\" size={'2xs'}/>;\n }, [isWithCountryCode, countryFlagUrl, countryISO, leftAddon]);\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n errors={errors}\n required={required}\n hideError={hideError}\n label={label}\n elementStyles={elementStyles}\n >\n <KitsInputText\n id={`${id}-phone`}\n keyboardNavId={id}\n value={displayValue}\n rightAddon={rightAddon}\n leftAddon={flagAddon}\n onChange={(e: any) => handleChange(e.target.value)}\n invalid={invalid}\n disabled={disabled}\n keyboardType=\"phone-pad\"\n placeholder={placeholder ?? (isWithCountryCode ? \"+1 (555) 123-4567\" : \"\")}\n localProps={Object.keys(themeStyle).length ? { style: { width: '100%', ...(themeStyle as any) } } : undefined}\n />\n </KitsContainer>\n );\n }\n\n\nexport default KitsPhoneComponent;\n"],"names":["useComponentDefaults","useResolvedStyle","useSeparator","usePhoneInput","useImperativeHandle","useMemo","jsx","View","SvgUri","Icon","KitsContainer","KitsInputText"],"mappings":"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"}
@@ -85,6 +85,7 @@ import { usePhoneInput } from './usePhoneInput.js';
85
85
  import { SvgUri } from 'react-native-svg';
86
86
  import '../../../contexts/DialogContext.js';
87
87
  import '../../../contexts/PermissionsContext.js';
88
+ import '../../../contexts/BreadcrumbContext.js';
88
89
  import useComponentDefaults from '../../../hooks/useComponentDefaults.js';
89
90
  import useResolvedStyle from '../../../hooks/useResolvedStyle.js';
90
91
  import { Icon } from '../../../primitives/Icon/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/inputs/PhoneInput/index.native.tsx"],"sourcesContent":["import type {IKitsPhoneInput} from \"@lmb-it/kitsconcerto-types\";\nimport {KitsContainer, KitsInputText, Icon} from \"../../../_compat\";\nimport {useImperativeHandle, useMemo} from \"react\";\nimport {useSeparator} from \"../../../factory\";\nimport {usePhoneInput} from \"./usePhoneInput\";\nimport {SvgUri} from \"react-native-svg\";\nimport {View} from \"react-native\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\n\n\nconst KitsPhoneComponent =\n (\n {\n ref,\n isWithCountryCode,\n label,\n value,\n placeholder,\n onChange,\n invalid,\n disabled,\n required,\n errors,\n hideError,\n id,\n defaultCountry,\n inputSize,\n isFloatedLabel,\n leftAddon,\n rightAddon,\n includedCountries,\n excludedCountries,\n outputFormat='string',\n ...props\n }: IKitsPhoneInput\n ) => {\n const { mergedProps: _mergedProps, themeStyle, elementStyles } = useComponentDefaults('PhoneInput', props as any, 'Input');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {nativeProps} = useSeparator<any>(props);\n\n const {\n displayValue,\n e164Value,\n objectValue,\n countryFlagUrl,\n countryISO,\n handleChange,\n } = usePhoneInput({\n value,\n onChange,\n outputFormat,\n isWithCountryCode,\n defaultCountry,\n includedCountries,\n excludedCountries,\n });\n\n useImperativeHandle(ref, () => ({\n value: outputFormat === 'object' ? (objectValue ?? e164Value) : e164Value,\n setValue: (v: any) => handleChange(typeof v === \"string\" ? v : \"\"),\n }));\n\n const flagAddon = useMemo(() => {\n if (!isWithCountryCode) return leftAddon;\n\n if (countryFlagUrl) {\n return (\n <View style={{width: 20, height: 20, overflow: 'hidden', borderRadius: 2}}>\n <SvgUri\n uri={countryFlagUrl}\n width={20}\n height={20}\n />\n </View>\n );\n }\n\n return <Icon name=\"phone\" size={'2xs'}/>;\n }, [isWithCountryCode, countryFlagUrl, countryISO, leftAddon]);\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n errors={errors}\n required={required}\n hideError={hideError}\n label={label}\n elementStyles={elementStyles}\n >\n <KitsInputText\n id={`${id}-phone`}\n keyboardNavId={id}\n value={displayValue}\n rightAddon={rightAddon}\n leftAddon={flagAddon}\n onChange={(e: any) => handleChange(e.target.value)}\n invalid={invalid}\n disabled={disabled}\n keyboardType=\"phone-pad\"\n placeholder={placeholder ?? (isWithCountryCode ? \"+1 (555) 123-4567\" : \"\")}\n localProps={Object.keys(themeStyle).length ? { style: { width: '100%', ...(themeStyle as any) } } : undefined}\n />\n </KitsContainer>\n );\n }\n\n\nexport default KitsPhoneComponent;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/inputs/PhoneInput/index.native.tsx"],"sourcesContent":["import type {IKitsPhoneInput} from \"@lmb-it/kitsconcerto-types\";\nimport {KitsContainer, KitsInputText, Icon} from \"../../../_compat\";\nimport {useImperativeHandle, useMemo} from \"react\";\nimport {useSeparator} from \"../../../factory\";\nimport {usePhoneInput} from \"./usePhoneInput\";\nimport {SvgUri} from \"react-native-svg\";\nimport {View} from \"react-native\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\n\n\nconst KitsPhoneComponent =\n (\n {\n ref,\n isWithCountryCode,\n label,\n value,\n placeholder,\n onChange,\n invalid,\n disabled,\n required,\n errors,\n hideError,\n id,\n defaultCountry,\n inputSize,\n isFloatedLabel,\n leftAddon,\n rightAddon,\n includedCountries,\n excludedCountries,\n outputFormat='string',\n ...props\n }: IKitsPhoneInput\n ) => {\n const { mergedProps: _mergedProps, themeStyle, elementStyles } = useComponentDefaults('PhoneInput', props as any, 'Input');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {nativeProps} = useSeparator<any>(props);\n\n const {\n displayValue,\n e164Value,\n objectValue,\n countryFlagUrl,\n countryISO,\n handleChange,\n } = usePhoneInput({\n value,\n onChange,\n outputFormat,\n isWithCountryCode,\n defaultCountry,\n includedCountries,\n excludedCountries,\n });\n\n useImperativeHandle(ref, () => ({\n value: outputFormat === 'object' ? (objectValue ?? e164Value) : e164Value,\n setValue: (v: any) => handleChange(typeof v === \"string\" ? v : \"\"),\n }));\n\n const flagAddon = useMemo(() => {\n if (!isWithCountryCode) return leftAddon;\n\n if (countryFlagUrl) {\n return (\n <View style={{width: 20, height: 20, overflow: 'hidden', borderRadius: 2}}>\n <SvgUri\n uri={countryFlagUrl}\n width={20}\n height={20}\n />\n </View>\n );\n }\n\n return <Icon name=\"phone\" size={'2xs'}/>;\n }, [isWithCountryCode, countryFlagUrl, countryISO, leftAddon]);\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n errors={errors}\n required={required}\n hideError={hideError}\n label={label}\n elementStyles={elementStyles}\n >\n <KitsInputText\n id={`${id}-phone`}\n keyboardNavId={id}\n value={displayValue}\n rightAddon={rightAddon}\n leftAddon={flagAddon}\n onChange={(e: any) => handleChange(e.target.value)}\n invalid={invalid}\n disabled={disabled}\n keyboardType=\"phone-pad\"\n placeholder={placeholder ?? (isWithCountryCode ? \"+1 (555) 123-4567\" : \"\")}\n localProps={Object.keys(themeStyle).length ? { style: { width: '100%', ...(themeStyle as any) } } : undefined}\n />\n </KitsContainer>\n );\n }\n\n\nexport default KitsPhoneComponent;\n"],"names":[],"mappings":"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"}
@@ -89,14 +89,19 @@ require('../../../apps/mobile/src/Core/Input/Slot.cjs');
89
89
  var useAutoCompleteLogic = require('../hooks/useAutoCompleteLogic.cjs');
90
90
  require('../../../contexts/DialogContext.cjs');
91
91
  require('../../../contexts/PermissionsContext.cjs');
92
+ require('../../../contexts/BreadcrumbContext.cjs');
92
93
  var useComponentDefaults = require('../../../hooks/useComponentDefaults.cjs');
93
94
  var useResolvedStyle = require('../../../hooks/useResolvedStyle.cjs');
94
95
  var KitsThemeProvider_native = require('../../../contexts/Theme/KitsThemeProvider.cjs');
95
96
 
96
97
  const KitsAutoComplete = ({ ref, ...rawProps }) => {
97
- const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults.default("AutoComplete", rawProps, "Select");
98
+ const { mergedProps: props, themeStyle, elementStyles, elementProps } = useComponentDefaults.default("AutoComplete", rawProps, "Select");
98
99
  const resolvedThemeStyle = useResolvedStyle.default(themeStyle);
99
100
  const resolvedRootStyle = useResolvedStyle.default(elementStyles?.root || {});
101
+ const resolvedTokenContainer = useResolvedStyle.default(elementStyles?.tokenContainer || {});
102
+ const resolvedToken = useResolvedStyle.default(elementStyles?.token || {});
103
+ const resolvedTokenIcon = useResolvedStyle.default(elementStyles?.tokenIcon || {});
104
+ const { wrapper: tokenBoxStyle, text: tokenLabelStyle } = useResolvedStyle.splitTextStyle(resolvedToken);
100
105
  const {
101
106
  id,
102
107
  rightAddon,
@@ -161,6 +166,10 @@ const KitsAutoComplete = ({ ref, ...rawProps }) => {
161
166
  optionGroupLabel: childrenKey ? labelKey : void 0,
162
167
  style: { width: "100%", borderRadius: 0, border: "none", backgroundColor: "transparent" },
163
168
  inputStyle: { flexDirection: "row", borderRadius: 0, border: "none", width: "100%", backgroundColor: "transparent", ...resolvedRootStyle || resolvedThemeStyle },
169
+ tokenContainerStyle: resolvedTokenContainer,
170
+ tokenStyle: tokenBoxStyle,
171
+ tokenLabelStyle,
172
+ tokenIconStyle: resolvedTokenIcon,
164
173
  onChange: (event) => {
165
174
  setInputValue(event.value);
166
175
  handleOnChange(event);
@@ -198,6 +207,7 @@ const KitsAutoComplete = ({ ref, ...rawProps }) => {
198
207
  label,
199
208
  containerStyle,
200
209
  elementStyles: overflowEscape,
210
+ elementProps,
201
211
  children: Element
202
212
  }
203
213
  );
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/AutoComplete/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport {AutoComplete, useSeparator} from \"@lmb-it/kitsconcertomobile\";\nimport type { IAutoCompleteElement } from \"@lmb-it/kitsconcerto-types\";\nimport { useAutoCompleteLogic } from \"../hooks/useAutoCompleteLogic\";\nimport { useComponentDefaults, useResolvedStyle } from \"../../../hooks\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\nconst KitsAutoComplete = ({ ref, ...rawProps }: IAutoCompleteElement) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('AutoComplete', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n rightAddon,\n leftAddon,\n errors,\n invalid,\n label,\n hideError,\n disabled,\n required,\n isFloatedLabel,\n inputSize = \"md\",\n forceSelection,\n completeMethod,\n helperText,\n withArrow,\n placeholder,\n isMultiple,\n localProps,\n delay,\n minLength,\n selectionLimit,\n showEmptyMessage,\n emptyMessage,\n attached,\n containerStyle,\n } = props;\n\n const { nativeProps } = useSeparator<HTMLSelectElement>(props);\n\n const { resolveToken } = useKitsTheme();\n const primaryColor = resolveToken('primary');\n const borderColor = resolveToken('border');\n\n const {\n inputValue,\n setInputValue,\n filteredList,\n search,\n handleOnChange,\n list,\n childrenKey,\n labelKey,\n } = useAutoCompleteLogic({ isMultiple, forceSelection, completeMethod, ref });\n\n const hasThemeStyle = Object.keys(themeStyle).length > 0;\n\n\n const Element = <AutoComplete\n disabled={disabled}\n placeholder={placeholder}\n value={inputValue}\n forceSelection={forceSelection}\n suggestions={Array.isArray(filteredList) ? filteredList : list}\n completeMethod={search}\n dropdown={withArrow}\n multiple={isMultiple}\n field={labelKey}\n invalid={!!invalid}\n emptyMessage={emptyMessage ?? \"No results found\"}\n {...(delay != null ? { delay } : {})}\n {...(minLength != null ? { minLength } : {})}\n {...(selectionLimit != null ? { selectionLimit } : {})}\n showEmptyMessage={showEmptyMessage ?? true}\n optionGroupChildren={childrenKey ?? undefined}\n optionGroupLabel={childrenKey ? labelKey : undefined}\n style={{ width: \"100%\", borderRadius: 0, border:'none', backgroundColor:'transparent' }}\n inputStyle={{ flexDirection: \"row\", borderRadius: 0, border:'none', width: \"100%\",backgroundColor:'transparent', ...(resolvedRootStyle || resolvedThemeStyle) }}\n onChange={(event) => {\n setInputValue(event.value);\n handleOnChange(event);\n }}\n {...(localProps ?? {})}\n />\n\n if (attached) {\n return Element;\n }\n\n // KitsContainer's `inputGroup` wrapper defaults to `overflow: 'hidden'`\n // (so rounded borders clip the input cleanly). For AutoComplete that\n // would clip the floating suggestions panel back to the input's bounds\n // — the panel renders but is invisible, which is the \"list never\n // appears\" symptom on mobile. Force `overflow: 'visible'` on the\n // container chain so the panel can escape.\n const overflowEscape = {\n ...elementStyles,\n container: {\n ...(elementStyles?.container || {}),\n overflow: 'visible' as const,\n },\n inputGroup: {\n ...(elementStyles?.inputGroup || {}),\n overflow: 'visible' as const,\n },\n };\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n hideError={hideError}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n helperText={helperText}\n errors={errors}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={overflowEscape}\n >\n {Element}\n </KitsContainer>\n );\n};\n\nexport default KitsAutoComplete;\n"],"names":["useComponentDefaults","useResolvedStyle","useSeparator","useKitsTheme","useAutoCompleteLogic","jsx","AutoComplete","KitsContainer"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/AutoComplete/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport {AutoComplete, useSeparator} from \"@lmb-it/kitsconcertomobile\";\nimport type { IAutoCompleteElement } from \"@lmb-it/kitsconcerto-types\";\nimport { useAutoCompleteLogic } from \"../hooks/useAutoCompleteLogic\";\nimport { useComponentDefaults, useResolvedStyle } from \"../../../hooks\";\nimport { splitTextStyle } from \"../../../hooks/useResolvedStyle\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\nconst KitsAutoComplete = ({ ref, ...rawProps }: IAutoCompleteElement) => {\n const { mergedProps: props, themeStyle, elementStyles, elementProps } = useComponentDefaults('AutoComplete', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n /* ─── Chips field slots — the native half of the same contract ──────────\n `tokenContainer` is the field wrapper View that holds the chips and the\n TextInput (web: `ul.p-autocomplete-multiple-container`). `token` splits\n in two on native, because a React Native `View` cannot carry `color` or\n `fontSize` — the text half goes to the chip's `Text`, which is what the\n CSS cascade does for free on web. */\n const resolvedTokenContainer = useResolvedStyle(elementStyles?.tokenContainer || {});\n const resolvedToken = useResolvedStyle(elementStyles?.token || {});\n const resolvedTokenIcon = useResolvedStyle(elementStyles?.tokenIcon || {});\n const {wrapper: tokenBoxStyle, text: tokenLabelStyle} = splitTextStyle(resolvedToken);\n const {\n id,\n rightAddon,\n leftAddon,\n errors,\n invalid,\n label,\n hideError,\n disabled,\n required,\n isFloatedLabel,\n inputSize = \"md\",\n forceSelection,\n completeMethod,\n helperText,\n withArrow,\n placeholder,\n isMultiple,\n localProps,\n delay,\n minLength,\n selectionLimit,\n showEmptyMessage,\n emptyMessage,\n attached,\n containerStyle,\n } = props;\n\n const { nativeProps } = useSeparator<HTMLSelectElement>(props);\n\n const { resolveToken } = useKitsTheme();\n const primaryColor = resolveToken('primary');\n const borderColor = resolveToken('border');\n\n const {\n inputValue,\n setInputValue,\n filteredList,\n search,\n handleOnChange,\n list,\n childrenKey,\n labelKey,\n } = useAutoCompleteLogic({ isMultiple, forceSelection, completeMethod, ref });\n\n const hasThemeStyle = Object.keys(themeStyle).length > 0;\n\n\n const Element = <AutoComplete\n disabled={disabled}\n placeholder={placeholder}\n value={inputValue}\n forceSelection={forceSelection}\n suggestions={Array.isArray(filteredList) ? filteredList : list}\n completeMethod={search}\n dropdown={withArrow}\n multiple={isMultiple}\n field={labelKey}\n invalid={!!invalid}\n emptyMessage={emptyMessage ?? \"No results found\"}\n {...(delay != null ? { delay } : {})}\n {...(minLength != null ? { minLength } : {})}\n {...(selectionLimit != null ? { selectionLimit } : {})}\n showEmptyMessage={showEmptyMessage ?? true}\n optionGroupChildren={childrenKey ?? undefined}\n optionGroupLabel={childrenKey ? labelKey : undefined}\n style={{ width: \"100%\", borderRadius: 0, border:'none', backgroundColor:'transparent' }}\n inputStyle={{ flexDirection: \"row\", borderRadius: 0, border:'none', width: \"100%\",backgroundColor:'transparent', ...(resolvedRootStyle || resolvedThemeStyle) }}\n tokenContainerStyle={resolvedTokenContainer}\n tokenStyle={tokenBoxStyle}\n tokenLabelStyle={tokenLabelStyle}\n tokenIconStyle={resolvedTokenIcon}\n onChange={(event) => {\n setInputValue(event.value);\n handleOnChange(event);\n }}\n {...(localProps ?? {})}\n />\n\n if (attached) {\n return Element;\n }\n\n // KitsContainer's `inputGroup` wrapper defaults to `overflow: 'hidden'`\n // (so rounded borders clip the input cleanly). For AutoComplete that\n // would clip the floating suggestions panel back to the input's bounds\n // — the panel renders but is invisible, which is the \"list never\n // appears\" symptom on mobile. Force `overflow: 'visible'` on the\n // container chain so the panel can escape.\n const overflowEscape = {\n ...elementStyles,\n container: {\n ...(elementStyles?.container || {}),\n overflow: 'visible' as const,\n },\n inputGroup: {\n ...(elementStyles?.inputGroup || {}),\n overflow: 'visible' as const,\n },\n };\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n hideError={hideError}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n helperText={helperText}\n errors={errors}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={overflowEscape}\n elementProps={elementProps}\n >\n {Element}\n </KitsContainer>\n );\n};\n\nexport default KitsAutoComplete;\n"],"names":["useComponentDefaults","useResolvedStyle","splitTextStyle","useSeparator","useKitsTheme","useAutoCompleteLogic","jsx","AutoComplete","KitsContainer"],"mappings":"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"}
@@ -85,14 +85,19 @@ import '../../../apps/mobile/src/Core/Input/Slot.js';
85
85
  import { useAutoCompleteLogic } from '../hooks/useAutoCompleteLogic.js';
86
86
  import '../../../contexts/DialogContext.js';
87
87
  import '../../../contexts/PermissionsContext.js';
88
+ import '../../../contexts/BreadcrumbContext.js';
88
89
  import useComponentDefaults from '../../../hooks/useComponentDefaults.js';
89
- import useResolvedStyle from '../../../hooks/useResolvedStyle.js';
90
+ import useResolvedStyle, { splitTextStyle } from '../../../hooks/useResolvedStyle.js';
90
91
  import { useKitsTheme } from '../../../contexts/Theme/KitsThemeProvider.js';
91
92
 
92
93
  const KitsAutoComplete = ({ ref, ...rawProps }) => {
93
- const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults("AutoComplete", rawProps, "Select");
94
+ const { mergedProps: props, themeStyle, elementStyles, elementProps } = useComponentDefaults("AutoComplete", rawProps, "Select");
94
95
  const resolvedThemeStyle = useResolvedStyle(themeStyle);
95
96
  const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});
97
+ const resolvedTokenContainer = useResolvedStyle(elementStyles?.tokenContainer || {});
98
+ const resolvedToken = useResolvedStyle(elementStyles?.token || {});
99
+ const resolvedTokenIcon = useResolvedStyle(elementStyles?.tokenIcon || {});
100
+ const { wrapper: tokenBoxStyle, text: tokenLabelStyle } = splitTextStyle(resolvedToken);
96
101
  const {
97
102
  id,
98
103
  rightAddon,
@@ -157,6 +162,10 @@ const KitsAutoComplete = ({ ref, ...rawProps }) => {
157
162
  optionGroupLabel: childrenKey ? labelKey : void 0,
158
163
  style: { width: "100%", borderRadius: 0, border: "none", backgroundColor: "transparent" },
159
164
  inputStyle: { flexDirection: "row", borderRadius: 0, border: "none", width: "100%", backgroundColor: "transparent", ...resolvedRootStyle || resolvedThemeStyle },
165
+ tokenContainerStyle: resolvedTokenContainer,
166
+ tokenStyle: tokenBoxStyle,
167
+ tokenLabelStyle,
168
+ tokenIconStyle: resolvedTokenIcon,
160
169
  onChange: (event) => {
161
170
  setInputValue(event.value);
162
171
  handleOnChange(event);
@@ -194,6 +203,7 @@ const KitsAutoComplete = ({ ref, ...rawProps }) => {
194
203
  label,
195
204
  containerStyle,
196
205
  elementStyles: overflowEscape,
206
+ elementProps,
197
207
  children: Element
198
208
  }
199
209
  );
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/AutoComplete/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport {AutoComplete, useSeparator} from \"@lmb-it/kitsconcertomobile\";\nimport type { IAutoCompleteElement } from \"@lmb-it/kitsconcerto-types\";\nimport { useAutoCompleteLogic } from \"../hooks/useAutoCompleteLogic\";\nimport { useComponentDefaults, useResolvedStyle } from \"../../../hooks\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\nconst KitsAutoComplete = ({ ref, ...rawProps }: IAutoCompleteElement) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('AutoComplete', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n rightAddon,\n leftAddon,\n errors,\n invalid,\n label,\n hideError,\n disabled,\n required,\n isFloatedLabel,\n inputSize = \"md\",\n forceSelection,\n completeMethod,\n helperText,\n withArrow,\n placeholder,\n isMultiple,\n localProps,\n delay,\n minLength,\n selectionLimit,\n showEmptyMessage,\n emptyMessage,\n attached,\n containerStyle,\n } = props;\n\n const { nativeProps } = useSeparator<HTMLSelectElement>(props);\n\n const { resolveToken } = useKitsTheme();\n const primaryColor = resolveToken('primary');\n const borderColor = resolveToken('border');\n\n const {\n inputValue,\n setInputValue,\n filteredList,\n search,\n handleOnChange,\n list,\n childrenKey,\n labelKey,\n } = useAutoCompleteLogic({ isMultiple, forceSelection, completeMethod, ref });\n\n const hasThemeStyle = Object.keys(themeStyle).length > 0;\n\n\n const Element = <AutoComplete\n disabled={disabled}\n placeholder={placeholder}\n value={inputValue}\n forceSelection={forceSelection}\n suggestions={Array.isArray(filteredList) ? filteredList : list}\n completeMethod={search}\n dropdown={withArrow}\n multiple={isMultiple}\n field={labelKey}\n invalid={!!invalid}\n emptyMessage={emptyMessage ?? \"No results found\"}\n {...(delay != null ? { delay } : {})}\n {...(minLength != null ? { minLength } : {})}\n {...(selectionLimit != null ? { selectionLimit } : {})}\n showEmptyMessage={showEmptyMessage ?? true}\n optionGroupChildren={childrenKey ?? undefined}\n optionGroupLabel={childrenKey ? labelKey : undefined}\n style={{ width: \"100%\", borderRadius: 0, border:'none', backgroundColor:'transparent' }}\n inputStyle={{ flexDirection: \"row\", borderRadius: 0, border:'none', width: \"100%\",backgroundColor:'transparent', ...(resolvedRootStyle || resolvedThemeStyle) }}\n onChange={(event) => {\n setInputValue(event.value);\n handleOnChange(event);\n }}\n {...(localProps ?? {})}\n />\n\n if (attached) {\n return Element;\n }\n\n // KitsContainer's `inputGroup` wrapper defaults to `overflow: 'hidden'`\n // (so rounded borders clip the input cleanly). For AutoComplete that\n // would clip the floating suggestions panel back to the input's bounds\n // — the panel renders but is invisible, which is the \"list never\n // appears\" symptom on mobile. Force `overflow: 'visible'` on the\n // container chain so the panel can escape.\n const overflowEscape = {\n ...elementStyles,\n container: {\n ...(elementStyles?.container || {}),\n overflow: 'visible' as const,\n },\n inputGroup: {\n ...(elementStyles?.inputGroup || {}),\n overflow: 'visible' as const,\n },\n };\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n hideError={hideError}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n helperText={helperText}\n errors={errors}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={overflowEscape}\n >\n {Element}\n </KitsContainer>\n );\n};\n\nexport default KitsAutoComplete;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,mBAAmB,CAAC,EAAE,GAAA,EAAK,GAAG,UAAS,KAA4B;AACrE,EAAA,MAAM,EAAE,aAAa,KAAA,EAAO,UAAA,EAAY,eAAc,GAAI,oBAAA,CAAqB,cAAA,EAAgB,QAAA,EAAU,QAAQ,CAAA;AACjH,EAAA,MAAM,kBAAA,GAAqB,iBAAiB,UAAU,CAAA;AACtD,EAAA,MAAM,iBAAA,GAAoB,gBAAA,CAAiB,aAAA,EAAe,IAAA,IAAQ,EAAE,CAAA;AACpE,EAAA,MAAM;AAAA,IACF,EAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,cAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACJ,GAAI,KAAA;AAEJ,EAAwB,YAAA,CAAgC,KAAK;AAE7D,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,YAAA,EAAa;AACtC,EAAqB,aAAa,SAAS;AAC3C,EAAoB,aAAa,QAAQ;AAEzC,EAAA,MAAM;AAAA,IACF,UAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,MACA,oBAAA,CAAqB,EAAE,YAAY,cAAA,EAAgB,cAAA,EAAgB,KAAK,CAAA;AAE5E,EAAsB,MAAA,CAAO,IAAA,CAAK,UAAU,EAAE,MAAA,GAAS;AAGvD,EAAA,MAAM,OAAA,mBAAU,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACb,QAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA,EAAO,UAAA;AAAA,MACP,cAAA;AAAA,MACA,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,YAAY,IAAI,YAAA,GAAe,IAAA;AAAA,MAC1D,cAAA,EAAgB,MAAA;AAAA,MAChB,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,QAAA;AAAA,MACP,OAAA,EAAS,CAAC,CAAC,OAAA;AAAA,MACX,cAAc,YAAA,IAAgB,kBAAA;AAAA,MAC7B,GAAI,KAAA,IAAS,IAAA,GAAO,EAAE,KAAA,KAAU,EAAC;AAAA,MACjC,GAAI,SAAA,IAAa,IAAA,GAAO,EAAE,SAAA,KAAc,EAAC;AAAA,MACzC,GAAI,cAAA,IAAkB,IAAA,GAAO,EAAE,cAAA,KAAmB,EAAC;AAAA,MACpD,kBAAkB,gBAAA,IAAoB,IAAA;AAAA,MACtC,qBAAqB,WAAA,IAAe,MAAA;AAAA,MACpC,gBAAA,EAAkB,cAAc,QAAA,GAAW,MAAA;AAAA,MAC3C,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,cAAc,CAAA,EAAG,MAAA,EAAO,MAAA,EAAQ,eAAA,EAAgB,aAAA,EAAc;AAAA,MACtF,UAAA,EAAY,EAAE,aAAA,EAAe,KAAA,EAAO,cAAc,CAAA,EAAG,MAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO,eAAA,EAAgB,aAAA,EAAe,GAAI,qBAAqB,kBAAA,EAAoB;AAAA,MAC9J,QAAA,EAAU,CAAC,KAAA,KAAU;AACjB,QAAA,aAAA,CAAc,MAAM,KAAK,CAAA;AACzB,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA,MACxB,CAAA;AAAA,MACC,GAAI,cAAc;AAAC;AAAA,GACxB;AAEA,EAAA,IAAI,QAAA,EAAU;AACV,IAAA,OAAO,OAAA;AAAA,EACX;AAQA,EAAA,MAAM,cAAA,GAAiB;AAAA,IACnB,GAAG,aAAA;AAAA,IACH,SAAA,EAAW;AAAA,MACP,GAAI,aAAA,EAAe,SAAA,IAAa,EAAC;AAAA,MACjC,QAAA,EAAU;AAAA,KACd;AAAA,IACA,UAAA,EAAY;AAAA,MACR,GAAI,aAAA,EAAe,UAAA,IAAc,EAAC;AAAA,MAClC,QAAA,EAAU;AAAA;AACd,GACJ;AAEA,EAAA,uBACI,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACG,EAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA,EAAe,cAAA;AAAA,MAEd,QAAA,EAAA;AAAA;AAAA,GACL;AAER;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/AutoComplete/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport {AutoComplete, useSeparator} from \"@lmb-it/kitsconcertomobile\";\nimport type { IAutoCompleteElement } from \"@lmb-it/kitsconcerto-types\";\nimport { useAutoCompleteLogic } from \"../hooks/useAutoCompleteLogic\";\nimport { useComponentDefaults, useResolvedStyle } from \"../../../hooks\";\nimport { splitTextStyle } from \"../../../hooks/useResolvedStyle\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\nconst KitsAutoComplete = ({ ref, ...rawProps }: IAutoCompleteElement) => {\n const { mergedProps: props, themeStyle, elementStyles, elementProps } = useComponentDefaults('AutoComplete', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n /* ─── Chips field slots — the native half of the same contract ──────────\n `tokenContainer` is the field wrapper View that holds the chips and the\n TextInput (web: `ul.p-autocomplete-multiple-container`). `token` splits\n in two on native, because a React Native `View` cannot carry `color` or\n `fontSize` — the text half goes to the chip's `Text`, which is what the\n CSS cascade does for free on web. */\n const resolvedTokenContainer = useResolvedStyle(elementStyles?.tokenContainer || {});\n const resolvedToken = useResolvedStyle(elementStyles?.token || {});\n const resolvedTokenIcon = useResolvedStyle(elementStyles?.tokenIcon || {});\n const {wrapper: tokenBoxStyle, text: tokenLabelStyle} = splitTextStyle(resolvedToken);\n const {\n id,\n rightAddon,\n leftAddon,\n errors,\n invalid,\n label,\n hideError,\n disabled,\n required,\n isFloatedLabel,\n inputSize = \"md\",\n forceSelection,\n completeMethod,\n helperText,\n withArrow,\n placeholder,\n isMultiple,\n localProps,\n delay,\n minLength,\n selectionLimit,\n showEmptyMessage,\n emptyMessage,\n attached,\n containerStyle,\n } = props;\n\n const { nativeProps } = useSeparator<HTMLSelectElement>(props);\n\n const { resolveToken } = useKitsTheme();\n const primaryColor = resolveToken('primary');\n const borderColor = resolveToken('border');\n\n const {\n inputValue,\n setInputValue,\n filteredList,\n search,\n handleOnChange,\n list,\n childrenKey,\n labelKey,\n } = useAutoCompleteLogic({ isMultiple, forceSelection, completeMethod, ref });\n\n const hasThemeStyle = Object.keys(themeStyle).length > 0;\n\n\n const Element = <AutoComplete\n disabled={disabled}\n placeholder={placeholder}\n value={inputValue}\n forceSelection={forceSelection}\n suggestions={Array.isArray(filteredList) ? filteredList : list}\n completeMethod={search}\n dropdown={withArrow}\n multiple={isMultiple}\n field={labelKey}\n invalid={!!invalid}\n emptyMessage={emptyMessage ?? \"No results found\"}\n {...(delay != null ? { delay } : {})}\n {...(minLength != null ? { minLength } : {})}\n {...(selectionLimit != null ? { selectionLimit } : {})}\n showEmptyMessage={showEmptyMessage ?? true}\n optionGroupChildren={childrenKey ?? undefined}\n optionGroupLabel={childrenKey ? labelKey : undefined}\n style={{ width: \"100%\", borderRadius: 0, border:'none', backgroundColor:'transparent' }}\n inputStyle={{ flexDirection: \"row\", borderRadius: 0, border:'none', width: \"100%\",backgroundColor:'transparent', ...(resolvedRootStyle || resolvedThemeStyle) }}\n tokenContainerStyle={resolvedTokenContainer}\n tokenStyle={tokenBoxStyle}\n tokenLabelStyle={tokenLabelStyle}\n tokenIconStyle={resolvedTokenIcon}\n onChange={(event) => {\n setInputValue(event.value);\n handleOnChange(event);\n }}\n {...(localProps ?? {})}\n />\n\n if (attached) {\n return Element;\n }\n\n // KitsContainer's `inputGroup` wrapper defaults to `overflow: 'hidden'`\n // (so rounded borders clip the input cleanly). For AutoComplete that\n // would clip the floating suggestions panel back to the input's bounds\n // — the panel renders but is invisible, which is the \"list never\n // appears\" symptom on mobile. Force `overflow: 'visible'` on the\n // container chain so the panel can escape.\n const overflowEscape = {\n ...elementStyles,\n container: {\n ...(elementStyles?.container || {}),\n overflow: 'visible' as const,\n },\n inputGroup: {\n ...(elementStyles?.inputGroup || {}),\n overflow: 'visible' as const,\n },\n };\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n hideError={hideError}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n helperText={helperText}\n errors={errors}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={overflowEscape}\n elementProps={elementProps}\n >\n {Element}\n </KitsContainer>\n );\n};\n\nexport default KitsAutoComplete;\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ var jsxRuntime = require('react/jsx-runtime');
6
6
  require('react');
7
7
  require('../../../contexts/DialogContext.cjs');
8
8
  require('../../../contexts/PermissionsContext.cjs');
9
+ require('../../../contexts/BreadcrumbContext.cjs');
9
10
  var useComponentDefaults = require('../../../hooks/useComponentDefaults.cjs');
10
11
  var index_native = require('../../../primitives/Text/index.cjs');
11
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/CascadeSelect/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text } from '../../../_compat';\nimport { useComponentDefaults } from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsCascadeSelect = (rawProps: Record<string, any> = {}) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('CascadeSelect', rawProps, 'Select');\n return <Text>CascadeSelect is not yet available on native.</Text>;\n};\n\nexport default KitsCascadeSelect;\n"],"names":["useComponentDefaults","jsx","Text"],"mappings":";;;;;;;;;;;AAIA,MAAM,iBAAA,GAAoB,CAAC,QAAA,GAAgC,EAAC,KAAM;AAC9D,EAAA,MAAM,EAAE,aAAa,KAAA,EAAO,UAAA,EAAY,eAAc,GAAIA,4BAAA,CAAqB,eAAA,EAAiB,QAAA,EAAU,QAAQ,CAAA;AAClH,EAAA,uBAAOC,cAAA,CAACC,wBAAK,QAAA,EAAA,+CAAA,EAA6C,CAAA;AAC9D;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/CascadeSelect/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text } from '../../../_compat';\nimport { useComponentDefaults } from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsCascadeSelect = (rawProps: Record<string, any> = {}) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('CascadeSelect', rawProps, 'Select');\n return <Text>CascadeSelect is not yet available on native.</Text>;\n};\n\nexport default KitsCascadeSelect;\n"],"names":["useComponentDefaults","jsx","Text"],"mappings":";;;;;;;;;;;;AAIA,MAAM,iBAAA,GAAoB,CAAC,QAAA,GAAgC,EAAC,KAAM;AAC9D,EAAA,MAAM,EAAE,aAAa,KAAA,EAAO,UAAA,EAAY,eAAc,GAAIA,4BAAA,CAAqB,eAAA,EAAiB,QAAA,EAAU,QAAQ,CAAA;AAClH,EAAA,uBAAOC,cAAA,CAACC,wBAAK,QAAA,EAAA,+CAAA,EAA6C,CAAA;AAC9D;;;;"}
@@ -2,6 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import 'react';
3
3
  import '../../../contexts/DialogContext.js';
4
4
  import '../../../contexts/PermissionsContext.js';
5
+ import '../../../contexts/BreadcrumbContext.js';
5
6
  import useComponentDefaults from '../../../hooks/useComponentDefaults.js';
6
7
  import Text from '../../../primitives/Text/index.js';
7
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/CascadeSelect/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text } from '../../../_compat';\nimport { useComponentDefaults } from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsCascadeSelect = (rawProps: Record<string, any> = {}) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('CascadeSelect', rawProps, 'Select');\n return <Text>CascadeSelect is not yet available on native.</Text>;\n};\n\nexport default KitsCascadeSelect;\n"],"names":[],"mappings":";;;;;;;AAIA,MAAM,iBAAA,GAAoB,CAAC,QAAA,GAAgC,EAAC,KAAM;AAC9D,EAAA,MAAM,EAAE,aAAa,KAAA,EAAO,UAAA,EAAY,eAAc,GAAI,oBAAA,CAAqB,eAAA,EAAiB,QAAA,EAAU,QAAQ,CAAA;AAClH,EAAA,uBAAO,GAAA,CAAC,QAAK,QAAA,EAAA,+CAAA,EAA6C,CAAA;AAC9D;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/CascadeSelect/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport { Text } from '../../../_compat';\nimport { useComponentDefaults } from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsCascadeSelect = (rawProps: Record<string, any> = {}) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('CascadeSelect', rawProps, 'Select');\n return <Text>CascadeSelect is not yet available on native.</Text>;\n};\n\nexport default KitsCascadeSelect;\n"],"names":[],"mappings":";;;;;;;;AAIA,MAAM,iBAAA,GAAoB,CAAC,QAAA,GAAgC,EAAC,KAAM;AAC9D,EAAA,MAAM,EAAE,aAAa,KAAA,EAAO,UAAA,EAAY,eAAc,GAAI,oBAAA,CAAqB,eAAA,EAAiB,QAAA,EAAU,QAAQ,CAAA;AAClH,EAAA,uBAAO,GAAA,CAAC,QAAK,QAAA,EAAA,+CAAA,EAA6C,CAAA;AAC9D;;;;"}
@@ -89,6 +89,7 @@ var useSelectBase = require('../hooks/useSelectBase.cjs');
89
89
  var locale = require('../../../hooks/locale.cjs');
90
90
  require('../../../contexts/DialogContext.cjs');
91
91
  require('../../../contexts/PermissionsContext.cjs');
92
+ require('../../../contexts/BreadcrumbContext.cjs');
92
93
  var useComponentDefaults = require('../../../hooks/useComponentDefaults.cjs');
93
94
  var useResolvedStyle = require('../../../hooks/useResolvedStyle.cjs');
94
95
  var useThemedFont = require('../../../hooks/useThemedFont.cjs');