@lmb-it/kitsconcerto-native 0.1.256 → 0.1.258

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 (50) hide show
  1. package/apps/mobile/src/Core/Dropdown/index.cjs +64 -23
  2. package/apps/mobile/src/Core/Dropdown/index.cjs.map +1 -1
  3. package/apps/mobile/src/Core/Dropdown/index.js +66 -25
  4. package/apps/mobile/src/Core/Dropdown/index.js.map +1 -1
  5. package/apps/mobile/src/Core/Dropdown/panelGeometry.cjs +43 -0
  6. package/apps/mobile/src/Core/Dropdown/panelGeometry.cjs.map +1 -0
  7. package/apps/mobile/src/Core/Dropdown/panelGeometry.js +38 -0
  8. package/apps/mobile/src/Core/Dropdown/panelGeometry.js.map +1 -0
  9. package/apps/mobile/src/Core/MultiSelect/index.cjs +21 -2
  10. package/apps/mobile/src/Core/MultiSelect/index.cjs.map +1 -1
  11. package/apps/mobile/src/Core/MultiSelect/index.js +21 -2
  12. package/apps/mobile/src/Core/MultiSelect/index.js.map +1 -1
  13. package/form/controls/Checkbox/checkbox.cjs +1 -1
  14. package/form/controls/Checkbox/checkbox.cjs.map +1 -1
  15. package/form/controls/Checkbox/checkbox.js +1 -1
  16. package/form/controls/Checkbox/checkbox.js.map +1 -1
  17. package/form/inputs/InputTextarea/index.cjs +6 -1
  18. package/form/inputs/InputTextarea/index.cjs.map +1 -1
  19. package/form/inputs/InputTextarea/index.js +6 -1
  20. package/form/inputs/InputTextarea/index.js.map +1 -1
  21. package/form/inputs/Slider/index.cjs +6 -3
  22. package/form/inputs/Slider/index.cjs.map +1 -1
  23. package/form/inputs/Slider/index.js +6 -3
  24. package/form/inputs/Slider/index.js.map +1 -1
  25. package/form/selects/Dropdown/index.cjs +5 -1
  26. package/form/selects/Dropdown/index.cjs.map +1 -1
  27. package/form/selects/Dropdown/index.js +5 -1
  28. package/form/selects/Dropdown/index.js.map +1 -1
  29. package/form/selects/ListBox/index.cjs +6 -2
  30. package/form/selects/ListBox/index.cjs.map +1 -1
  31. package/form/selects/ListBox/index.js +6 -2
  32. package/form/selects/ListBox/index.js.map +1 -1
  33. package/form/selects/MultiSelect/index.cjs +5 -1
  34. package/form/selects/MultiSelect/index.cjs.map +1 -1
  35. package/form/selects/MultiSelect/index.js +5 -1
  36. package/form/selects/MultiSelect/index.js.map +1 -1
  37. package/index.d.ts +2 -0
  38. package/locale/ar.json.cjs +3 -0
  39. package/locale/ar.json.cjs.map +1 -1
  40. package/locale/ar.json.js +3 -1
  41. package/locale/ar.json.js.map +1 -1
  42. package/locale/en.json.cjs +3 -0
  43. package/locale/en.json.cjs.map +1 -1
  44. package/locale/en.json.js +3 -1
  45. package/locale/en.json.js.map +1 -1
  46. package/package.json +1 -1
  47. package/packages/types/src/Theme/defaultTheme.cjs +7 -1
  48. package/packages/types/src/Theme/defaultTheme.cjs.map +1 -1
  49. package/packages/types/src/Theme/defaultTheme.js +7 -1
  50. package/packages/types/src/Theme/defaultTheme.js.map +1 -1
@@ -2,6 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useEffect } from 'react';
3
3
  import Slider from '@react-native-community/slider';
4
4
  import { Text } from 'react-native';
5
+ import { useKitsTheme } from '../../../contexts/Theme/KitsThemeProvider.js';
5
6
  import Flex from '../../../layout/Flex/index.js';
6
7
 
7
8
  const KitsSliders = ({
@@ -17,6 +18,8 @@ const KitsSliders = ({
17
18
  className
18
19
  }) => {
19
20
  const isControlled = value !== void 0;
21
+ const { resolveToken } = useKitsTheme();
22
+ const valueColor = resolveToken("text");
20
23
  const [localValue, setLocalValue] = useState(
21
24
  isRange ? [minValue, maxValue] : minValue
22
25
  );
@@ -68,8 +71,8 @@ const KitsSliders = ({
68
71
  }
69
72
  ),
70
73
  /* @__PURE__ */ jsxs(Flex, { justifyContent: "space-between", children: [
71
- /* @__PURE__ */ jsx(Text, { children: prefix ? `${prefix}${start}` : start }),
72
- /* @__PURE__ */ jsx(Text, { children: prefix ? `${prefix}${end}` : end })
74
+ /* @__PURE__ */ jsx(Text, { style: { color: valueColor }, children: prefix ? `${prefix}${start}` : start }),
75
+ /* @__PURE__ */ jsx(Text, { style: { color: valueColor }, children: prefix ? `${prefix}${end}` : end })
73
76
  ] })
74
77
  ] });
75
78
  }
@@ -93,7 +96,7 @@ const KitsSliders = ({
93
96
  }
94
97
  }
95
98
  ),
96
- /* @__PURE__ */ jsx(Flex, { justifyContent: "flex-end", children: /* @__PURE__ */ jsx(Text, { children: prefix ? `${prefix}${numericValue}` : numericValue }) })
99
+ /* @__PURE__ */ jsx(Flex, { justifyContent: "flex-end", children: /* @__PURE__ */ jsx(Text, { style: { color: valueColor }, children: prefix ? `${prefix}${numericValue}` : numericValue }) })
97
100
  ] });
98
101
  };
99
102
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/inputs/Slider/index.native.tsx"],"sourcesContent":["import React, { type FC, useEffect, useState } from \"react\";\nimport Slider from \"@react-native-community/slider\";\nimport { Text } from \"react-native\";\nimport type { ISliderProps } from \"@lmb-it/kitsconcerto-types\";\nimport { Flex } from \"../../../_compat\";\n\nconst KitsSliders: FC<ISliderProps> = ({\n minValue = 0,\n maxValue = 100,\n prefix,\n step,\n disabled,\n value,\n isRange = false,\n onChange,\n onSlideEnd,\n className,\n }) => {\n const isControlled = value !== undefined;\n\n const [localValue, setLocalValue] = useState<number | [number, number]>(\n isRange ? [minValue, maxValue] : minValue\n );\n\n const currentValue = isControlled ? value : localValue;\n\n useEffect(() => {\n if (!isControlled) {\n setLocalValue(isRange ? [minValue, maxValue] : minValue);\n }\n }, [minValue, maxValue, isRange, isControlled]);\n\n /* ---------------------------- RANGE MODE --------------------------- */\n\n if (isRange) {\n const [start, end] = Array.isArray(currentValue)\n ? currentValue\n : [minValue, maxValue];\n\n return (\n <Flex w=\"full\" flexDirection=\"column\" gap={2} className={className}>\n {/* Start thumb */}\n <Slider\n minimumValue={minValue}\n maximumValue={end}\n value={start}\n step={step}\n disabled={disabled}\n onValueChange={(v: number) => {\n const next: [number, number] = [v, end];\n isControlled ? onChange?.({value:next}) : setLocalValue(next);\n }}\n onSlidingComplete={(v: number) => {\n onSlideEnd?.({\n value: [v, end],\n });\n }}\n />\n\n {/* End thumb */}\n <Slider\n minimumValue={start}\n maximumValue={maxValue}\n value={end}\n step={step}\n disabled={disabled}\n onValueChange={(v: number) => {\n const next: [number, number] = [start, v];\n isControlled ? onChange?.({value:next}) : setLocalValue(next);\n }}\n onSlidingComplete={(v: number) => {\n onSlideEnd?.({\n value: [start, v],\n });\n }}\n />\n\n <Flex justifyContent=\"space-between\">\n <Text>{prefix ? `${prefix}${start}` : start}</Text>\n <Text>{prefix ? `${prefix}${end}` : end}</Text>\n </Flex>\n </Flex>\n );\n }\n\n /* --------------------------- SINGLE MODE ---------------------------- */\n\n const numericValue =\n typeof currentValue === \"number\" ? currentValue : minValue;\n\n return (\n <Flex w={'full'} flexDirection=\"column\" gap={2} className={className}>\n <Slider\n minimumValue={minValue}\n maximumValue={maxValue}\n step={step}\n disabled={disabled}\n value={numericValue}\n onValueChange={(v: number) => {\n isControlled ? onChange?.({value:v}) : setLocalValue(v);\n }}\n onSlidingComplete={(v: number) => {\n onSlideEnd?.({\n value: v,\n });\n }}\n />\n\n <Flex justifyContent=\"flex-end\">\n <Text>{prefix ? `${prefix}${numericValue}` : numericValue}</Text>\n </Flex>\n </Flex>\n );\n};\n\nexport default KitsSliders;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/inputs/Slider/index.native.tsx"],"sourcesContent":["import React, { type FC, useEffect, useState } from \"react\";\nimport Slider from \"@react-native-community/slider\";\nimport { Text } from \"react-native\";\nimport type { ISliderProps } from \"@lmb-it/kitsconcerto-types\";\nimport { Flex } from \"../../../_compat\";\nimport { useKitsTheme } from \"../../../contexts/Theme\";\n\nconst KitsSliders: FC<ISliderProps> = ({\n minValue = 0,\n maxValue = 100,\n prefix,\n step,\n disabled,\n value,\n isRange = false,\n onChange,\n onSlideEnd,\n className,\n }) => {\n const isControlled = value !== undefined;\n /*\n * ⛔ THESE THREE LABELS HAD NO COLOUR AT ALL — the only file in the\n * whole native form tree importing RAW RN `Text` instead of the themed\n * primitive, found sweeping every native input for the same dark-mode\n * fault as the Textarea (22 Sep 2026). Native drew them in the platform\n * default (black), invisible on the dark background.\n */\n const { resolveToken } = useKitsTheme();\n const valueColor = resolveToken('text');\n\n const [localValue, setLocalValue] = useState<number | [number, number]>(\n isRange ? [minValue, maxValue] : minValue\n );\n\n const currentValue = isControlled ? value : localValue;\n\n useEffect(() => {\n if (!isControlled) {\n setLocalValue(isRange ? [minValue, maxValue] : minValue);\n }\n }, [minValue, maxValue, isRange, isControlled]);\n\n /* ---------------------------- RANGE MODE --------------------------- */\n\n if (isRange) {\n const [start, end] = Array.isArray(currentValue)\n ? currentValue\n : [minValue, maxValue];\n\n return (\n <Flex w=\"full\" flexDirection=\"column\" gap={2} className={className}>\n {/* Start thumb */}\n <Slider\n minimumValue={minValue}\n maximumValue={end}\n value={start}\n step={step}\n disabled={disabled}\n onValueChange={(v: number) => {\n const next: [number, number] = [v, end];\n isControlled ? onChange?.({value:next}) : setLocalValue(next);\n }}\n onSlidingComplete={(v: number) => {\n onSlideEnd?.({\n value: [v, end],\n });\n }}\n />\n\n {/* End thumb */}\n <Slider\n minimumValue={start}\n maximumValue={maxValue}\n value={end}\n step={step}\n disabled={disabled}\n onValueChange={(v: number) => {\n const next: [number, number] = [start, v];\n isControlled ? onChange?.({value:next}) : setLocalValue(next);\n }}\n onSlidingComplete={(v: number) => {\n onSlideEnd?.({\n value: [start, v],\n });\n }}\n />\n\n <Flex justifyContent=\"space-between\">\n <Text style={{ color: valueColor }}>{prefix ? `${prefix}${start}` : start}</Text>\n <Text style={{ color: valueColor }}>{prefix ? `${prefix}${end}` : end}</Text>\n </Flex>\n </Flex>\n );\n }\n\n /* --------------------------- SINGLE MODE ---------------------------- */\n\n const numericValue =\n typeof currentValue === \"number\" ? currentValue : minValue;\n\n return (\n <Flex w={'full'} flexDirection=\"column\" gap={2} className={className}>\n <Slider\n minimumValue={minValue}\n maximumValue={maxValue}\n step={step}\n disabled={disabled}\n value={numericValue}\n onValueChange={(v: number) => {\n isControlled ? onChange?.({value:v}) : setLocalValue(v);\n }}\n onSlidingComplete={(v: number) => {\n onSlideEnd?.({\n value: v,\n });\n }}\n />\n\n <Flex justifyContent=\"flex-end\">\n <Text style={{ color: valueColor }}>{prefix ? `${prefix}${numericValue}` : numericValue}</Text>\n </Flex>\n </Flex>\n );\n};\n\nexport default KitsSliders;\n"],"names":[],"mappings":"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"}
@@ -86,6 +86,7 @@ require('../../../apps/mobile/src/Core/Input/Field.cjs');
86
86
  require('../../../apps/mobile/src/Core/Input/Slot.cjs');
87
87
  var Functions = require('../../helpers/Functions.cjs');
88
88
  var useSelectBase = require('../hooks/useSelectBase.cjs');
89
+ var locale = require('../../../hooks/locale.cjs');
89
90
  require('../../../contexts/DialogContext.cjs');
90
91
  var useComponentDefaults = require('../../../hooks/useComponentDefaults.cjs');
91
92
  var useResolvedStyle = require('../../../hooks/useResolvedStyle.cjs');
@@ -122,6 +123,7 @@ const KitsDropdown = ({ className, ref, ...rawProps }) => {
122
123
  containerStyle
123
124
  } = props;
124
125
  const { list, keys, onChange, selectedValue } = useSelectBase.useSelectBase();
126
+ const { t, isRTL } = locale.useLanguage();
125
127
  const ClState = Functions.ClHelper({
126
128
  inputSize: inputSize ?? "",
127
129
  isChecked: false,
@@ -132,7 +134,9 @@ const KitsDropdown = ({ className, ref, ...rawProps }) => {
132
134
  const Element = /* @__PURE__ */ jsxRuntime.jsx(
133
135
  index.default,
134
136
  {
135
- emptyFilterMessage,
137
+ emptyFilterMessage: emptyFilterMessage ?? t("emptyFilterMessage"),
138
+ filterPlaceholder: t("searchPlaceholder"),
139
+ isRTL,
136
140
  value: dropdownValue,
137
141
  placeholder,
138
142
  options: Array.isArray(list) ? list : [],
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/Dropdown/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport { Dropdown } from \"@lmb-it/kitsconcertomobile\";\nimport type { IDropdownSelect } from \"@lmb-it/kitsconcerto-types\";\nimport { KitsContainer } from \"../../../_compat\";\nimport { ClHelper } from \"../../helpers/Functions\";\nimport { useSelectBase } from \"../hooks/useSelectBase\";\nimport {useComponentDefaults, useResolvedStyle} from \"../../../hooks\";\n\nconst KitsDropdown = ({ className, ref, ...rawProps }: IDropdownSelect) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('DropdownSelect', 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 disabled,\n required,\n label,\n localProps,\n helperText,\n isFloatedLabel,\n withFilter,\n attached,\n inputSize,\n placeholder,\n hideError,\n virtualScroll,\n emptyFilterMessage,\n filterBy,\n loading,\n showClear,\n containerStyle\n } = props;\n\n const { list, keys, onChange, selectedValue } = useSelectBase();\n\n const ClState = ClHelper({\n inputSize: inputSize ?? \"\",\n isChecked: false,\n isInvalid: !!invalid,\n isDisabled: !!disabled,\n });\n\n const dropdownValue = selectedValue != null && typeof selectedValue !== 'object'\n ? selectedValue.toString()\n : selectedValue;\n\n const Element = (\n <Dropdown\n emptyFilterMessage={emptyFilterMessage}\n value={dropdownValue}\n placeholder={placeholder}\n options={Array.isArray(list) ? list : []}\n disabled={disabled}\n loading={loading}\n showClear={showClear ?? (!required && selectedValue != null)}\n style={{ width: '100%', height: attached ? '100%' : undefined, borderRadius: 0, ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle) }}\n onChange={onChange}\n {...keys}\n invalid={hideError && !!invalid}\n filter={!!withFilter}\n filterBy={filterBy ?? 'label'}\n virtualScrollerOptions={virtualScroll}\n className={`w-full ${className ?? ''} ${ClState}`}\n {...(localProps ? localProps : {})}\n />\n );\n\n if (attached) {\n return Element;\n }\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n hideError={hideError}\n errors={errors}\n helperText={helperText}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n {Element}\n </KitsContainer>\n );\n}\nexport default KitsDropdown;\n"],"names":["useComponentDefaults","useResolvedStyle","useSelectBase","ClHelper","jsx","Dropdown","KitsContainer"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/Dropdown/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport { Dropdown } from \"@lmb-it/kitsconcertomobile\";\nimport type { IDropdownSelect } from \"@lmb-it/kitsconcerto-types\";\nimport { KitsContainer } from \"../../../_compat\";\nimport { ClHelper } from \"../../helpers/Functions\";\nimport { useSelectBase } from \"../hooks/useSelectBase\";\nimport {useComponentDefaults, useLanguage, useResolvedStyle} from \"../../../hooks\";\n\nconst KitsDropdown = ({ className, ref, ...rawProps }: IDropdownSelect) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('DropdownSelect', 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 disabled,\n required,\n label,\n localProps,\n helperText,\n isFloatedLabel,\n withFilter,\n attached,\n inputSize,\n placeholder,\n hideError,\n virtualScroll,\n emptyFilterMessage,\n filterBy,\n loading,\n showClear,\n containerStyle\n } = props;\n\n const { list, keys, onChange, selectedValue } = useSelectBase();\n\n /* The panel's own copy. The native Dropdown lives in `apps/mobile`, which\n this package imports, so it cannot reach LocaleContext itself without a\n cycle between the two workspaces — the sentence is resolved here, where\n `useLanguage()` already is, and passed down as a prop.\n\n ⛔ `isRTL` is the READER's language, never `I18nManager.isRTL`. A\n consumer that forces RTL at boot keeps that process direction after the\n reader switches to English, and the filter field must follow the reader. */\n const { t, isRTL } = useLanguage();\n\n const ClState = ClHelper({\n inputSize: inputSize ?? \"\",\n isChecked: false,\n isInvalid: !!invalid,\n isDisabled: !!disabled,\n });\n\n const dropdownValue = selectedValue != null && typeof selectedValue !== 'object'\n ? selectedValue.toString()\n : selectedValue;\n\n const Element = (\n <Dropdown\n emptyFilterMessage={emptyFilterMessage ?? t('emptyFilterMessage')}\n filterPlaceholder={t('searchPlaceholder')}\n isRTL={isRTL}\n value={dropdownValue}\n placeholder={placeholder}\n options={Array.isArray(list) ? list : []}\n disabled={disabled}\n loading={loading}\n showClear={showClear ?? (!required && selectedValue != null)}\n style={{ width: '100%', height: attached ? '100%' : undefined, borderRadius: 0, ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle) }}\n onChange={onChange}\n {...keys}\n invalid={hideError && !!invalid}\n filter={!!withFilter}\n filterBy={filterBy ?? 'label'}\n virtualScrollerOptions={virtualScroll}\n className={`w-full ${className ?? ''} ${ClState}`}\n {...(localProps ? localProps : {})}\n />\n );\n\n if (attached) {\n return Element;\n }\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n hideError={hideError}\n errors={errors}\n helperText={helperText}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n {Element}\n </KitsContainer>\n );\n}\nexport default KitsDropdown;\n"],"names":["useComponentDefaults","useResolvedStyle","useSelectBase","useLanguage","ClHelper","jsx","Dropdown","KitsContainer"],"mappings":"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"}
@@ -82,6 +82,7 @@ import '../../../apps/mobile/src/Core/Input/Field.js';
82
82
  import '../../../apps/mobile/src/Core/Input/Slot.js';
83
83
  import { ClHelper } from '../../helpers/Functions.js';
84
84
  import { useSelectBase } from '../hooks/useSelectBase.js';
85
+ import { useLanguage } from '../../../hooks/locale.js';
85
86
  import '../../../contexts/DialogContext.js';
86
87
  import useComponentDefaults from '../../../hooks/useComponentDefaults.js';
87
88
  import useResolvedStyle from '../../../hooks/useResolvedStyle.js';
@@ -118,6 +119,7 @@ const KitsDropdown = ({ className, ref, ...rawProps }) => {
118
119
  containerStyle
119
120
  } = props;
120
121
  const { list, keys, onChange, selectedValue } = useSelectBase();
122
+ const { t, isRTL } = useLanguage();
121
123
  const ClState = ClHelper({
122
124
  inputSize: inputSize ?? "",
123
125
  isChecked: false,
@@ -128,7 +130,9 @@ const KitsDropdown = ({ className, ref, ...rawProps }) => {
128
130
  const Element = /* @__PURE__ */ jsx(
129
131
  Dropdown,
130
132
  {
131
- emptyFilterMessage,
133
+ emptyFilterMessage: emptyFilterMessage ?? t("emptyFilterMessage"),
134
+ filterPlaceholder: t("searchPlaceholder"),
135
+ isRTL,
132
136
  value: dropdownValue,
133
137
  placeholder,
134
138
  options: Array.isArray(list) ? list : [],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/Dropdown/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport { Dropdown } from \"@lmb-it/kitsconcertomobile\";\nimport type { IDropdownSelect } from \"@lmb-it/kitsconcerto-types\";\nimport { KitsContainer } from \"../../../_compat\";\nimport { ClHelper } from \"../../helpers/Functions\";\nimport { useSelectBase } from \"../hooks/useSelectBase\";\nimport {useComponentDefaults, useResolvedStyle} from \"../../../hooks\";\n\nconst KitsDropdown = ({ className, ref, ...rawProps }: IDropdownSelect) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('DropdownSelect', 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 disabled,\n required,\n label,\n localProps,\n helperText,\n isFloatedLabel,\n withFilter,\n attached,\n inputSize,\n placeholder,\n hideError,\n virtualScroll,\n emptyFilterMessage,\n filterBy,\n loading,\n showClear,\n containerStyle\n } = props;\n\n const { list, keys, onChange, selectedValue } = useSelectBase();\n\n const ClState = ClHelper({\n inputSize: inputSize ?? \"\",\n isChecked: false,\n isInvalid: !!invalid,\n isDisabled: !!disabled,\n });\n\n const dropdownValue = selectedValue != null && typeof selectedValue !== 'object'\n ? selectedValue.toString()\n : selectedValue;\n\n const Element = (\n <Dropdown\n emptyFilterMessage={emptyFilterMessage}\n value={dropdownValue}\n placeholder={placeholder}\n options={Array.isArray(list) ? list : []}\n disabled={disabled}\n loading={loading}\n showClear={showClear ?? (!required && selectedValue != null)}\n style={{ width: '100%', height: attached ? '100%' : undefined, borderRadius: 0, ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle) }}\n onChange={onChange}\n {...keys}\n invalid={hideError && !!invalid}\n filter={!!withFilter}\n filterBy={filterBy ?? 'label'}\n virtualScrollerOptions={virtualScroll}\n className={`w-full ${className ?? ''} ${ClState}`}\n {...(localProps ? localProps : {})}\n />\n );\n\n if (attached) {\n return Element;\n }\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n hideError={hideError}\n errors={errors}\n helperText={helperText}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n {Element}\n </KitsContainer>\n );\n}\nexport default KitsDropdown;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/Dropdown/index.native.tsx"],"sourcesContent":["import React from \"react\";\nimport { Dropdown } from \"@lmb-it/kitsconcertomobile\";\nimport type { IDropdownSelect } from \"@lmb-it/kitsconcerto-types\";\nimport { KitsContainer } from \"../../../_compat\";\nimport { ClHelper } from \"../../helpers/Functions\";\nimport { useSelectBase } from \"../hooks/useSelectBase\";\nimport {useComponentDefaults, useLanguage, useResolvedStyle} from \"../../../hooks\";\n\nconst KitsDropdown = ({ className, ref, ...rawProps }: IDropdownSelect) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('DropdownSelect', 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 disabled,\n required,\n label,\n localProps,\n helperText,\n isFloatedLabel,\n withFilter,\n attached,\n inputSize,\n placeholder,\n hideError,\n virtualScroll,\n emptyFilterMessage,\n filterBy,\n loading,\n showClear,\n containerStyle\n } = props;\n\n const { list, keys, onChange, selectedValue } = useSelectBase();\n\n /* The panel's own copy. The native Dropdown lives in `apps/mobile`, which\n this package imports, so it cannot reach LocaleContext itself without a\n cycle between the two workspaces — the sentence is resolved here, where\n `useLanguage()` already is, and passed down as a prop.\n\n ⛔ `isRTL` is the READER's language, never `I18nManager.isRTL`. A\n consumer that forces RTL at boot keeps that process direction after the\n reader switches to English, and the filter field must follow the reader. */\n const { t, isRTL } = useLanguage();\n\n const ClState = ClHelper({\n inputSize: inputSize ?? \"\",\n isChecked: false,\n isInvalid: !!invalid,\n isDisabled: !!disabled,\n });\n\n const dropdownValue = selectedValue != null && typeof selectedValue !== 'object'\n ? selectedValue.toString()\n : selectedValue;\n\n const Element = (\n <Dropdown\n emptyFilterMessage={emptyFilterMessage ?? t('emptyFilterMessage')}\n filterPlaceholder={t('searchPlaceholder')}\n isRTL={isRTL}\n value={dropdownValue}\n placeholder={placeholder}\n options={Array.isArray(list) ? list : []}\n disabled={disabled}\n loading={loading}\n showClear={showClear ?? (!required && selectedValue != null)}\n style={{ width: '100%', height: attached ? '100%' : undefined, borderRadius: 0, ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle) }}\n onChange={onChange}\n {...keys}\n invalid={hideError && !!invalid}\n filter={!!withFilter}\n filterBy={filterBy ?? 'label'}\n virtualScrollerOptions={virtualScroll}\n className={`w-full ${className ?? ''} ${ClState}`}\n {...(localProps ? localProps : {})}\n />\n );\n\n if (attached) {\n return Element;\n }\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n hideError={hideError}\n errors={errors}\n helperText={helperText}\n invalid={invalid}\n label={label}\n containerStyle={containerStyle}\n elementStyles={elementStyles}\n >\n {Element}\n </KitsContainer>\n );\n}\nexport default KitsDropdown;\n"],"names":[],"mappings":"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"}
@@ -87,6 +87,7 @@ require('../../../apps/mobile/src/Core/RadioButton/index.cjs');
87
87
  require('../../../apps/mobile/src/Core/Input/index.cjs');
88
88
  require('../../../apps/mobile/src/Core/Input/Field.cjs');
89
89
  require('../../../apps/mobile/src/Core/Input/Slot.cjs');
90
+ var locale = require('../../../hooks/locale.cjs');
90
91
  require('../../../contexts/DialogContext.cjs');
91
92
  var useComponentDefaults = require('../../../hooks/useComponentDefaults.cjs');
92
93
  var useResolvedStyle = require('../../../hooks/useResolvedStyle.cjs');
@@ -113,6 +114,7 @@ const KitsListBox = (rawProps) => {
113
114
  } = props;
114
115
  const { list, labelKey, valueKey, childrenKey, onChange, selectedValue } = useSelectBase.useSelectBase();
115
116
  const [filterText, setFilterText] = React.useState("");
117
+ const { t: translate, isRTL } = locale.useLanguage();
116
118
  const t = style.resolveThemeTokenForNative;
117
119
  const primaryBg = t("highlight-bg") || t("primary.100") || "#E8EAF6";
118
120
  const primaryText = t("primary.700") || "#303F9F";
@@ -217,7 +219,7 @@ const KitsListBox = (rawProps) => {
217
219
  {
218
220
  value: filterText,
219
221
  onChangeText: setFilterText,
220
- placeholder: "Search...",
222
+ placeholder: translate("searchPlaceholder"),
221
223
  placeholderTextColor: placeholderColor,
222
224
  style: {
223
225
  borderBottomWidth: 1,
@@ -225,7 +227,9 @@ const KitsListBox = (rawProps) => {
225
227
  paddingHorizontal: 12,
226
228
  paddingVertical: 8,
227
229
  fontSize: 14,
228
- color: textColor
230
+ color: textColor,
231
+ textAlign: isRTL ? "right" : "left",
232
+ writingDirection: isRTL ? "rtl" : "ltr"
229
233
  }
230
234
  }
231
235
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/ListBox/index.native.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { ScrollView, Pressable, TextInput } from \"react-native\";\nimport { VStack, Box, Text } from '../../../_compat';\nimport type { IListBoxSelect } from \"@lmb-it/kitsconcerto-types\";\nimport { useSelectBase } from \"../hooks/useSelectBase\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { resolveThemeTokenForNative } from \"@lmb-it/kitsconcertomobile\";\nimport { useComponentDefaults, useResolvedStyle } from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsListBox = (rawProps: IListBoxSelect) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('ListBox', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n label,\n disabled,\n invalid,\n errors,\n helperText,\n inputSize = \"md\",\n isMultiple,\n withFilter,\n filterBy,\n hideError,\n } = props;\n\n const { list, labelKey, valueKey, childrenKey, onChange, selectedValue } = useSelectBase();\n\n const [filterText, setFilterText] = useState(\"\");\n\n const t = resolveThemeTokenForNative;\n const primaryBg = t('highlight-bg') || t('primary.100') || '#E8EAF6';\n const primaryText = t('primary.700') || '#303F9F';\n const borderClr = invalid ? (t('danger') || '#EF4444') : (t('border') || '#D1D5DB');\n const textColor = t('text') || '#1F2937';\n const placeholderColor = t('text-secondary') || '#9CA3AF';\n const groupBg = t('surface-ground') || '#F9FAFB';\n\n const isSelected = useCallback((val: any) => {\n if (isMultiple && Array.isArray(selectedValue)) {\n return selectedValue.includes(val);\n }\n return selectedValue === val;\n }, [isMultiple, selectedValue]);\n\n const onSelect = useCallback((val: any, item: any) => {\n if (isMultiple && Array.isArray(selectedValue)) {\n const newVals = selectedValue.includes(val)\n ? selectedValue.filter((v: any) => v !== val)\n : [...selectedValue, val];\n onChange({ target: { value: newVals } }, newVals);\n } else {\n onChange({ target: { value: val } }, item);\n }\n }, [isMultiple, selectedValue, onChange]);\n\n const filteredList = useMemo(() => {\n if (!withFilter || !filterText.trim()) return list;\n const query = filterText.toLowerCase();\n const searchKey = filterBy || labelKey;\n\n if (childrenKey) {\n return list.reduce((acc: any[], group: any) => {\n const children = group[childrenKey];\n if (Array.isArray(children)) {\n const matched = children.filter((item: any) =>\n String(item[searchKey] ?? \"\").toLowerCase().includes(query)\n );\n if (matched.length > 0) {\n acc.push({ ...group, [childrenKey]: matched });\n }\n }\n return acc;\n }, []);\n }\n\n return list.filter((item: any) =>\n String(item[searchKey] ?? \"\").toLowerCase().includes(query)\n );\n }, [list, filterText, withFilter, filterBy, labelKey, childrenKey]);\n\n const renderItem = (item: any, index: number) => {\n const val = item[valueKey];\n const selected = isSelected(val);\n return (\n <Pressable\n key={`${val}-${index}`}\n style={{\n padding: 10,\n backgroundColor: selected ? primaryBg : 'transparent',\n }}\n onPress={() => !disabled && onSelect(val, item)}\n >\n <Text\n color={selected ? primaryText : textColor}\n fontWeight={selected ? \"bold\" : \"normal\"}\n size={inputSize}\n >\n {item[labelKey]}\n </Text>\n </Pressable>\n );\n };\n\n const renderGroupedItems = () => {\n return filteredList.map((group: any, gi: number) => {\n const children = group[childrenKey!];\n if (!Array.isArray(children)) {\n return renderItem(group, gi);\n }\n return (\n <Box key={`group-${gi}`}>\n <Box style={{ backgroundColor: groupBg, paddingHorizontal: 12, paddingVertical: 8 }}>\n <Text fontWeight=\"600\" color={textColor} size={inputSize}>\n {group[labelKey]}\n </Text>\n </Box>\n {children.map((item: any, ci: number) => renderItem(item, ci))}\n </Box>\n );\n });\n };\n\n return (\n <KitsContainer\n id={id}\n label={label}\n invalid={!!invalid}\n hideError={hideError}\n helperText={helperText}\n errors={errors}\n elementStyles={elementStyles}\n >\n <Box\n borderWidth={1}\n borderColor={borderClr}\n borderRadius=\"$sm\"\n height={250}\n opacity={disabled ? 0.5 : 1}\n style={resolvedRootStyle && Object.keys(resolvedRootStyle).length ? resolvedRootStyle : (Object.keys(resolvedThemeStyle).length ? resolvedThemeStyle : undefined)}\n >\n {withFilter && (\n <TextInput\n value={filterText}\n onChangeText={setFilterText}\n placeholder=\"Search...\"\n placeholderTextColor={placeholderColor}\n style={{\n borderBottomWidth: 1,\n borderBottomColor: borderClr,\n paddingHorizontal: 12,\n paddingVertical: 8,\n fontSize: 14,\n color: textColor,\n }}\n />\n )}\n <ScrollView>\n <VStack>\n {childrenKey\n ? renderGroupedItems()\n : filteredList.map((item: any, i: number) => renderItem(item, i))\n }\n </VStack>\n </ScrollView>\n </Box>\n </KitsContainer>\n );\n};\n\nexport default KitsListBox;\n"],"names":["useComponentDefaults","useResolvedStyle","useSelectBase","useState","resolveThemeTokenForNative","useCallback","useMemo","jsx","Pressable","Text","Box","KitsContainer","jsxs","TextInput","ScrollView","VStack"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/ListBox/index.native.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { ScrollView, Pressable, TextInput } from \"react-native\";\nimport { VStack, Box, Text } from '../../../_compat';\nimport type { IListBoxSelect } from \"@lmb-it/kitsconcerto-types\";\nimport { useSelectBase } from \"../hooks/useSelectBase\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { resolveThemeTokenForNative } from \"@lmb-it/kitsconcertomobile\";\nimport { useComponentDefaults, useLanguage, useResolvedStyle } from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsListBox = (rawProps: IListBoxSelect) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('ListBox', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n label,\n disabled,\n invalid,\n errors,\n helperText,\n inputSize = \"md\",\n isMultiple,\n withFilter,\n filterBy,\n hideError,\n } = props;\n\n const { list, labelKey, valueKey, childrenKey, onChange, selectedValue } = useSelectBase();\n\n const [filterText, setFilterText] = useState(\"\");\n\n /* Same rule as the Dropdown's panel: the filter's copy and its edge come\n from the reader's language, not from the platform's layout direction. */\n const { t: translate, isRTL } = useLanguage();\n\n const t = resolveThemeTokenForNative;\n const primaryBg = t('highlight-bg') || t('primary.100') || '#E8EAF6';\n const primaryText = t('primary.700') || '#303F9F';\n const borderClr = invalid ? (t('danger') || '#EF4444') : (t('border') || '#D1D5DB');\n const textColor = t('text') || '#1F2937';\n const placeholderColor = t('text-secondary') || '#9CA3AF';\n const groupBg = t('surface-ground') || '#F9FAFB';\n\n const isSelected = useCallback((val: any) => {\n if (isMultiple && Array.isArray(selectedValue)) {\n return selectedValue.includes(val);\n }\n return selectedValue === val;\n }, [isMultiple, selectedValue]);\n\n const onSelect = useCallback((val: any, item: any) => {\n if (isMultiple && Array.isArray(selectedValue)) {\n const newVals = selectedValue.includes(val)\n ? selectedValue.filter((v: any) => v !== val)\n : [...selectedValue, val];\n onChange({ target: { value: newVals } }, newVals);\n } else {\n onChange({ target: { value: val } }, item);\n }\n }, [isMultiple, selectedValue, onChange]);\n\n const filteredList = useMemo(() => {\n if (!withFilter || !filterText.trim()) return list;\n const query = filterText.toLowerCase();\n const searchKey = filterBy || labelKey;\n\n if (childrenKey) {\n return list.reduce((acc: any[], group: any) => {\n const children = group[childrenKey];\n if (Array.isArray(children)) {\n const matched = children.filter((item: any) =>\n String(item[searchKey] ?? \"\").toLowerCase().includes(query)\n );\n if (matched.length > 0) {\n acc.push({ ...group, [childrenKey]: matched });\n }\n }\n return acc;\n }, []);\n }\n\n return list.filter((item: any) =>\n String(item[searchKey] ?? \"\").toLowerCase().includes(query)\n );\n }, [list, filterText, withFilter, filterBy, labelKey, childrenKey]);\n\n const renderItem = (item: any, index: number) => {\n const val = item[valueKey];\n const selected = isSelected(val);\n return (\n <Pressable\n key={`${val}-${index}`}\n style={{\n padding: 10,\n backgroundColor: selected ? primaryBg : 'transparent',\n }}\n onPress={() => !disabled && onSelect(val, item)}\n >\n <Text\n color={selected ? primaryText : textColor}\n fontWeight={selected ? \"bold\" : \"normal\"}\n size={inputSize}\n >\n {item[labelKey]}\n </Text>\n </Pressable>\n );\n };\n\n const renderGroupedItems = () => {\n return filteredList.map((group: any, gi: number) => {\n const children = group[childrenKey!];\n if (!Array.isArray(children)) {\n return renderItem(group, gi);\n }\n return (\n <Box key={`group-${gi}`}>\n <Box style={{ backgroundColor: groupBg, paddingHorizontal: 12, paddingVertical: 8 }}>\n <Text fontWeight=\"600\" color={textColor} size={inputSize}>\n {group[labelKey]}\n </Text>\n </Box>\n {children.map((item: any, ci: number) => renderItem(item, ci))}\n </Box>\n );\n });\n };\n\n return (\n <KitsContainer\n id={id}\n label={label}\n invalid={!!invalid}\n hideError={hideError}\n helperText={helperText}\n errors={errors}\n elementStyles={elementStyles}\n >\n <Box\n borderWidth={1}\n borderColor={borderClr}\n borderRadius=\"$sm\"\n height={250}\n opacity={disabled ? 0.5 : 1}\n style={resolvedRootStyle && Object.keys(resolvedRootStyle).length ? resolvedRootStyle : (Object.keys(resolvedThemeStyle).length ? resolvedThemeStyle : undefined)}\n >\n {withFilter && (\n <TextInput\n value={filterText}\n onChangeText={setFilterText}\n placeholder={translate('searchPlaceholder')}\n placeholderTextColor={placeholderColor}\n style={{\n borderBottomWidth: 1,\n borderBottomColor: borderClr,\n paddingHorizontal: 12,\n paddingVertical: 8,\n fontSize: 14,\n color: textColor,\n textAlign: isRTL ? 'right' : 'left',\n writingDirection: isRTL ? 'rtl' : 'ltr',\n }}\n />\n )}\n <ScrollView>\n <VStack>\n {childrenKey\n ? renderGroupedItems()\n : filteredList.map((item: any, i: number) => renderItem(item, i))\n }\n </VStack>\n </ScrollView>\n </Box>\n </KitsContainer>\n );\n};\n\nexport default KitsListBox;\n"],"names":["useComponentDefaults","useResolvedStyle","useSelectBase","useState","useLanguage","resolveThemeTokenForNative","useCallback","useMemo","jsx","Pressable","Text","Box","KitsContainer","jsxs","TextInput","ScrollView","VStack"],"mappings":"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"}
@@ -83,6 +83,7 @@ import '../../../apps/mobile/src/Core/RadioButton/index.js';
83
83
  import '../../../apps/mobile/src/Core/Input/index.js';
84
84
  import '../../../apps/mobile/src/Core/Input/Field.js';
85
85
  import '../../../apps/mobile/src/Core/Input/Slot.js';
86
+ import { useLanguage } from '../../../hooks/locale.js';
86
87
  import '../../../contexts/DialogContext.js';
87
88
  import useComponentDefaults from '../../../hooks/useComponentDefaults.js';
88
89
  import useResolvedStyle from '../../../hooks/useResolvedStyle.js';
@@ -109,6 +110,7 @@ const KitsListBox = (rawProps) => {
109
110
  } = props;
110
111
  const { list, labelKey, valueKey, childrenKey, onChange, selectedValue } = useSelectBase();
111
112
  const [filterText, setFilterText] = useState("");
113
+ const { t: translate, isRTL } = useLanguage();
112
114
  const t = resolveThemeTokenForNative;
113
115
  const primaryBg = t("highlight-bg") || t("primary.100") || "#E8EAF6";
114
116
  const primaryText = t("primary.700") || "#303F9F";
@@ -213,7 +215,7 @@ const KitsListBox = (rawProps) => {
213
215
  {
214
216
  value: filterText,
215
217
  onChangeText: setFilterText,
216
- placeholder: "Search...",
218
+ placeholder: translate("searchPlaceholder"),
217
219
  placeholderTextColor: placeholderColor,
218
220
  style: {
219
221
  borderBottomWidth: 1,
@@ -221,7 +223,9 @@ const KitsListBox = (rawProps) => {
221
223
  paddingHorizontal: 12,
222
224
  paddingVertical: 8,
223
225
  fontSize: 14,
224
- color: textColor
226
+ color: textColor,
227
+ textAlign: isRTL ? "right" : "left",
228
+ writingDirection: isRTL ? "rtl" : "ltr"
225
229
  }
226
230
  }
227
231
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/ListBox/index.native.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { ScrollView, Pressable, TextInput } from \"react-native\";\nimport { VStack, Box, Text } from '../../../_compat';\nimport type { IListBoxSelect } from \"@lmb-it/kitsconcerto-types\";\nimport { useSelectBase } from \"../hooks/useSelectBase\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { resolveThemeTokenForNative } from \"@lmb-it/kitsconcertomobile\";\nimport { useComponentDefaults, useResolvedStyle } from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsListBox = (rawProps: IListBoxSelect) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('ListBox', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n label,\n disabled,\n invalid,\n errors,\n helperText,\n inputSize = \"md\",\n isMultiple,\n withFilter,\n filterBy,\n hideError,\n } = props;\n\n const { list, labelKey, valueKey, childrenKey, onChange, selectedValue } = useSelectBase();\n\n const [filterText, setFilterText] = useState(\"\");\n\n const t = resolveThemeTokenForNative;\n const primaryBg = t('highlight-bg') || t('primary.100') || '#E8EAF6';\n const primaryText = t('primary.700') || '#303F9F';\n const borderClr = invalid ? (t('danger') || '#EF4444') : (t('border') || '#D1D5DB');\n const textColor = t('text') || '#1F2937';\n const placeholderColor = t('text-secondary') || '#9CA3AF';\n const groupBg = t('surface-ground') || '#F9FAFB';\n\n const isSelected = useCallback((val: any) => {\n if (isMultiple && Array.isArray(selectedValue)) {\n return selectedValue.includes(val);\n }\n return selectedValue === val;\n }, [isMultiple, selectedValue]);\n\n const onSelect = useCallback((val: any, item: any) => {\n if (isMultiple && Array.isArray(selectedValue)) {\n const newVals = selectedValue.includes(val)\n ? selectedValue.filter((v: any) => v !== val)\n : [...selectedValue, val];\n onChange({ target: { value: newVals } }, newVals);\n } else {\n onChange({ target: { value: val } }, item);\n }\n }, [isMultiple, selectedValue, onChange]);\n\n const filteredList = useMemo(() => {\n if (!withFilter || !filterText.trim()) return list;\n const query = filterText.toLowerCase();\n const searchKey = filterBy || labelKey;\n\n if (childrenKey) {\n return list.reduce((acc: any[], group: any) => {\n const children = group[childrenKey];\n if (Array.isArray(children)) {\n const matched = children.filter((item: any) =>\n String(item[searchKey] ?? \"\").toLowerCase().includes(query)\n );\n if (matched.length > 0) {\n acc.push({ ...group, [childrenKey]: matched });\n }\n }\n return acc;\n }, []);\n }\n\n return list.filter((item: any) =>\n String(item[searchKey] ?? \"\").toLowerCase().includes(query)\n );\n }, [list, filterText, withFilter, filterBy, labelKey, childrenKey]);\n\n const renderItem = (item: any, index: number) => {\n const val = item[valueKey];\n const selected = isSelected(val);\n return (\n <Pressable\n key={`${val}-${index}`}\n style={{\n padding: 10,\n backgroundColor: selected ? primaryBg : 'transparent',\n }}\n onPress={() => !disabled && onSelect(val, item)}\n >\n <Text\n color={selected ? primaryText : textColor}\n fontWeight={selected ? \"bold\" : \"normal\"}\n size={inputSize}\n >\n {item[labelKey]}\n </Text>\n </Pressable>\n );\n };\n\n const renderGroupedItems = () => {\n return filteredList.map((group: any, gi: number) => {\n const children = group[childrenKey!];\n if (!Array.isArray(children)) {\n return renderItem(group, gi);\n }\n return (\n <Box key={`group-${gi}`}>\n <Box style={{ backgroundColor: groupBg, paddingHorizontal: 12, paddingVertical: 8 }}>\n <Text fontWeight=\"600\" color={textColor} size={inputSize}>\n {group[labelKey]}\n </Text>\n </Box>\n {children.map((item: any, ci: number) => renderItem(item, ci))}\n </Box>\n );\n });\n };\n\n return (\n <KitsContainer\n id={id}\n label={label}\n invalid={!!invalid}\n hideError={hideError}\n helperText={helperText}\n errors={errors}\n elementStyles={elementStyles}\n >\n <Box\n borderWidth={1}\n borderColor={borderClr}\n borderRadius=\"$sm\"\n height={250}\n opacity={disabled ? 0.5 : 1}\n style={resolvedRootStyle && Object.keys(resolvedRootStyle).length ? resolvedRootStyle : (Object.keys(resolvedThemeStyle).length ? resolvedThemeStyle : undefined)}\n >\n {withFilter && (\n <TextInput\n value={filterText}\n onChangeText={setFilterText}\n placeholder=\"Search...\"\n placeholderTextColor={placeholderColor}\n style={{\n borderBottomWidth: 1,\n borderBottomColor: borderClr,\n paddingHorizontal: 12,\n paddingVertical: 8,\n fontSize: 14,\n color: textColor,\n }}\n />\n )}\n <ScrollView>\n <VStack>\n {childrenKey\n ? renderGroupedItems()\n : filteredList.map((item: any, i: number) => renderItem(item, i))\n }\n </VStack>\n </ScrollView>\n </Box>\n </KitsContainer>\n );\n};\n\nexport default KitsListBox;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/ListBox/index.native.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { ScrollView, Pressable, TextInput } from \"react-native\";\nimport { VStack, Box, Text } from '../../../_compat';\nimport type { IListBoxSelect } from \"@lmb-it/kitsconcerto-types\";\nimport { useSelectBase } from \"../hooks/useSelectBase\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport { resolveThemeTokenForNative } from \"@lmb-it/kitsconcertomobile\";\nimport { useComponentDefaults, useLanguage, useResolvedStyle } from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsListBox = (rawProps: IListBoxSelect) => {\n const { mergedProps: props, themeStyle, elementStyles } = useComponentDefaults('ListBox', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n label,\n disabled,\n invalid,\n errors,\n helperText,\n inputSize = \"md\",\n isMultiple,\n withFilter,\n filterBy,\n hideError,\n } = props;\n\n const { list, labelKey, valueKey, childrenKey, onChange, selectedValue } = useSelectBase();\n\n const [filterText, setFilterText] = useState(\"\");\n\n /* Same rule as the Dropdown's panel: the filter's copy and its edge come\n from the reader's language, not from the platform's layout direction. */\n const { t: translate, isRTL } = useLanguage();\n\n const t = resolveThemeTokenForNative;\n const primaryBg = t('highlight-bg') || t('primary.100') || '#E8EAF6';\n const primaryText = t('primary.700') || '#303F9F';\n const borderClr = invalid ? (t('danger') || '#EF4444') : (t('border') || '#D1D5DB');\n const textColor = t('text') || '#1F2937';\n const placeholderColor = t('text-secondary') || '#9CA3AF';\n const groupBg = t('surface-ground') || '#F9FAFB';\n\n const isSelected = useCallback((val: any) => {\n if (isMultiple && Array.isArray(selectedValue)) {\n return selectedValue.includes(val);\n }\n return selectedValue === val;\n }, [isMultiple, selectedValue]);\n\n const onSelect = useCallback((val: any, item: any) => {\n if (isMultiple && Array.isArray(selectedValue)) {\n const newVals = selectedValue.includes(val)\n ? selectedValue.filter((v: any) => v !== val)\n : [...selectedValue, val];\n onChange({ target: { value: newVals } }, newVals);\n } else {\n onChange({ target: { value: val } }, item);\n }\n }, [isMultiple, selectedValue, onChange]);\n\n const filteredList = useMemo(() => {\n if (!withFilter || !filterText.trim()) return list;\n const query = filterText.toLowerCase();\n const searchKey = filterBy || labelKey;\n\n if (childrenKey) {\n return list.reduce((acc: any[], group: any) => {\n const children = group[childrenKey];\n if (Array.isArray(children)) {\n const matched = children.filter((item: any) =>\n String(item[searchKey] ?? \"\").toLowerCase().includes(query)\n );\n if (matched.length > 0) {\n acc.push({ ...group, [childrenKey]: matched });\n }\n }\n return acc;\n }, []);\n }\n\n return list.filter((item: any) =>\n String(item[searchKey] ?? \"\").toLowerCase().includes(query)\n );\n }, [list, filterText, withFilter, filterBy, labelKey, childrenKey]);\n\n const renderItem = (item: any, index: number) => {\n const val = item[valueKey];\n const selected = isSelected(val);\n return (\n <Pressable\n key={`${val}-${index}`}\n style={{\n padding: 10,\n backgroundColor: selected ? primaryBg : 'transparent',\n }}\n onPress={() => !disabled && onSelect(val, item)}\n >\n <Text\n color={selected ? primaryText : textColor}\n fontWeight={selected ? \"bold\" : \"normal\"}\n size={inputSize}\n >\n {item[labelKey]}\n </Text>\n </Pressable>\n );\n };\n\n const renderGroupedItems = () => {\n return filteredList.map((group: any, gi: number) => {\n const children = group[childrenKey!];\n if (!Array.isArray(children)) {\n return renderItem(group, gi);\n }\n return (\n <Box key={`group-${gi}`}>\n <Box style={{ backgroundColor: groupBg, paddingHorizontal: 12, paddingVertical: 8 }}>\n <Text fontWeight=\"600\" color={textColor} size={inputSize}>\n {group[labelKey]}\n </Text>\n </Box>\n {children.map((item: any, ci: number) => renderItem(item, ci))}\n </Box>\n );\n });\n };\n\n return (\n <KitsContainer\n id={id}\n label={label}\n invalid={!!invalid}\n hideError={hideError}\n helperText={helperText}\n errors={errors}\n elementStyles={elementStyles}\n >\n <Box\n borderWidth={1}\n borderColor={borderClr}\n borderRadius=\"$sm\"\n height={250}\n opacity={disabled ? 0.5 : 1}\n style={resolvedRootStyle && Object.keys(resolvedRootStyle).length ? resolvedRootStyle : (Object.keys(resolvedThemeStyle).length ? resolvedThemeStyle : undefined)}\n >\n {withFilter && (\n <TextInput\n value={filterText}\n onChangeText={setFilterText}\n placeholder={translate('searchPlaceholder')}\n placeholderTextColor={placeholderColor}\n style={{\n borderBottomWidth: 1,\n borderBottomColor: borderClr,\n paddingHorizontal: 12,\n paddingVertical: 8,\n fontSize: 14,\n color: textColor,\n textAlign: isRTL ? 'right' : 'left',\n writingDirection: isRTL ? 'rtl' : 'ltr',\n }}\n />\n )}\n <ScrollView>\n <VStack>\n {childrenKey\n ? renderGroupedItems()\n : filteredList.map((item: any, i: number) => renderItem(item, i))\n }\n </VStack>\n </ScrollView>\n </Box>\n </KitsContainer>\n );\n};\n\nexport default KitsListBox;\n"],"names":[],"mappings":"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"}
@@ -88,6 +88,7 @@ var index_native = require('../../helpers/FormContainer/index.cjs');
88
88
  var Functions = require('../../helpers/Functions.cjs');
89
89
  var helper = require('../helper.cjs');
90
90
  var useSelectBase = require('../hooks/useSelectBase.cjs');
91
+ var locale = require('../../../hooks/locale.cjs');
91
92
  require('../../../contexts/DialogContext.cjs');
92
93
  var useComponentDefaults = require('../../../hooks/useComponentDefaults.cjs');
93
94
  var useResolvedStyle = require('../../../hooks/useResolvedStyle.cjs');
@@ -120,6 +121,7 @@ const KitsMultiSelect = ({ className, ref, ...rawProps }) => {
120
121
  valueMode
121
122
  } = props;
122
123
  const { list, keys, onChange, selectedValue, childrenKey, labelKey, valueKey } = useSelectBase.useSelectBase();
124
+ const { t, isRTL } = locale.useLanguage();
123
125
  React.useEffect(() => {
124
126
  helper.checkKeys(list, labelKey, !childrenKey ? valueKey : void 0);
125
127
  }, [list]);
@@ -138,7 +140,9 @@ const KitsMultiSelect = ({ className, ref, ...rawProps }) => {
138
140
  const Element = /* @__PURE__ */ jsxRuntime.jsx(
139
141
  index.default,
140
142
  {
141
- emptyFilterMessage,
143
+ emptyFilterMessage: emptyFilterMessage ?? t("emptyFilterMessage"),
144
+ filterPlaceholder: t("searchPlaceholder"),
145
+ isRTL,
142
146
  value: selectedValue,
143
147
  onChange: handleChange,
144
148
  disabled,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/MultiSelect/index.native.tsx"],"sourcesContent":["import React, {useCallback, useEffect} from \"react\";\nimport {MultiSelect} from \"@lmb-it/kitsconcertomobile\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport type {IMultiSelect} from \"@lmb-it/kitsconcerto-types\";\nimport {ClHelper} from \"../../helpers/Functions\";\nimport {checkKeys} from \"../helper\";\nimport {useSelectBase} from \"../hooks/useSelectBase\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsMultiSelect = ({ className, ref, ...rawProps }: IMultiSelect) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('MultiSelect', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n disabled,\n isFloatedLabel,\n rightAddon,\n leftAddon,\n required,\n errors,\n invalid,\n placeholder,\n virtualScroll,\n label,\n inputSize,\n helperText,\n emptyFilterMessage,\n selectionLimit,\n localProps,\n hideError,\n withFilter,\n loading,\n showClear,\n valueMode,\n } = props;\n\n const { list, keys, onChange, selectedValue, childrenKey, labelKey, valueKey } = useSelectBase();\n\n useEffect(() => {\n checkKeys(list, labelKey, !childrenKey ? valueKey : undefined);\n }, [list]);\n\n const ClState = ClHelper({\n inputSize: inputSize ?? \"\",\n isChecked: false,\n isInvalid: !!invalid,\n isDisabled: !!disabled,\n });\n\n const handleChange = useCallback((e: any, items: any) => {\n if (selectionLimit && Array.isArray(e?.target?.value) && e.target.value.length > selectionLimit) {\n return;\n }\n onChange && onChange(e, items);\n }, [selectionLimit, onChange]);\n\n const Element = <MultiSelect\n emptyFilterMessage={emptyFilterMessage}\n value={selectedValue}\n onChange={handleChange}\n disabled={disabled}\n loading={loading}\n showClear={showClear}\n options={typeof list !== \"function\" ? list : []}\n placeholder={placeholder}\n {...keys}\n filter={withFilter !== false}\n selectionLimit={selectionLimit}\n display={valueMode === \"comma\" ? \"comma\" : (localProps?.maxSelectedLabels ? undefined : \"chip\")}\n maxSelectedLabels={selectionLimit ?? localProps?.maxSelectedLabels ?? 10}\n className={`w-full ${ClState}`}\n style={{ borderRadius: 0, ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle) }}\n {...(localProps ? localProps : {})}\n />\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n hideError={hideError}\n errors={errors}\n helperText={helperText}\n invalid={invalid}\n label={label}\n elementStyles={elementStyles}\n >\n {Element}\n </KitsContainer>\n );\n}\n\nKitsMultiSelect.displayName = \"MultiSelect\";\nexport default KitsMultiSelect;\n"],"names":["useComponentDefaults","useResolvedStyle","useSelectBase","useEffect","checkKeys","ClHelper","useCallback","jsx","MultiSelect","KitsContainer"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/form/selects/MultiSelect/index.native.tsx"],"sourcesContent":["import React, {useCallback, useEffect} from \"react\";\nimport {MultiSelect} from \"@lmb-it/kitsconcertomobile\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport type {IMultiSelect} from \"@lmb-it/kitsconcerto-types\";\nimport {ClHelper} from \"../../helpers/Functions\";\nimport {checkKeys} from \"../helper\";\nimport {useSelectBase} from \"../hooks/useSelectBase\";\nimport {useComponentDefaults, useLanguage, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsMultiSelect = ({ className, ref, ...rawProps }: IMultiSelect) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('MultiSelect', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n disabled,\n isFloatedLabel,\n rightAddon,\n leftAddon,\n required,\n errors,\n invalid,\n placeholder,\n virtualScroll,\n label,\n inputSize,\n helperText,\n emptyFilterMessage,\n selectionLimit,\n localProps,\n hideError,\n withFilter,\n loading,\n showClear,\n valueMode,\n } = props;\n\n const { list, keys, onChange, selectedValue, childrenKey, labelKey, valueKey } = useSelectBase();\n\n /* Same rule as the Dropdown's panel — see that file. The sentence and the\n edge are resolved here, where LocaleContext is, and passed down. */\n const { t, isRTL } = useLanguage();\n\n useEffect(() => {\n checkKeys(list, labelKey, !childrenKey ? valueKey : undefined);\n }, [list]);\n\n const ClState = ClHelper({\n inputSize: inputSize ?? \"\",\n isChecked: false,\n isInvalid: !!invalid,\n isDisabled: !!disabled,\n });\n\n const handleChange = useCallback((e: any, items: any) => {\n if (selectionLimit && Array.isArray(e?.target?.value) && e.target.value.length > selectionLimit) {\n return;\n }\n onChange && onChange(e, items);\n }, [selectionLimit, onChange]);\n\n const Element = <MultiSelect\n emptyFilterMessage={emptyFilterMessage ?? t('emptyFilterMessage')}\n filterPlaceholder={t('searchPlaceholder')}\n isRTL={isRTL}\n value={selectedValue}\n onChange={handleChange}\n disabled={disabled}\n loading={loading}\n showClear={showClear}\n options={typeof list !== \"function\" ? list : []}\n placeholder={placeholder}\n {...keys}\n filter={withFilter !== false}\n selectionLimit={selectionLimit}\n display={valueMode === \"comma\" ? \"comma\" : (localProps?.maxSelectedLabels ? undefined : \"chip\")}\n maxSelectedLabels={selectionLimit ?? localProps?.maxSelectedLabels ?? 10}\n className={`w-full ${ClState}`}\n style={{ borderRadius: 0, ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle) }}\n {...(localProps ? localProps : {})}\n />\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n hideError={hideError}\n errors={errors}\n helperText={helperText}\n invalid={invalid}\n label={label}\n elementStyles={elementStyles}\n >\n {Element}\n </KitsContainer>\n );\n}\n\nKitsMultiSelect.displayName = \"MultiSelect\";\nexport default KitsMultiSelect;\n"],"names":["useComponentDefaults","useResolvedStyle","useSelectBase","useLanguage","useEffect","checkKeys","ClHelper","useCallback","jsx","MultiSelect","KitsContainer"],"mappings":"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"}
@@ -84,6 +84,7 @@ import KitsContainer from '../../helpers/FormContainer/index.js';
84
84
  import { ClHelper } from '../../helpers/Functions.js';
85
85
  import { checkKeys } from '../helper.js';
86
86
  import { useSelectBase } from '../hooks/useSelectBase.js';
87
+ import { useLanguage } from '../../../hooks/locale.js';
87
88
  import '../../../contexts/DialogContext.js';
88
89
  import useComponentDefaults from '../../../hooks/useComponentDefaults.js';
89
90
  import useResolvedStyle from '../../../hooks/useResolvedStyle.js';
@@ -116,6 +117,7 @@ const KitsMultiSelect = ({ className, ref, ...rawProps }) => {
116
117
  valueMode
117
118
  } = props;
118
119
  const { list, keys, onChange, selectedValue, childrenKey, labelKey, valueKey } = useSelectBase();
120
+ const { t, isRTL } = useLanguage();
119
121
  useEffect(() => {
120
122
  checkKeys(list, labelKey, !childrenKey ? valueKey : void 0);
121
123
  }, [list]);
@@ -134,7 +136,9 @@ const KitsMultiSelect = ({ className, ref, ...rawProps }) => {
134
136
  const Element = /* @__PURE__ */ jsx(
135
137
  MultiSelect,
136
138
  {
137
- emptyFilterMessage,
139
+ emptyFilterMessage: emptyFilterMessage ?? t("emptyFilterMessage"),
140
+ filterPlaceholder: t("searchPlaceholder"),
141
+ isRTL,
138
142
  value: selectedValue,
139
143
  onChange: handleChange,
140
144
  disabled,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/MultiSelect/index.native.tsx"],"sourcesContent":["import React, {useCallback, useEffect} from \"react\";\nimport {MultiSelect} from \"@lmb-it/kitsconcertomobile\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport type {IMultiSelect} from \"@lmb-it/kitsconcerto-types\";\nimport {ClHelper} from \"../../helpers/Functions\";\nimport {checkKeys} from \"../helper\";\nimport {useSelectBase} from \"../hooks/useSelectBase\";\nimport {useComponentDefaults, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsMultiSelect = ({ className, ref, ...rawProps }: IMultiSelect) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('MultiSelect', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n disabled,\n isFloatedLabel,\n rightAddon,\n leftAddon,\n required,\n errors,\n invalid,\n placeholder,\n virtualScroll,\n label,\n inputSize,\n helperText,\n emptyFilterMessage,\n selectionLimit,\n localProps,\n hideError,\n withFilter,\n loading,\n showClear,\n valueMode,\n } = props;\n\n const { list, keys, onChange, selectedValue, childrenKey, labelKey, valueKey } = useSelectBase();\n\n useEffect(() => {\n checkKeys(list, labelKey, !childrenKey ? valueKey : undefined);\n }, [list]);\n\n const ClState = ClHelper({\n inputSize: inputSize ?? \"\",\n isChecked: false,\n isInvalid: !!invalid,\n isDisabled: !!disabled,\n });\n\n const handleChange = useCallback((e: any, items: any) => {\n if (selectionLimit && Array.isArray(e?.target?.value) && e.target.value.length > selectionLimit) {\n return;\n }\n onChange && onChange(e, items);\n }, [selectionLimit, onChange]);\n\n const Element = <MultiSelect\n emptyFilterMessage={emptyFilterMessage}\n value={selectedValue}\n onChange={handleChange}\n disabled={disabled}\n loading={loading}\n showClear={showClear}\n options={typeof list !== \"function\" ? list : []}\n placeholder={placeholder}\n {...keys}\n filter={withFilter !== false}\n selectionLimit={selectionLimit}\n display={valueMode === \"comma\" ? \"comma\" : (localProps?.maxSelectedLabels ? undefined : \"chip\")}\n maxSelectedLabels={selectionLimit ?? localProps?.maxSelectedLabels ?? 10}\n className={`w-full ${ClState}`}\n style={{ borderRadius: 0, ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle) }}\n {...(localProps ? localProps : {})}\n />\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n hideError={hideError}\n errors={errors}\n helperText={helperText}\n invalid={invalid}\n label={label}\n elementStyles={elementStyles}\n >\n {Element}\n </KitsContainer>\n );\n}\n\nKitsMultiSelect.displayName = \"MultiSelect\";\nexport default KitsMultiSelect;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/form/selects/MultiSelect/index.native.tsx"],"sourcesContent":["import React, {useCallback, useEffect} from \"react\";\nimport {MultiSelect} from \"@lmb-it/kitsconcertomobile\";\nimport KitsContainer from \"../../helpers/FormContainer\";\nimport type {IMultiSelect} from \"@lmb-it/kitsconcerto-types\";\nimport {ClHelper} from \"../../helpers/Functions\";\nimport {checkKeys} from \"../helper\";\nimport {useSelectBase} from \"../hooks/useSelectBase\";\nimport {useComponentDefaults, useLanguage, useResolvedStyle} from \"@lmb-it/kitsconcerto/hooks\";\n\nconst KitsMultiSelect = ({ className, ref, ...rawProps }: IMultiSelect) => {\n const {mergedProps: props, themeStyle, elementStyles} = useComponentDefaults('MultiSelect', rawProps, 'Select');\n const resolvedThemeStyle = useResolvedStyle(themeStyle);\n const resolvedRootStyle = useResolvedStyle(elementStyles?.root || {});\n const {\n id,\n disabled,\n isFloatedLabel,\n rightAddon,\n leftAddon,\n required,\n errors,\n invalid,\n placeholder,\n virtualScroll,\n label,\n inputSize,\n helperText,\n emptyFilterMessage,\n selectionLimit,\n localProps,\n hideError,\n withFilter,\n loading,\n showClear,\n valueMode,\n } = props;\n\n const { list, keys, onChange, selectedValue, childrenKey, labelKey, valueKey } = useSelectBase();\n\n /* Same rule as the Dropdown's panel — see that file. The sentence and the\n edge are resolved here, where LocaleContext is, and passed down. */\n const { t, isRTL } = useLanguage();\n\n useEffect(() => {\n checkKeys(list, labelKey, !childrenKey ? valueKey : undefined);\n }, [list]);\n\n const ClState = ClHelper({\n inputSize: inputSize ?? \"\",\n isChecked: false,\n isInvalid: !!invalid,\n isDisabled: !!disabled,\n });\n\n const handleChange = useCallback((e: any, items: any) => {\n if (selectionLimit && Array.isArray(e?.target?.value) && e.target.value.length > selectionLimit) {\n return;\n }\n onChange && onChange(e, items);\n }, [selectionLimit, onChange]);\n\n const Element = <MultiSelect\n emptyFilterMessage={emptyFilterMessage ?? t('emptyFilterMessage')}\n filterPlaceholder={t('searchPlaceholder')}\n isRTL={isRTL}\n value={selectedValue}\n onChange={handleChange}\n disabled={disabled}\n loading={loading}\n showClear={showClear}\n options={typeof list !== \"function\" ? list : []}\n placeholder={placeholder}\n {...keys}\n filter={withFilter !== false}\n selectionLimit={selectionLimit}\n display={valueMode === \"comma\" ? \"comma\" : (localProps?.maxSelectedLabels ? undefined : \"chip\")}\n maxSelectedLabels={selectionLimit ?? localProps?.maxSelectedLabels ?? 10}\n className={`w-full ${ClState}`}\n style={{ borderRadius: 0, ...(resolvedRootStyle && Object.keys(resolvedRootStyle).length > 0 ? resolvedRootStyle : resolvedThemeStyle) }}\n {...(localProps ? localProps : {})}\n />\n\n return (\n <KitsContainer\n id={id}\n inputSize={inputSize}\n isFloatedLabel={isFloatedLabel}\n rightAddon={rightAddon}\n leftAddon={leftAddon}\n required={required}\n hideError={hideError}\n errors={errors}\n helperText={helperText}\n invalid={invalid}\n label={label}\n elementStyles={elementStyles}\n >\n {Element}\n </KitsContainer>\n );\n}\n\nKitsMultiSelect.displayName = \"MultiSelect\";\nexport default KitsMultiSelect;\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -9477,6 +9477,7 @@ declare const localeFiles: {
9477
9477
  strong: string;
9478
9478
  passwordPrompt: string;
9479
9479
  emptyFilterMessage: string;
9480
+ searchPlaceholder: string;
9480
9481
  searchMessage: string;
9481
9482
  selectionMessage: string;
9482
9483
  emptySelectionMessage: string;
@@ -10251,6 +10252,7 @@ declare const localeFiles: {
10251
10252
  strong: string;
10252
10253
  passwordPrompt: string;
10253
10254
  emptyFilterMessage: string;
10255
+ searchPlaceholder: string;
10254
10256
  searchMessage: string;
10255
10257
  selectionMessage: string;
10256
10258
  emptySelectionMessage: string;
@@ -126,6 +126,7 @@ var medium = "متوسط";
126
126
  var strong = "قوي";
127
127
  var passwordPrompt = "أدخل كلمة السر";
128
128
  var emptyFilterMessage = "لا يوجد خيارات";
129
+ var searchPlaceholder = "بحث...";
129
130
  var searchMessage = "{0} النتائج المتاحة";
130
131
  var selectionMessage = "{0} عناصر تم اختيارها";
131
132
  var emptySelectionMessage = "لم يتم اختيار اي عنصر";
@@ -283,6 +284,7 @@ var ar = {
283
284
  strong: strong,
284
285
  passwordPrompt: passwordPrompt,
285
286
  emptyFilterMessage: emptyFilterMessage,
287
+ searchPlaceholder: searchPlaceholder,
286
288
  searchMessage: searchMessage,
287
289
  selectionMessage: selectionMessage,
288
290
  emptySelectionMessage: emptySelectionMessage,
@@ -423,6 +425,7 @@ exports.remove = remove;
423
425
  exports.removeRule = removeRule;
424
426
  exports.save = save;
425
427
  exports.searchMessage = searchMessage;
428
+ exports.searchPlaceholder = searchPlaceholder;
426
429
  exports.selectionMessage = selectionMessage;
427
430
  exports.settings = settings;
428
431
  exports.showMonthAfterYear = showMonthAfterYear;
@@ -1 +1 @@
1
- {"version":3,"file":"ar.json.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ar.json.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/locale/ar.json.js CHANGED
@@ -122,6 +122,7 @@ var medium = "متوسط";
122
122
  var strong = "قوي";
123
123
  var passwordPrompt = "أدخل كلمة السر";
124
124
  var emptyFilterMessage = "لا يوجد خيارات";
125
+ var searchPlaceholder = "بحث...";
125
126
  var searchMessage = "{0} النتائج المتاحة";
126
127
  var selectionMessage = "{0} عناصر تم اختيارها";
127
128
  var emptySelectionMessage = "لم يتم اختيار اي عنصر";
@@ -279,6 +280,7 @@ var ar = {
279
280
  strong: strong,
280
281
  passwordPrompt: passwordPrompt,
281
282
  emptyFilterMessage: emptyFilterMessage,
283
+ searchPlaceholder: searchPlaceholder,
282
284
  searchMessage: searchMessage,
283
285
  selectionMessage: selectionMessage,
284
286
  emptySelectionMessage: emptySelectionMessage,
@@ -324,5 +326,5 @@ var ar = {
324
326
  actionRequired: actionRequired
325
327
  };
326
328
 
327
- export { accept, actionRequired, addCategory, addImages, addItem, addRule, after, am, any, apply, aria, before, between, cancel, changeImage, choose, chooseDate, chooseFile, chooseImage, chooseMonth, chooseYear, clear, clickOrDragToUpload, completed, contains, custom, dateAfter, dateBefore, dateFormat, dateIs, dateIsNot, dayNames, dayNamesMin, dayNamesShort, ar as default, _arbitrary0 as delete, dragFilesHere, edit, emptyFileUploadMessage, emptyFilterMessage, emptyMessage, emptySearchMessage, emptySelectionMessage, endsWith, equal, equals, fileSizeTypes, filesBeingDropped, filesSelected, filter, firstDayOfWeek, generatePhoto, greaterThan, greaterThanOrEqualTo, gt, gte, include, lessThan, lessThanOrEqualTo, lt, lte, matchAll, matchAny, maximumAllowedFiles, medium, monthNames, monthNamesShort, nextDecade, nextHour, nextMinute, nextMonth, nextSecond, nextYear, noFilter, not, notContains, notEquals, now, openMenu, password, passwordPrompt, pending, pm, prevDecade, prevHour, prevMinute, prevMonth, prevSecond, prevYear, profile, reject, remove, removeRule, save, searchMessage, selectionMessage, settings, showMonthAfterYear, signOut, startsWith, strong, tapToUpload, today, toggleColorMode, typeNotSupported, upload, weak, weekHeader };
329
+ export { accept, actionRequired, addCategory, addImages, addItem, addRule, after, am, any, apply, aria, before, between, cancel, changeImage, choose, chooseDate, chooseFile, chooseImage, chooseMonth, chooseYear, clear, clickOrDragToUpload, completed, contains, custom, dateAfter, dateBefore, dateFormat, dateIs, dateIsNot, dayNames, dayNamesMin, dayNamesShort, ar as default, _arbitrary0 as delete, dragFilesHere, edit, emptyFileUploadMessage, emptyFilterMessage, emptyMessage, emptySearchMessage, emptySelectionMessage, endsWith, equal, equals, fileSizeTypes, filesBeingDropped, filesSelected, filter, firstDayOfWeek, generatePhoto, greaterThan, greaterThanOrEqualTo, gt, gte, include, lessThan, lessThanOrEqualTo, lt, lte, matchAll, matchAny, maximumAllowedFiles, medium, monthNames, monthNamesShort, nextDecade, nextHour, nextMinute, nextMonth, nextSecond, nextYear, noFilter, not, notContains, notEquals, now, openMenu, password, passwordPrompt, pending, pm, prevDecade, prevHour, prevMinute, prevMonth, prevSecond, prevYear, profile, reject, remove, removeRule, save, searchMessage, searchPlaceholder, selectionMessage, settings, showMonthAfterYear, signOut, startsWith, strong, tapToUpload, today, toggleColorMode, typeNotSupported, upload, weak, weekHeader };
328
330
  //# sourceMappingURL=ar.json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ar.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ar.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}