@vritti/quantum-ui 0.3.25 → 0.3.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Chart.js +28 -9
- package/dist/Chart.js.map +1 -1
- package/dist/ISOCountrySelect.js.map +1 -1
- package/dist/Select.js +1 -1
- package/dist/Select.js.map +1 -1
- package/dist/SingleSelect.js +2 -2
- package/dist/SingleSelect.js.map +1 -1
- package/dist/assets/quantum-ui.css +8 -2
- package/dist/field.js +2 -2
- package/dist/field.js.map +1 -1
- package/dist/lib/components/index.d.ts +2 -2
- package/dist/lib/components/index.d.ts.map +1 -1
- package/dist/lib/selects/index.d.ts +1 -1
- package/dist/lib/selects/index.d.ts.map +1 -1
- package/dist/shadcn/shadcnChart/Chart.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/lib/components/Editor/utils/is-mobile-width.d.ts +0 -2
- package/dist/lib/components/Editor/utils/is-mobile-width.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ISOCountrySelect.js","sources":["../lib/selects/iso-country/iso-countries.ts","../lib/selects/iso-country/ISOCountrySelect.tsx"],"sourcesContent":["// Static ISO 3166-1 alpha-2 country list, baked into the frontend (no backend endpoint).\n\nexport interface ISOCountry {\n code: string;\n name: string;\n}\n\n// Full ISO 3166-1 alpha-2 list (249 entries).\nexport const ISO_COUNTRIES: ISOCountry[] = [\n { code: 'AF', name: 'Afghanistan' },\n { code: 'AX', name: 'Åland Islands' },\n { code: 'AL', name: 'Albania' },\n { code: 'DZ', name: 'Algeria' },\n { code: 'AS', name: 'American Samoa' },\n { code: 'AD', name: 'Andorra' },\n { code: 'AO', name: 'Angola' },\n { code: 'AI', name: 'Anguilla' },\n { code: 'AQ', name: 'Antarctica' },\n { code: 'AG', name: 'Antigua and Barbuda' },\n { code: 'AR', name: 'Argentina' },\n { code: 'AM', name: 'Armenia' },\n { code: 'AW', name: 'Aruba' },\n { code: 'AU', name: 'Australia' },\n { code: 'AT', name: 'Austria' },\n { code: 'AZ', name: 'Azerbaijan' },\n { code: 'BS', name: 'Bahamas' },\n { code: 'BH', name: 'Bahrain' },\n { code: 'BD', name: 'Bangladesh' },\n { code: 'BB', name: 'Barbados' },\n { code: 'BY', name: 'Belarus' },\n { code: 'BE', name: 'Belgium' },\n { code: 'BZ', name: 'Belize' },\n { code: 'BJ', name: 'Benin' },\n { code: 'BM', name: 'Bermuda' },\n { code: 'BT', name: 'Bhutan' },\n { code: 'BO', name: 'Bolivia' },\n { code: 'BQ', name: 'Bonaire, Sint Eustatius and Saba' },\n { code: 'BA', name: 'Bosnia and Herzegovina' },\n { code: 'BW', name: 'Botswana' },\n { code: 'BV', name: 'Bouvet Island' },\n { code: 'BR', name: 'Brazil' },\n { code: 'IO', name: 'British Indian Ocean Territory' },\n { code: 'BN', name: 'Brunei Darussalam' },\n { code: 'BG', name: 'Bulgaria' },\n { code: 'BF', name: 'Burkina Faso' },\n { code: 'BI', name: 'Burundi' },\n { code: 'CV', name: 'Cabo Verde' },\n { code: 'KH', name: 'Cambodia' },\n { code: 'CM', name: 'Cameroon' },\n { code: 'CA', name: 'Canada' },\n { code: 'KY', name: 'Cayman Islands' },\n { code: 'CF', name: 'Central African Republic' },\n { code: 'TD', name: 'Chad' },\n { code: 'CL', name: 'Chile' },\n { code: 'CN', name: 'China' },\n { code: 'CX', name: 'Christmas Island' },\n { code: 'CC', name: 'Cocos (Keeling) Islands' },\n { code: 'CO', name: 'Colombia' },\n { code: 'KM', name: 'Comoros' },\n { code: 'CG', name: 'Congo' },\n { code: 'CD', name: 'Congo, Democratic Republic of the' },\n { code: 'CK', name: 'Cook Islands' },\n { code: 'CR', name: 'Costa Rica' },\n { code: 'CI', name: \"Côte d'Ivoire\" },\n { code: 'HR', name: 'Croatia' },\n { code: 'CU', name: 'Cuba' },\n { code: 'CW', name: 'Curaçao' },\n { code: 'CY', name: 'Cyprus' },\n { code: 'CZ', name: 'Czechia' },\n { code: 'DK', name: 'Denmark' },\n { code: 'DJ', name: 'Djibouti' },\n { code: 'DM', name: 'Dominica' },\n { code: 'DO', name: 'Dominican Republic' },\n { code: 'EC', name: 'Ecuador' },\n { code: 'EG', name: 'Egypt' },\n { code: 'SV', name: 'El Salvador' },\n { code: 'GQ', name: 'Equatorial Guinea' },\n { code: 'ER', name: 'Eritrea' },\n { code: 'EE', name: 'Estonia' },\n { code: 'SZ', name: 'Eswatini' },\n { code: 'ET', name: 'Ethiopia' },\n { code: 'FK', name: 'Falkland Islands (Malvinas)' },\n { code: 'FO', name: 'Faroe Islands' },\n { code: 'FJ', name: 'Fiji' },\n { code: 'FI', name: 'Finland' },\n { code: 'FR', name: 'France' },\n { code: 'GF', name: 'French Guiana' },\n { code: 'PF', name: 'French Polynesia' },\n { code: 'TF', name: 'French Southern Territories' },\n { code: 'GA', name: 'Gabon' },\n { code: 'GM', name: 'Gambia' },\n { code: 'GE', name: 'Georgia' },\n { code: 'DE', name: 'Germany' },\n { code: 'GH', name: 'Ghana' },\n { code: 'GI', name: 'Gibraltar' },\n { code: 'GR', name: 'Greece' },\n { code: 'GL', name: 'Greenland' },\n { code: 'GD', name: 'Grenada' },\n { code: 'GP', name: 'Guadeloupe' },\n { code: 'GU', name: 'Guam' },\n { code: 'GT', name: 'Guatemala' },\n { code: 'GG', name: 'Guernsey' },\n { code: 'GN', name: 'Guinea' },\n { code: 'GW', name: 'Guinea-Bissau' },\n { code: 'GY', name: 'Guyana' },\n { code: 'HT', name: 'Haiti' },\n { code: 'HM', name: 'Heard Island and McDonald Islands' },\n { code: 'VA', name: 'Holy See' },\n { code: 'HN', name: 'Honduras' },\n { code: 'HK', name: 'Hong Kong' },\n { code: 'HU', name: 'Hungary' },\n { code: 'IS', name: 'Iceland' },\n { code: 'IN', name: 'India' },\n { code: 'ID', name: 'Indonesia' },\n { code: 'IR', name: 'Iran' },\n { code: 'IQ', name: 'Iraq' },\n { code: 'IE', name: 'Ireland' },\n { code: 'IM', name: 'Isle of Man' },\n { code: 'IL', name: 'Israel' },\n { code: 'IT', name: 'Italy' },\n { code: 'JM', name: 'Jamaica' },\n { code: 'JP', name: 'Japan' },\n { code: 'JE', name: 'Jersey' },\n { code: 'JO', name: 'Jordan' },\n { code: 'KZ', name: 'Kazakhstan' },\n { code: 'KE', name: 'Kenya' },\n { code: 'KI', name: 'Kiribati' },\n { code: 'KP', name: \"Korea, Democratic People's Republic of\" },\n { code: 'KR', name: 'Korea, Republic of' },\n { code: 'KW', name: 'Kuwait' },\n { code: 'KG', name: 'Kyrgyzstan' },\n { code: 'LA', name: \"Lao People's Democratic Republic\" },\n { code: 'LV', name: 'Latvia' },\n { code: 'LB', name: 'Lebanon' },\n { code: 'LS', name: 'Lesotho' },\n { code: 'LR', name: 'Liberia' },\n { code: 'LY', name: 'Libya' },\n { code: 'LI', name: 'Liechtenstein' },\n { code: 'LT', name: 'Lithuania' },\n { code: 'LU', name: 'Luxembourg' },\n { code: 'MO', name: 'Macao' },\n { code: 'MG', name: 'Madagascar' },\n { code: 'MW', name: 'Malawi' },\n { code: 'MY', name: 'Malaysia' },\n { code: 'MV', name: 'Maldives' },\n { code: 'ML', name: 'Mali' },\n { code: 'MT', name: 'Malta' },\n { code: 'MH', name: 'Marshall Islands' },\n { code: 'MQ', name: 'Martinique' },\n { code: 'MR', name: 'Mauritania' },\n { code: 'MU', name: 'Mauritius' },\n { code: 'YT', name: 'Mayotte' },\n { code: 'MX', name: 'Mexico' },\n { code: 'FM', name: 'Micronesia' },\n { code: 'MD', name: 'Moldova' },\n { code: 'MC', name: 'Monaco' },\n { code: 'MN', name: 'Mongolia' },\n { code: 'ME', name: 'Montenegro' },\n { code: 'MS', name: 'Montserrat' },\n { code: 'MA', name: 'Morocco' },\n { code: 'MZ', name: 'Mozambique' },\n { code: 'MM', name: 'Myanmar' },\n { code: 'NA', name: 'Namibia' },\n { code: 'NR', name: 'Nauru' },\n { code: 'NP', name: 'Nepal' },\n { code: 'NL', name: 'Netherlands' },\n { code: 'NC', name: 'New Caledonia' },\n { code: 'NZ', name: 'New Zealand' },\n { code: 'NI', name: 'Nicaragua' },\n { code: 'NE', name: 'Niger' },\n { code: 'NG', name: 'Nigeria' },\n { code: 'NU', name: 'Niue' },\n { code: 'NF', name: 'Norfolk Island' },\n { code: 'MK', name: 'North Macedonia' },\n { code: 'MP', name: 'Northern Mariana Islands' },\n { code: 'NO', name: 'Norway' },\n { code: 'OM', name: 'Oman' },\n { code: 'PK', name: 'Pakistan' },\n { code: 'PW', name: 'Palau' },\n { code: 'PS', name: 'Palestine, State of' },\n { code: 'PA', name: 'Panama' },\n { code: 'PG', name: 'Papua New Guinea' },\n { code: 'PY', name: 'Paraguay' },\n { code: 'PE', name: 'Peru' },\n { code: 'PH', name: 'Philippines' },\n { code: 'PN', name: 'Pitcairn' },\n { code: 'PL', name: 'Poland' },\n { code: 'PT', name: 'Portugal' },\n { code: 'PR', name: 'Puerto Rico' },\n { code: 'QA', name: 'Qatar' },\n { code: 'RE', name: 'Réunion' },\n { code: 'RO', name: 'Romania' },\n { code: 'RU', name: 'Russian Federation' },\n { code: 'RW', name: 'Rwanda' },\n { code: 'BL', name: 'Saint Barthélemy' },\n { code: 'SH', name: 'Saint Helena, Ascension and Tristan da Cunha' },\n { code: 'KN', name: 'Saint Kitts and Nevis' },\n { code: 'LC', name: 'Saint Lucia' },\n { code: 'MF', name: 'Saint Martin (French part)' },\n { code: 'PM', name: 'Saint Pierre and Miquelon' },\n { code: 'VC', name: 'Saint Vincent and the Grenadines' },\n { code: 'WS', name: 'Samoa' },\n { code: 'SM', name: 'San Marino' },\n { code: 'ST', name: 'Sao Tome and Principe' },\n { code: 'SA', name: 'Saudi Arabia' },\n { code: 'SN', name: 'Senegal' },\n { code: 'RS', name: 'Serbia' },\n { code: 'SC', name: 'Seychelles' },\n { code: 'SL', name: 'Sierra Leone' },\n { code: 'SG', name: 'Singapore' },\n { code: 'SX', name: 'Sint Maarten (Dutch part)' },\n { code: 'SK', name: 'Slovakia' },\n { code: 'SI', name: 'Slovenia' },\n { code: 'SB', name: 'Solomon Islands' },\n { code: 'SO', name: 'Somalia' },\n { code: 'ZA', name: 'South Africa' },\n { code: 'GS', name: 'South Georgia and the South Sandwich Islands' },\n { code: 'SS', name: 'South Sudan' },\n { code: 'ES', name: 'Spain' },\n { code: 'LK', name: 'Sri Lanka' },\n { code: 'SD', name: 'Sudan' },\n { code: 'SR', name: 'Suriname' },\n { code: 'SJ', name: 'Svalbard and Jan Mayen' },\n { code: 'SE', name: 'Sweden' },\n { code: 'CH', name: 'Switzerland' },\n { code: 'SY', name: 'Syrian Arab Republic' },\n { code: 'TW', name: 'Taiwan' },\n { code: 'TJ', name: 'Tajikistan' },\n { code: 'TZ', name: 'Tanzania' },\n { code: 'TH', name: 'Thailand' },\n { code: 'TL', name: 'Timor-Leste' },\n { code: 'TG', name: 'Togo' },\n { code: 'TK', name: 'Tokelau' },\n { code: 'TO', name: 'Tonga' },\n { code: 'TT', name: 'Trinidad and Tobago' },\n { code: 'TN', name: 'Tunisia' },\n { code: 'TR', name: 'Türkiye' },\n { code: 'TM', name: 'Turkmenistan' },\n { code: 'TC', name: 'Turks and Caicos Islands' },\n { code: 'TV', name: 'Tuvalu' },\n { code: 'UG', name: 'Uganda' },\n { code: 'UA', name: 'Ukraine' },\n { code: 'AE', name: 'United Arab Emirates' },\n { code: 'GB', name: 'United Kingdom' },\n { code: 'US', name: 'United States' },\n { code: 'UM', name: 'United States Minor Outlying Islands' },\n { code: 'UY', name: 'Uruguay' },\n { code: 'UZ', name: 'Uzbekistan' },\n { code: 'VU', name: 'Vanuatu' },\n { code: 'VE', name: 'Venezuela' },\n { code: 'VN', name: 'Viet Nam' },\n { code: 'VG', name: 'Virgin Islands (British)' },\n { code: 'VI', name: 'Virgin Islands (U.S.)' },\n { code: 'WF', name: 'Wallis and Futuna' },\n { code: 'EH', name: 'Western Sahara' },\n { code: 'YE', name: 'Yemen' },\n { code: 'ZM', name: 'Zambia' },\n { code: 'ZW', name: 'Zimbabwe' },\n];\n\n// Convert a 2-letter ISO code to a regional-indicator flag emoji (e.g. \"IN\" -> 🇮🇳).\nexport function countryFlag(code: string): string {\n return String.fromCodePoint(...[...code.toUpperCase()].map((c) => 127397 + c.charCodeAt(0)));\n}\n","import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../../components/Select/Select';\nimport { SelectFilter, type SelectFilterProps } from '../../components/Select/SelectFilter';\nimport type { SelectOption } from '../../components/Select/types';\nimport { ISO_COUNTRIES, countryFlag } from './iso-countries';\n\n// Base Select has no custom option render slot, so the flag is baked into the label string.\nconst ISO_COUNTRY_OPTIONS: SelectOption[] = ISO_COUNTRIES.map(({ code, name }) => ({\n value: code,\n label: `${countryFlag(code)} ${name}`,\n}));\n\nexport type ISOCountrySelectProps = Omit<SelectProps, 'optionsEndpoint' | 'options'>;\n\n// Pre-configured Select for ISO 3166-1 alpha-2 country selection with a baked-in static list.\nexport const ISOCountrySelect = forwardRef<HTMLButtonElement, ISOCountrySelectProps>((props, ref) => (\n <Select ref={ref} label=\"Country\" placeholder=\"Select country\" searchable options={ISO_COUNTRY_OPTIONS} {...props} />\n));\nISOCountrySelect.displayName = 'ISOCountrySelect';\n\nexport type ISOCountryFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'options' | 'name'> & {\n name?: string;\n};\n\n// Pre-configured SelectFilter for ISO 3166-1 alpha-2 country filtering with a baked-in static list.\nexport const ISOCountryFilter = Object.assign(\n forwardRef<HTMLButtonElement, ISOCountryFilterProps>((props, ref) => (\n <SelectFilter\n ref={ref}\n name=\"country\"\n label=\"Country\"\n placeholder=\"Select country\"\n options={ISO_COUNTRY_OPTIONS}\n {...props}\n />\n )),\n { displayName: 'ISOCountryFilter', defaultLabel: 'Country', defaultName: 'country' },\n);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ISOCountrySelect.js","sources":["../lib/selects/iso-country/iso-countries.ts","../lib/selects/iso-country/ISOCountrySelect.tsx"],"sourcesContent":["// Static ISO 3166-1 alpha-2 country list, baked into the frontend (no backend endpoint).\n\nexport interface ISOCountry {\n code: string;\n name: string;\n}\n\n// Full ISO 3166-1 alpha-2 list (249 entries).\nexport const ISO_COUNTRIES: ISOCountry[] = [\n { code: 'AF', name: 'Afghanistan' },\n { code: 'AX', name: 'Åland Islands' },\n { code: 'AL', name: 'Albania' },\n { code: 'DZ', name: 'Algeria' },\n { code: 'AS', name: 'American Samoa' },\n { code: 'AD', name: 'Andorra' },\n { code: 'AO', name: 'Angola' },\n { code: 'AI', name: 'Anguilla' },\n { code: 'AQ', name: 'Antarctica' },\n { code: 'AG', name: 'Antigua and Barbuda' },\n { code: 'AR', name: 'Argentina' },\n { code: 'AM', name: 'Armenia' },\n { code: 'AW', name: 'Aruba' },\n { code: 'AU', name: 'Australia' },\n { code: 'AT', name: 'Austria' },\n { code: 'AZ', name: 'Azerbaijan' },\n { code: 'BS', name: 'Bahamas' },\n { code: 'BH', name: 'Bahrain' },\n { code: 'BD', name: 'Bangladesh' },\n { code: 'BB', name: 'Barbados' },\n { code: 'BY', name: 'Belarus' },\n { code: 'BE', name: 'Belgium' },\n { code: 'BZ', name: 'Belize' },\n { code: 'BJ', name: 'Benin' },\n { code: 'BM', name: 'Bermuda' },\n { code: 'BT', name: 'Bhutan' },\n { code: 'BO', name: 'Bolivia' },\n { code: 'BQ', name: 'Bonaire, Sint Eustatius and Saba' },\n { code: 'BA', name: 'Bosnia and Herzegovina' },\n { code: 'BW', name: 'Botswana' },\n { code: 'BV', name: 'Bouvet Island' },\n { code: 'BR', name: 'Brazil' },\n { code: 'IO', name: 'British Indian Ocean Territory' },\n { code: 'BN', name: 'Brunei Darussalam' },\n { code: 'BG', name: 'Bulgaria' },\n { code: 'BF', name: 'Burkina Faso' },\n { code: 'BI', name: 'Burundi' },\n { code: 'CV', name: 'Cabo Verde' },\n { code: 'KH', name: 'Cambodia' },\n { code: 'CM', name: 'Cameroon' },\n { code: 'CA', name: 'Canada' },\n { code: 'KY', name: 'Cayman Islands' },\n { code: 'CF', name: 'Central African Republic' },\n { code: 'TD', name: 'Chad' },\n { code: 'CL', name: 'Chile' },\n { code: 'CN', name: 'China' },\n { code: 'CX', name: 'Christmas Island' },\n { code: 'CC', name: 'Cocos (Keeling) Islands' },\n { code: 'CO', name: 'Colombia' },\n { code: 'KM', name: 'Comoros' },\n { code: 'CG', name: 'Congo' },\n { code: 'CD', name: 'Congo, Democratic Republic of the' },\n { code: 'CK', name: 'Cook Islands' },\n { code: 'CR', name: 'Costa Rica' },\n { code: 'CI', name: \"Côte d'Ivoire\" },\n { code: 'HR', name: 'Croatia' },\n { code: 'CU', name: 'Cuba' },\n { code: 'CW', name: 'Curaçao' },\n { code: 'CY', name: 'Cyprus' },\n { code: 'CZ', name: 'Czechia' },\n { code: 'DK', name: 'Denmark' },\n { code: 'DJ', name: 'Djibouti' },\n { code: 'DM', name: 'Dominica' },\n { code: 'DO', name: 'Dominican Republic' },\n { code: 'EC', name: 'Ecuador' },\n { code: 'EG', name: 'Egypt' },\n { code: 'SV', name: 'El Salvador' },\n { code: 'GQ', name: 'Equatorial Guinea' },\n { code: 'ER', name: 'Eritrea' },\n { code: 'EE', name: 'Estonia' },\n { code: 'SZ', name: 'Eswatini' },\n { code: 'ET', name: 'Ethiopia' },\n { code: 'FK', name: 'Falkland Islands (Malvinas)' },\n { code: 'FO', name: 'Faroe Islands' },\n { code: 'FJ', name: 'Fiji' },\n { code: 'FI', name: 'Finland' },\n { code: 'FR', name: 'France' },\n { code: 'GF', name: 'French Guiana' },\n { code: 'PF', name: 'French Polynesia' },\n { code: 'TF', name: 'French Southern Territories' },\n { code: 'GA', name: 'Gabon' },\n { code: 'GM', name: 'Gambia' },\n { code: 'GE', name: 'Georgia' },\n { code: 'DE', name: 'Germany' },\n { code: 'GH', name: 'Ghana' },\n { code: 'GI', name: 'Gibraltar' },\n { code: 'GR', name: 'Greece' },\n { code: 'GL', name: 'Greenland' },\n { code: 'GD', name: 'Grenada' },\n { code: 'GP', name: 'Guadeloupe' },\n { code: 'GU', name: 'Guam' },\n { code: 'GT', name: 'Guatemala' },\n { code: 'GG', name: 'Guernsey' },\n { code: 'GN', name: 'Guinea' },\n { code: 'GW', name: 'Guinea-Bissau' },\n { code: 'GY', name: 'Guyana' },\n { code: 'HT', name: 'Haiti' },\n { code: 'HM', name: 'Heard Island and McDonald Islands' },\n { code: 'VA', name: 'Holy See' },\n { code: 'HN', name: 'Honduras' },\n { code: 'HK', name: 'Hong Kong' },\n { code: 'HU', name: 'Hungary' },\n { code: 'IS', name: 'Iceland' },\n { code: 'IN', name: 'India' },\n { code: 'ID', name: 'Indonesia' },\n { code: 'IR', name: 'Iran' },\n { code: 'IQ', name: 'Iraq' },\n { code: 'IE', name: 'Ireland' },\n { code: 'IM', name: 'Isle of Man' },\n { code: 'IL', name: 'Israel' },\n { code: 'IT', name: 'Italy' },\n { code: 'JM', name: 'Jamaica' },\n { code: 'JP', name: 'Japan' },\n { code: 'JE', name: 'Jersey' },\n { code: 'JO', name: 'Jordan' },\n { code: 'KZ', name: 'Kazakhstan' },\n { code: 'KE', name: 'Kenya' },\n { code: 'KI', name: 'Kiribati' },\n { code: 'KP', name: \"Korea, Democratic People's Republic of\" },\n { code: 'KR', name: 'Korea, Republic of' },\n { code: 'KW', name: 'Kuwait' },\n { code: 'KG', name: 'Kyrgyzstan' },\n { code: 'LA', name: \"Lao People's Democratic Republic\" },\n { code: 'LV', name: 'Latvia' },\n { code: 'LB', name: 'Lebanon' },\n { code: 'LS', name: 'Lesotho' },\n { code: 'LR', name: 'Liberia' },\n { code: 'LY', name: 'Libya' },\n { code: 'LI', name: 'Liechtenstein' },\n { code: 'LT', name: 'Lithuania' },\n { code: 'LU', name: 'Luxembourg' },\n { code: 'MO', name: 'Macao' },\n { code: 'MG', name: 'Madagascar' },\n { code: 'MW', name: 'Malawi' },\n { code: 'MY', name: 'Malaysia' },\n { code: 'MV', name: 'Maldives' },\n { code: 'ML', name: 'Mali' },\n { code: 'MT', name: 'Malta' },\n { code: 'MH', name: 'Marshall Islands' },\n { code: 'MQ', name: 'Martinique' },\n { code: 'MR', name: 'Mauritania' },\n { code: 'MU', name: 'Mauritius' },\n { code: 'YT', name: 'Mayotte' },\n { code: 'MX', name: 'Mexico' },\n { code: 'FM', name: 'Micronesia' },\n { code: 'MD', name: 'Moldova' },\n { code: 'MC', name: 'Monaco' },\n { code: 'MN', name: 'Mongolia' },\n { code: 'ME', name: 'Montenegro' },\n { code: 'MS', name: 'Montserrat' },\n { code: 'MA', name: 'Morocco' },\n { code: 'MZ', name: 'Mozambique' },\n { code: 'MM', name: 'Myanmar' },\n { code: 'NA', name: 'Namibia' },\n { code: 'NR', name: 'Nauru' },\n { code: 'NP', name: 'Nepal' },\n { code: 'NL', name: 'Netherlands' },\n { code: 'NC', name: 'New Caledonia' },\n { code: 'NZ', name: 'New Zealand' },\n { code: 'NI', name: 'Nicaragua' },\n { code: 'NE', name: 'Niger' },\n { code: 'NG', name: 'Nigeria' },\n { code: 'NU', name: 'Niue' },\n { code: 'NF', name: 'Norfolk Island' },\n { code: 'MK', name: 'North Macedonia' },\n { code: 'MP', name: 'Northern Mariana Islands' },\n { code: 'NO', name: 'Norway' },\n { code: 'OM', name: 'Oman' },\n { code: 'PK', name: 'Pakistan' },\n { code: 'PW', name: 'Palau' },\n { code: 'PS', name: 'Palestine, State of' },\n { code: 'PA', name: 'Panama' },\n { code: 'PG', name: 'Papua New Guinea' },\n { code: 'PY', name: 'Paraguay' },\n { code: 'PE', name: 'Peru' },\n { code: 'PH', name: 'Philippines' },\n { code: 'PN', name: 'Pitcairn' },\n { code: 'PL', name: 'Poland' },\n { code: 'PT', name: 'Portugal' },\n { code: 'PR', name: 'Puerto Rico' },\n { code: 'QA', name: 'Qatar' },\n { code: 'RE', name: 'Réunion' },\n { code: 'RO', name: 'Romania' },\n { code: 'RU', name: 'Russian Federation' },\n { code: 'RW', name: 'Rwanda' },\n { code: 'BL', name: 'Saint Barthélemy' },\n { code: 'SH', name: 'Saint Helena, Ascension and Tristan da Cunha' },\n { code: 'KN', name: 'Saint Kitts and Nevis' },\n { code: 'LC', name: 'Saint Lucia' },\n { code: 'MF', name: 'Saint Martin (French part)' },\n { code: 'PM', name: 'Saint Pierre and Miquelon' },\n { code: 'VC', name: 'Saint Vincent and the Grenadines' },\n { code: 'WS', name: 'Samoa' },\n { code: 'SM', name: 'San Marino' },\n { code: 'ST', name: 'Sao Tome and Principe' },\n { code: 'SA', name: 'Saudi Arabia' },\n { code: 'SN', name: 'Senegal' },\n { code: 'RS', name: 'Serbia' },\n { code: 'SC', name: 'Seychelles' },\n { code: 'SL', name: 'Sierra Leone' },\n { code: 'SG', name: 'Singapore' },\n { code: 'SX', name: 'Sint Maarten (Dutch part)' },\n { code: 'SK', name: 'Slovakia' },\n { code: 'SI', name: 'Slovenia' },\n { code: 'SB', name: 'Solomon Islands' },\n { code: 'SO', name: 'Somalia' },\n { code: 'ZA', name: 'South Africa' },\n { code: 'GS', name: 'South Georgia and the South Sandwich Islands' },\n { code: 'SS', name: 'South Sudan' },\n { code: 'ES', name: 'Spain' },\n { code: 'LK', name: 'Sri Lanka' },\n { code: 'SD', name: 'Sudan' },\n { code: 'SR', name: 'Suriname' },\n { code: 'SJ', name: 'Svalbard and Jan Mayen' },\n { code: 'SE', name: 'Sweden' },\n { code: 'CH', name: 'Switzerland' },\n { code: 'SY', name: 'Syrian Arab Republic' },\n { code: 'TW', name: 'Taiwan' },\n { code: 'TJ', name: 'Tajikistan' },\n { code: 'TZ', name: 'Tanzania' },\n { code: 'TH', name: 'Thailand' },\n { code: 'TL', name: 'Timor-Leste' },\n { code: 'TG', name: 'Togo' },\n { code: 'TK', name: 'Tokelau' },\n { code: 'TO', name: 'Tonga' },\n { code: 'TT', name: 'Trinidad and Tobago' },\n { code: 'TN', name: 'Tunisia' },\n { code: 'TR', name: 'Türkiye' },\n { code: 'TM', name: 'Turkmenistan' },\n { code: 'TC', name: 'Turks and Caicos Islands' },\n { code: 'TV', name: 'Tuvalu' },\n { code: 'UG', name: 'Uganda' },\n { code: 'UA', name: 'Ukraine' },\n { code: 'AE', name: 'United Arab Emirates' },\n { code: 'GB', name: 'United Kingdom' },\n { code: 'US', name: 'United States' },\n { code: 'UM', name: 'United States Minor Outlying Islands' },\n { code: 'UY', name: 'Uruguay' },\n { code: 'UZ', name: 'Uzbekistan' },\n { code: 'VU', name: 'Vanuatu' },\n { code: 'VE', name: 'Venezuela' },\n { code: 'VN', name: 'Viet Nam' },\n { code: 'VG', name: 'Virgin Islands (British)' },\n { code: 'VI', name: 'Virgin Islands (U.S.)' },\n { code: 'WF', name: 'Wallis and Futuna' },\n { code: 'EH', name: 'Western Sahara' },\n { code: 'YE', name: 'Yemen' },\n { code: 'ZM', name: 'Zambia' },\n { code: 'ZW', name: 'Zimbabwe' },\n];\n\n// Convert a 2-letter ISO code to a regional-indicator flag emoji (e.g. \"IN\" -> 🇮🇳).\nexport function countryFlag(code: string): string {\n return String.fromCodePoint(...[...code.toUpperCase()].map((c) => 127397 + c.charCodeAt(0)));\n}\n","import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../../components/Select/Select';\nimport { SelectFilter, type SelectFilterProps } from '../../components/Select/SelectFilter';\nimport type { SelectOption } from '../../components/Select/types';\nimport { countryFlag, ISO_COUNTRIES } from './iso-countries';\n\n// Base Select has no custom option render slot, so the flag is baked into the label string.\nconst ISO_COUNTRY_OPTIONS: SelectOption[] = ISO_COUNTRIES.map(({ code, name }) => ({\n value: code,\n label: `${countryFlag(code)} ${name}`,\n}));\n\nexport type ISOCountrySelectProps = Omit<SelectProps, 'optionsEndpoint' | 'options'>;\n\n// Pre-configured Select for ISO 3166-1 alpha-2 country selection with a baked-in static list.\nexport const ISOCountrySelect = forwardRef<HTMLButtonElement, ISOCountrySelectProps>((props, ref) => (\n <Select ref={ref} label=\"Country\" placeholder=\"Select country\" searchable options={ISO_COUNTRY_OPTIONS} {...props} />\n));\nISOCountrySelect.displayName = 'ISOCountrySelect';\n\nexport type ISOCountryFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'options' | 'name'> & {\n name?: string;\n};\n\n// Pre-configured SelectFilter for ISO 3166-1 alpha-2 country filtering with a baked-in static list.\nexport const ISOCountryFilter = Object.assign(\n forwardRef<HTMLButtonElement, ISOCountryFilterProps>((props, ref) => (\n <SelectFilter\n ref={ref}\n name=\"country\"\n label=\"Country\"\n placeholder=\"Select country\"\n options={ISO_COUNTRY_OPTIONS}\n {...props}\n />\n )),\n { displayName: 'ISOCountryFilter', defaultLabel: 'Country', defaultName: 'country' },\n);\n"],"names":[],"mappings":"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"}
|
package/dist/Select.js
CHANGED
|
@@ -449,7 +449,7 @@ const MultiSelect = forwardRef(
|
|
|
449
449
|
)
|
|
450
450
|
] }, String(option.value))) });
|
|
451
451
|
}
|
|
452
|
-
return /* @__PURE__ */ jsxs(Field, { children: [
|
|
452
|
+
return /* @__PURE__ */ jsxs(Field, { "data-disabled": disabled, children: [
|
|
453
453
|
label && /* @__PURE__ */ jsx(FieldLabel, { children: label }),
|
|
454
454
|
/* @__PURE__ */ jsxs(MultiSelectRoot, { open: state.open, onOpenChange: handleOpenChange, disabled, children: [
|
|
455
455
|
/* @__PURE__ */ jsx(
|
package/dist/Select.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../shadcn/shadcnMultiSelect/multi-select.tsx","../lib/components/Select/hooks/useMultiSelect.ts","../lib/components/Select/components/MultiSelect/MultiSelect.tsx","../lib/components/Select/hooks/useSelect.ts","../lib/components/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDownIcon, SearchIcon } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef, memo } from 'react';\n\nimport { Checkbox } from '../shadcnCheckbox';\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcnPopover';\nimport { cn } from '../utils';\n\n// MultiSelectRoot — wraps Radix Popover to provide open/close state\ninterface MultiSelectRootProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n children: React.ReactNode;\n}\n\nfunction MultiSelectRoot({ open, onOpenChange, disabled, children }: MultiSelectRootProps) {\n return (\n <Popover data-slot=\"multi-select\" open={disabled ? false : open} onOpenChange={disabled ? undefined : onOpenChange}>\n {children}\n </Popover>\n );\n}\n\n// MultiSelectTrigger — styled trigger button that mirrors SelectTrigger\ninterface MultiSelectTriggerProps extends React.ComponentProps<'button'> {\n className?: string;\n open?: boolean;\n listboxId?: string;\n}\n\nconst MultiSelectTrigger = forwardRef<HTMLButtonElement, MultiSelectTriggerProps>(\n ({ className, children, disabled, open, listboxId, ...props }, ref) => {\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"multi-select-trigger\"\n role=\"combobox\"\n aria-expanded={open ?? false}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n disabled={disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n 'min-h-9',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n );\n },\n);\n\nMultiSelectTrigger.displayName = 'MultiSelectTrigger';\n\n// MultiSelectContent — styled dropdown panel wrapping PopoverContent\ninterface MultiSelectContentProps extends React.ComponentProps<typeof PopoverContent> {\n className?: string;\n}\n\nfunction MultiSelectContent({ className, children, align = 'start', ...props }: MultiSelectContentProps) {\n return (\n <PopoverContent\n data-slot=\"multi-select-content\"\n align={align}\n className={cn('w-auto min-w-[var(--radix-popover-trigger-width)] p-0', className)}\n {...props}\n >\n {children}\n </PopoverContent>\n );\n}\n\n// MultiSelectSearch — search input for filtering options (stateless)\ninterface MultiSelectSearchProps {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n}\n\nfunction MultiSelectSearch({ value, onValueChange, placeholder = 'Search...', className }: MultiSelectSearchProps) {\n return (\n <div data-slot=\"multi-select-search\" className={cn('px-3 py-2', className)}>\n <div className=\"flex items-center gap-2 rounded-lg border border-border bg-background px-3 h-9\">\n <SearchIcon className=\"size-4 shrink-0 text-muted-foreground\" />\n <input\n type=\"text\"\n aria-label=\"Search options\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n placeholder={placeholder}\n className=\"w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </div>\n </div>\n );\n}\n\n// MultiSelectActions — Select All / Clear action bar\ninterface MultiSelectActionsProps {\n onSelectAll: () => void;\n onClear: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nfunction MultiSelectActions({ onSelectAll, onClear, disabled, className }: MultiSelectActionsProps) {\n return (\n <div\n data-slot=\"multi-select-actions\"\n className={cn('flex items-center justify-between border-t px-3 py-1.5', className)}\n >\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-primary hover:text-primary/80 disabled:pointer-events-none disabled:opacity-50\"\n onClick={onSelectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-muted-foreground hover:text-foreground disabled:pointer-events-none disabled:opacity-50\"\n onClick={onClear}\n >\n Clear\n </button>\n </div>\n );\n}\n\n// MultiSelectList — scrollable listbox container for option rows\ninterface MultiSelectListProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectList({ className, children, ...props }: MultiSelectListProps) {\n return (\n <div\n data-slot=\"multi-select-list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n className={cn('max-h-60 overflow-y-auto p-1', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectRow — a single option row with a checkbox\ninterface MultiSelectRowProps {\n name: string;\n description?: string;\n checked: boolean;\n onToggle: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nconst MultiSelectRow = memo(function MultiSelectRow({\n name,\n description,\n checked,\n onToggle,\n disabled,\n className,\n}: MultiSelectRowProps) {\n function handleClick() {\n if (!disabled) {\n onToggle();\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onToggle();\n }\n }\n\n return (\n <div\n data-slot=\"multi-select-row\"\n role=\"option\"\n aria-selected={checked}\n aria-disabled={disabled}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'relative flex w-full cursor-default gap-2 rounded-md px-2 text-sm outline-hidden select-none',\n description ? 'min-h-11 items-start py-1.5' : 'h-8 items-center py-0',\n 'hover:bg-accent hover:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n data-disabled={disabled ? '' : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {/* Decorative only — the row (role=option) handles toggle/focus; pointer-events-none routes clicks to the row\n so this aria-hidden checkbox never receives focus (avoids the \"aria-hidden on focused element\" warning) */}\n <Checkbox\n checked={checked}\n disabled={disabled}\n tabIndex={-1}\n aria-hidden=\"true\"\n className=\"pointer-events-none self-center\"\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate\">{name}</span>\n {description && <span className=\"mt-0.5 block truncate text-xs text-muted-foreground\">{description}</span>}\n </span>\n </div>\n );\n});\n\n// MultiSelectGroup — wraps a group of rows with a role=\"group\" container\ninterface MultiSelectGroupProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectGroup({ className, children, ...props }: MultiSelectGroupProps) {\n return (\n <div\n data-slot=\"multi-select-group\"\n role=\"group\"\n className={cn('border-t border-border first:border-t-0 pt-1 mt-1 first:pt-0 first:mt-0', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectGroupLabel — styled label for a group header\ninterface MultiSelectGroupLabelProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectGroupLabel({ className, children, ...props }: MultiSelectGroupLabelProps) {\n return (\n <div\n data-slot=\"multi-select-group-label\"\n className={cn('text-primary px-2 py-1 text-[10px] font-semibold uppercase tracking-wide', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectEmpty — displayed when no options match a search filter\ninterface MultiSelectEmptyProps {\n children?: React.ReactNode;\n className?: string;\n}\n\nfunction MultiSelectEmpty({ children, className }: MultiSelectEmptyProps) {\n return (\n <div\n data-slot=\"multi-select-empty\"\n className={cn('flex items-center justify-center py-6 text-sm text-muted-foreground', className)}\n >\n {children ?? 'No options found.'}\n </div>\n );\n}\n\nexport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n MultiSelectTrigger,\n};\n\nexport type {\n MultiSelectActionsProps,\n MultiSelectContentProps,\n MultiSelectEmptyProps,\n MultiSelectGroupLabelProps,\n MultiSelectGroupProps,\n MultiSelectListProps,\n MultiSelectRootProps,\n MultiSelectRowProps,\n MultiSelectSearchProps,\n MultiSelectTriggerProps,\n};\n","import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport type { SelectGroup, SelectOption, SelectValue } from '../types';\n\ninterface UseMultiSelectStateProps {\n options: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n onOptionsSelect?: (options: SelectOption[]) => void;\n defaultValue?: SelectValue[];\n remoteSearch?: boolean;\n}\n\n// Manages controlled/uncontrolled multi-select state, search filtering, and grouping\nexport function useMultiSelect({\n options,\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n defaultValue,\n remoteSearch,\n}: UseMultiSelectStateProps) {\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<SelectValue[]>(defaultValue ?? []);\n const selectedValues = isControlled ? controlledValue : internalValue;\n const selectedSet = useMemo(() => new Set<SelectValue>(selectedValues), [selectedValues]);\n\n // Ref to latest selectedValues so callbacks stay reference-stable\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n const [open, setOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const listboxId = useId();\n\n const optionMap = useMemo(() => {\n const map = new Map<SelectValue, SelectOption>();\n for (const option of options) {\n map.set(option.value, option);\n }\n return map;\n }, [options]);\n\n const filteredOptions = useMemo(() => {\n if (remoteSearch || !searchQuery) return options;\n const lower = searchQuery.toLowerCase();\n return options.filter((option) => option.label.toLowerCase().includes(lower));\n }, [options, searchQuery, remoteSearch]);\n\n const updateSelection = useCallback(\n (nextValues: SelectValue[]) => {\n if (!isControlled) {\n setInternalValue(nextValues);\n }\n onChange?.(nextValues);\n },\n [isControlled, onChange],\n );\n\n // Toggle a single option on or off\n const toggleOption = useCallback(\n (optionValue: SelectValue) => {\n const option = optionMap.get(optionValue);\n if (option?.disabled) return;\n const current = selectedValuesRef.current;\n const nextValues = current.includes(optionValue)\n ? current.filter((v) => v !== optionValue)\n : [...current, optionValue];\n const nextOptions = nextValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(nextOptions);\n updateSelection(nextValues);\n },\n [optionMap, updateSelection, onOptionsSelect],\n );\n\n // Preserve already-selected disabled options when selecting all\n const selectAll = useCallback(() => {\n const enabledValues = options.filter((o) => !o.disabled).map((o) => o.value);\n const currentDisabledValues = selectedValuesRef.current.filter((v) => optionMap.get(v)?.disabled);\n const nextValues = [...new Set([...currentDisabledValues, ...enabledValues])];\n const nextOptions = nextValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(nextOptions);\n updateSelection(nextValues);\n }, [options, optionMap, updateSelection, onOptionsSelect]);\n\n // Retain disabled options that are currently selected when clearing\n const clearAll = useCallback(() => {\n const currentDisabledValues = selectedValuesRef.current.filter((v) => optionMap.get(v)?.disabled);\n const remainingOptions = currentDisabledValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(remainingOptions);\n updateSelection(currentDisabledValues);\n }, [optionMap, updateSelection, onOptionsSelect]);\n\n // Reset search when popover closes\n useEffect(() => {\n if (!open) {\n setSearchQuery('');\n }\n }, [open]);\n\n // Map selected values to their option objects for display\n const selectedOptions = useMemo(\n () => selectedValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[],\n [selectedValues, optionMap],\n );\n\n // Fire onOptionsSelect once when all initial values resolve from the async option map.\n const notifiedInitialRef = useRef<string | null>(null);\n useEffect(() => {\n if (selectedValues.length === 0) return;\n const allResolved = selectedValues.every((v) => optionMap.has(v));\n if (!allResolved) return;\n const key = [...selectedValues].sort().join(',');\n if (notifiedInitialRef.current === key) return;\n notifiedInitialRef.current = key;\n onOptionsSelect?.(selectedOptions);\n }, [selectedOptions, selectedValues, optionMap, onOptionsSelect]);\n\n // O(n + g) grouping — one pass over groups, one pass over options\n const grouped = useMemo(() => {\n if (!groups || groups.length === 0) return null;\n\n const buckets = new Map<string | number, SelectOption[]>();\n for (const g of groups) {\n buckets.set(g.id, []);\n }\n\n const ungrouped: SelectOption[] = [];\n for (const option of filteredOptions) {\n const bucket = option.groupId != null ? buckets.get(option.groupId) : undefined;\n if (bucket) {\n bucket.push(option);\n } else {\n ungrouped.push(option);\n }\n }\n\n const entries: Array<{ name: string; options: SelectOption[] }> = [];\n for (const g of groups) {\n const bucket = buckets.get(g.id);\n if (!bucket || bucket.length === 0) continue;\n entries.push({ name: g.name, options: bucket });\n }\n\n return { ungrouped, entries };\n }, [filteredOptions, groups]);\n\n return {\n selectedValues,\n selectedSet,\n selectedOptions,\n open,\n setOpen,\n searchQuery,\n setSearchQuery,\n listboxId,\n filteredOptions,\n grouped,\n toggleOption,\n selectAll,\n clearAll,\n };\n}\n","import { Loader2, X } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef } from 'react';\nimport { Badge } from '../../../../../shadcn/shadcnBadge';\nimport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n MultiSelectTrigger,\n} from '../../../../../shadcn/shadcnMultiSelect';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '../../../Field';\nimport { useMultiSelect } from '../../hooks/useMultiSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue } from '../../types';\n\nexport interface MultiSelectProps {\n label?: string;\n description?: React.ReactNode;\n error?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n onOptionsSelect?: (options: SelectOption[]) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValue[];\n maxDisplayedItems?: number;\n searchable?: boolean;\n searchPlaceholder?: string;\n asyncState?: AsyncSelectState;\n transformLabel?: (label: string, option: SelectOption, context: 'option' | 'trigger') => string;\n transformDescription?: (description: string, option: SelectOption) => string;\n onOpenChange?: (open: boolean) => void;\n}\n\n// Multi-value select with checkbox options, search, and badge chips\nexport const MultiSelect = forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n label,\n description,\n error,\n placeholder = 'Select options',\n options,\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n maxDisplayedItems = 3,\n searchable = false,\n searchPlaceholder = 'Search...',\n asyncState,\n transformLabel,\n transformDescription,\n onOpenChange,\n },\n ref,\n ) => {\n const state = useMultiSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Notifies parent (Select.tsx) of open state changes to gate async queries; clears async search on close\n function handleOpenChange(o: boolean) {\n state.setOpen(o);\n onOpenChange?.(o);\n if (!o) asyncState?.setSearchQuery('');\n }\n\n // Resolve search binding -- async delegates to parent, static uses local state\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n const showSearch = !!asyncState || searchable;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n const optionLabel = transformLabel ? transformLabel(option.label, option, 'option') : option.label;\n const optionDescription = option.description\n ? transformDescription\n ? transformDescription(option.description, option)\n : option.description\n : undefined;\n\n return (\n <MultiSelectRow\n key={String(option.value)}\n name={optionLabel}\n description={optionDescription}\n checked={state.selectedSet.has(option.value)}\n onToggle={() => {\n state.toggleOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <MultiSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <MultiSelectGroup key={entry.name}>\n <MultiSelectGroupLabel>{entry.name}</MultiSelectGroupLabel>\n {entry.options.map(renderRow)}\n </MultiSelectGroup>\n ))}\n </>\n );\n }\n\n // Renders badge chips, count summary, or placeholder inside the trigger\n function renderTriggerContent() {\n if (state.selectedOptions.length === 0) {\n return <span className=\"text-muted-foreground\">{placeholder}</span>;\n }\n\n if (state.selectedOptions.length > maxDisplayedItems) {\n return <span className=\"text-sm\">{state.selectedOptions.length} items selected</span>;\n }\n\n return (\n <span className=\"flex flex-wrap items-center gap-1\">\n {state.selectedOptions.map((option) => (\n <Badge key={String(option.value)} variant=\"secondary\" className=\"gap-1 pr-1\">\n {transformLabel ? transformLabel(option.label, option, 'trigger') : option.label}\n {/* biome-ignore lint/a11y/useSemanticElements: must stay a span — it's nested inside the trigger's\n <button>, and a nested native <button> is invalid HTML */}\n <span\n role=\"button\"\n tabIndex={0}\n aria-label={`Remove ${option.label}`}\n className=\"inline-flex cursor-pointer rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation();\n state.toggleOption(option.value);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n state.toggleOption(option.value);\n }\n }}\n >\n <X className=\"size-3 text-muted-foreground hover:text-foreground\" />\n </span>\n </Badge>\n ))}\n </span>\n );\n }\n\n return (\n <Field>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <MultiSelectRoot open={state.open} onOpenChange={handleOpenChange} disabled={disabled}>\n <MultiSelectTrigger\n ref={ref}\n id={id}\n open={state.open}\n listboxId={state.listboxId}\n aria-invalid={!!error}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={className}\n >\n <span className=\"flex flex-1 flex-wrap items-center gap-1 overflow-hidden\">{renderTriggerContent()}</span>\n </MultiSelectTrigger>\n\n <MultiSelectContent>\n {showSearch && (\n <MultiSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n )}\n\n <MultiSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </MultiSelectList>\n\n <MultiSelectActions onSelectAll={state.selectAll} onClear={state.clearAll} disabled={disabled} />\n </MultiSelectContent>\n </MultiSelectRoot>\n\n {name && state.selectedValues.map((v) => <input key={String(v)} type=\"hidden\" name={name} value={String(v)} />)}\n\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n {error && <FieldError>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n","import { keepPreviousData, useInfiniteQuery, useQuery } from '@tanstack/react-query';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport { axios } from '../../../utils/axios';\nimport type { SelectFieldKeys, SelectGroup, SelectOption, SelectOptionsResponse, SelectValue } from '../types';\n\nexport interface UseSelectProps {\n options?: SelectOption[];\n groups?: SelectGroup[];\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n selectedValues?: SelectValue[];\n enabled?: boolean;\n open?: boolean;\n}\n\nexport interface UseSelectReturn {\n options: SelectOption[];\n groups: SelectGroup[];\n loading: boolean;\n loadingMore: boolean;\n hasMore: boolean;\n searchQuery: string;\n setSearchQuery: (q: string) => void;\n sentinelRef: (node?: Element | null) => void;\n}\n\nconst NOOP_REF = () => {};\n\n// Stable JSON serialization for query keys (order-independent)\nexport function stableStringify(obj: object | undefined): string {\n if (!obj) return '';\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n// Manages async option fetching with debounced search, sentinel-based infinite scroll, and selected value resolution\nexport function useSelect({\n options: staticOptions,\n groups: staticGroups,\n optionsEndpoint,\n searchDebounceMs = 300,\n limit = 20,\n fieldKeys,\n params,\n selectedValues,\n enabled,\n open,\n}: UseSelectProps): UseSelectReturn {\n const isAsync = !!optionsEndpoint;\n const [searchQuery, setSearchQuery] = useState('');\n const [debouncedSearch, setDebouncedSearch] = useState('');\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Debounce search input\n useEffect(() => {\n if (!isAsync) return;\n if (debounceRef.current) clearTimeout(debounceRef.current);\n if (searchQuery === '') {\n setDebouncedSearch('');\n return;\n }\n debounceRef.current = setTimeout(() => {\n setDebouncedSearch(searchQuery);\n }, searchDebounceMs);\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, [searchQuery, searchDebounceMs, isAsync]);\n\n // Serialize selected values to a comma-separated string of IDs (filters out booleans)\n const serializedValues = useMemo(\n () =>\n selectedValues && selectedValues.length > 0\n ? selectedValues.filter((v): v is string | number => typeof v !== 'boolean').join(',')\n : undefined,\n [selectedValues],\n );\n\n // Latest selection in a ref so the freeze effect can read it without depending on the (per-render) array identity\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n // Selection used to resolve + order options, snapshotted on open and frozen for the session, re-captured on next open\n const [resolveValues, setResolveValues] = useState(selectedValues);\n useEffect(() => {\n if (open) setResolveValues(selectedValuesRef.current);\n }, [open]);\n\n // While closed, track the bound value so a programmatic change (autofill / async reset) resolves its display\n // label. Keyed on the serialized (stable) value — NOT the array identity — to avoid a render loop.\n useEffect(() => {\n if (!open) setResolveValues(selectedValuesRef.current);\n }, [serializedValues, open]);\n\n const serializedResolveValues = useMemo(\n () =>\n resolveValues && resolveValues.length > 0\n ? resolveValues.filter((v): v is string | number => typeof v !== 'boolean').join(',')\n : undefined,\n [resolveValues],\n );\n\n // Query 1: Resolve selected values to full option objects\n const { data: resolvedSelected } = useQuery({\n queryKey: [\n 'select-resolve',\n optionsEndpoint,\n stableStringify(fieldKeys),\n stableStringify(params),\n JSON.stringify(resolveValues),\n ],\n queryFn: () =>\n axios\n .get<SelectOptionsResponse>(optionsEndpoint ?? '', {\n params: { values: serializedResolveValues, ...fieldKeys, ...params },\n showSuccessToast: false,\n showErrorToast: false,\n })\n .then((r) => r.data),\n enabled: isAsync && (resolveValues?.length ?? 0) > 0,\n staleTime: 5 * 60_000,\n placeholderData: keepPreviousData,\n });\n\n // Query 2: Paginated search results, excluding selected IDs\n const { data, isFetching, isFetchingNextPage, fetchNextPage, hasNextPage } = useInfiniteQuery({\n queryKey: ['select-search', optionsEndpoint, debouncedSearch, stableStringify(fieldKeys), stableStringify(params)],\n queryFn: ({ pageParam = 0 }) =>\n axios\n .get<SelectOptionsResponse>(optionsEndpoint ?? '', {\n params: {\n search: debouncedSearch || undefined,\n limit,\n offset: pageParam,\n excludeIds: serializedValues,\n ...fieldKeys,\n ...params,\n },\n showSuccessToast: false,\n showErrorToast: false,\n })\n .then((r) => r.data),\n getNextPageParam: (lastPage, _allPages, lastPageParam) => (lastPage.hasMore ? lastPageParam + limit : undefined),\n initialPageParam: 0,\n enabled: isAsync && enabled !== false,\n staleTime: 0,\n refetchOnMount: 'always',\n });\n\n // Merge options with value-based dedup; during active search show only live results, not previously selected options\n const fetchedOptions = useMemo(() => {\n const searchResults = data?.pages.flatMap((p) => p.options) ?? [];\n const selected = resolvedSelected?.options ?? [];\n const uniqueByValue = new Map<string, SelectOption>();\n const makeKey = (value: SelectValue) => `${typeof value}:${String(value)}`;\n\n if (debouncedSearch.trim().length === 0) {\n for (const option of selected) {\n if (resolveValues?.includes(option.value)) {\n uniqueByValue.set(makeKey(option.value), option);\n }\n }\n }\n for (const option of searchResults) {\n const key = makeKey(option.value);\n if (!uniqueByValue.has(key)) {\n uniqueByValue.set(key, option);\n }\n }\n\n return Array.from(uniqueByValue.values());\n }, [resolvedSelected, data, debouncedSearch, resolveValues]);\n\n const fetchedGroups = data?.pages[0]?.groups ?? staticGroups ?? [];\n const hasSearchResultsData = (data?.pages.length ?? 0) > 0;\n\n // IntersectionObserver sentinel for infinite scroll\n const { ref: sentinelRef, inView } = useInView();\n useEffect(() => {\n if (inView && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n }, [inView, hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n // Static mode\n if (!isAsync) {\n return {\n options: staticOptions ?? [],\n groups: staticGroups ?? [],\n loading: false,\n loadingMore: false,\n hasMore: false,\n searchQuery,\n setSearchQuery,\n sentinelRef: NOOP_REF,\n };\n }\n\n return {\n options: fetchedOptions,\n groups: fetchedGroups,\n loading: isFetching && !isFetchingNextPage && !hasSearchResultsData,\n loadingMore: isFetchingNextPage,\n hasMore: hasNextPage ?? false,\n searchQuery,\n setSearchQuery,\n sentinelRef,\n };\n}\n","import type React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { MultiSelect, type MultiSelectProps } from './components/MultiSelect/MultiSelect';\nimport { SingleSelect, type SingleSelectProps } from './components/SingleSelect/SingleSelect';\nimport { useSelect } from './hooks/useSelect';\nimport type { AsyncSelectState, SelectFieldKeys } from './types';\n\ninterface SelectBaseProps {\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n}\n\nexport interface SelectProps extends Omit<SingleSelectProps & MultiSelectProps, 'value' | 'onChange'>, SelectBaseProps {\n multiple?: boolean;\n value?: SingleSelectProps['value'] | MultiSelectProps['value'];\n onChange?: SingleSelectProps['onChange'] | MultiSelectProps['onChange'];\n}\n\nexport type SelectSingleProps = SelectProps;\nexport type SelectMultiProps = SelectProps;\n\n// Unified select field supporting single/multi selection and default/filter variants\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>((props, ref) => {\n const { multiple, optionsEndpoint, searchDebounceMs, limit, fieldKeys, params, onOpenChange, ...rest } = props;\n const [open, setOpen] = useState(false);\n\n const selectData = useSelect({\n options: rest.options,\n groups: rest.groups,\n optionsEndpoint,\n searchDebounceMs,\n limit,\n fieldKeys,\n params,\n selectedValues: rest.value != null ? (Array.isArray(rest.value) ? rest.value : [rest.value]) : undefined,\n enabled: open,\n open,\n });\n\n const isAsync = !!optionsEndpoint;\n\n const asyncState: AsyncSelectState | undefined = isAsync\n ? {\n loading: selectData.loading,\n loadingMore: selectData.loadingMore,\n hasMore: selectData.hasMore,\n searchQuery: selectData.searchQuery,\n setSearchQuery: selectData.setSearchQuery,\n sentinelRef: selectData.sentinelRef,\n }\n : undefined;\n\n const childProps = {\n ...rest,\n options: selectData.options,\n groups: selectData.groups,\n asyncState,\n };\n\n // Scope async queries to the open popover lifecycle so reopening reuses cached data and refetches in the background.\n const handleOpenChange = (o: boolean) => {\n setOpen(o);\n onOpenChange?.(o);\n };\n\n if (multiple) {\n return <MultiSelect ref={ref} {...(childProps as MultiSelectProps)} onOpenChange={handleOpenChange} />;\n }\n return <SingleSelect ref={ref} {...(childProps as SingleSelectProps)} onOpenChange={handleOpenChange} />;\n}) as React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;\n\nSelect.displayName = 'Select';\n"],"names":["ChevronDownIcon","SearchIcon","MultiSelectRow","Loader2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../shadcn/shadcnMultiSelect/multi-select.tsx","../lib/components/Select/hooks/useMultiSelect.ts","../lib/components/Select/components/MultiSelect/MultiSelect.tsx","../lib/components/Select/hooks/useSelect.ts","../lib/components/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDownIcon, SearchIcon } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef, memo } from 'react';\n\nimport { Checkbox } from '../shadcnCheckbox';\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcnPopover';\nimport { cn } from '../utils';\n\n// MultiSelectRoot — wraps Radix Popover to provide open/close state\ninterface MultiSelectRootProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n children: React.ReactNode;\n}\n\nfunction MultiSelectRoot({ open, onOpenChange, disabled, children }: MultiSelectRootProps) {\n return (\n <Popover data-slot=\"multi-select\" open={disabled ? false : open} onOpenChange={disabled ? undefined : onOpenChange}>\n {children}\n </Popover>\n );\n}\n\n// MultiSelectTrigger — styled trigger button that mirrors SelectTrigger\ninterface MultiSelectTriggerProps extends React.ComponentProps<'button'> {\n className?: string;\n open?: boolean;\n listboxId?: string;\n}\n\nconst MultiSelectTrigger = forwardRef<HTMLButtonElement, MultiSelectTriggerProps>(\n ({ className, children, disabled, open, listboxId, ...props }, ref) => {\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"multi-select-trigger\"\n role=\"combobox\"\n aria-expanded={open ?? false}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n disabled={disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n 'min-h-9',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n );\n },\n);\n\nMultiSelectTrigger.displayName = 'MultiSelectTrigger';\n\n// MultiSelectContent — styled dropdown panel wrapping PopoverContent\ninterface MultiSelectContentProps extends React.ComponentProps<typeof PopoverContent> {\n className?: string;\n}\n\nfunction MultiSelectContent({ className, children, align = 'start', ...props }: MultiSelectContentProps) {\n return (\n <PopoverContent\n data-slot=\"multi-select-content\"\n align={align}\n className={cn('w-auto min-w-[var(--radix-popover-trigger-width)] p-0', className)}\n {...props}\n >\n {children}\n </PopoverContent>\n );\n}\n\n// MultiSelectSearch — search input for filtering options (stateless)\ninterface MultiSelectSearchProps {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n}\n\nfunction MultiSelectSearch({ value, onValueChange, placeholder = 'Search...', className }: MultiSelectSearchProps) {\n return (\n <div data-slot=\"multi-select-search\" className={cn('px-3 py-2', className)}>\n <div className=\"flex items-center gap-2 rounded-lg border border-border bg-background px-3 h-9\">\n <SearchIcon className=\"size-4 shrink-0 text-muted-foreground\" />\n <input\n type=\"text\"\n aria-label=\"Search options\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n placeholder={placeholder}\n className=\"w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </div>\n </div>\n );\n}\n\n// MultiSelectActions — Select All / Clear action bar\ninterface MultiSelectActionsProps {\n onSelectAll: () => void;\n onClear: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nfunction MultiSelectActions({ onSelectAll, onClear, disabled, className }: MultiSelectActionsProps) {\n return (\n <div\n data-slot=\"multi-select-actions\"\n className={cn('flex items-center justify-between border-t px-3 py-1.5', className)}\n >\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-primary hover:text-primary/80 disabled:pointer-events-none disabled:opacity-50\"\n onClick={onSelectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-muted-foreground hover:text-foreground disabled:pointer-events-none disabled:opacity-50\"\n onClick={onClear}\n >\n Clear\n </button>\n </div>\n );\n}\n\n// MultiSelectList — scrollable listbox container for option rows\ninterface MultiSelectListProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectList({ className, children, ...props }: MultiSelectListProps) {\n return (\n <div\n data-slot=\"multi-select-list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n className={cn('max-h-60 overflow-y-auto p-1', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectRow — a single option row with a checkbox\ninterface MultiSelectRowProps {\n name: string;\n description?: string;\n checked: boolean;\n onToggle: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nconst MultiSelectRow = memo(function MultiSelectRow({\n name,\n description,\n checked,\n onToggle,\n disabled,\n className,\n}: MultiSelectRowProps) {\n function handleClick() {\n if (!disabled) {\n onToggle();\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onToggle();\n }\n }\n\n return (\n <div\n data-slot=\"multi-select-row\"\n role=\"option\"\n aria-selected={checked}\n aria-disabled={disabled}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'relative flex w-full cursor-default gap-2 rounded-md px-2 text-sm outline-hidden select-none',\n description ? 'min-h-11 items-start py-1.5' : 'h-8 items-center py-0',\n 'hover:bg-accent hover:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n data-disabled={disabled ? '' : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {/* Decorative only — the row (role=option) handles toggle/focus; pointer-events-none routes clicks to the row\n so this aria-hidden checkbox never receives focus (avoids the \"aria-hidden on focused element\" warning) */}\n <Checkbox\n checked={checked}\n disabled={disabled}\n tabIndex={-1}\n aria-hidden=\"true\"\n className=\"pointer-events-none self-center\"\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate\">{name}</span>\n {description && <span className=\"mt-0.5 block truncate text-xs text-muted-foreground\">{description}</span>}\n </span>\n </div>\n );\n});\n\n// MultiSelectGroup — wraps a group of rows with a role=\"group\" container\ninterface MultiSelectGroupProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectGroup({ className, children, ...props }: MultiSelectGroupProps) {\n return (\n <div\n data-slot=\"multi-select-group\"\n role=\"group\"\n className={cn('border-t border-border first:border-t-0 pt-1 mt-1 first:pt-0 first:mt-0', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectGroupLabel — styled label for a group header\ninterface MultiSelectGroupLabelProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectGroupLabel({ className, children, ...props }: MultiSelectGroupLabelProps) {\n return (\n <div\n data-slot=\"multi-select-group-label\"\n className={cn('text-primary px-2 py-1 text-[10px] font-semibold uppercase tracking-wide', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectEmpty — displayed when no options match a search filter\ninterface MultiSelectEmptyProps {\n children?: React.ReactNode;\n className?: string;\n}\n\nfunction MultiSelectEmpty({ children, className }: MultiSelectEmptyProps) {\n return (\n <div\n data-slot=\"multi-select-empty\"\n className={cn('flex items-center justify-center py-6 text-sm text-muted-foreground', className)}\n >\n {children ?? 'No options found.'}\n </div>\n );\n}\n\nexport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n MultiSelectTrigger,\n};\n\nexport type {\n MultiSelectActionsProps,\n MultiSelectContentProps,\n MultiSelectEmptyProps,\n MultiSelectGroupLabelProps,\n MultiSelectGroupProps,\n MultiSelectListProps,\n MultiSelectRootProps,\n MultiSelectRowProps,\n MultiSelectSearchProps,\n MultiSelectTriggerProps,\n};\n","import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport type { SelectGroup, SelectOption, SelectValue } from '../types';\n\ninterface UseMultiSelectStateProps {\n options: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n onOptionsSelect?: (options: SelectOption[]) => void;\n defaultValue?: SelectValue[];\n remoteSearch?: boolean;\n}\n\n// Manages controlled/uncontrolled multi-select state, search filtering, and grouping\nexport function useMultiSelect({\n options,\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n defaultValue,\n remoteSearch,\n}: UseMultiSelectStateProps) {\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<SelectValue[]>(defaultValue ?? []);\n const selectedValues = isControlled ? controlledValue : internalValue;\n const selectedSet = useMemo(() => new Set<SelectValue>(selectedValues), [selectedValues]);\n\n // Ref to latest selectedValues so callbacks stay reference-stable\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n const [open, setOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const listboxId = useId();\n\n const optionMap = useMemo(() => {\n const map = new Map<SelectValue, SelectOption>();\n for (const option of options) {\n map.set(option.value, option);\n }\n return map;\n }, [options]);\n\n const filteredOptions = useMemo(() => {\n if (remoteSearch || !searchQuery) return options;\n const lower = searchQuery.toLowerCase();\n return options.filter((option) => option.label.toLowerCase().includes(lower));\n }, [options, searchQuery, remoteSearch]);\n\n const updateSelection = useCallback(\n (nextValues: SelectValue[]) => {\n if (!isControlled) {\n setInternalValue(nextValues);\n }\n onChange?.(nextValues);\n },\n [isControlled, onChange],\n );\n\n // Toggle a single option on or off\n const toggleOption = useCallback(\n (optionValue: SelectValue) => {\n const option = optionMap.get(optionValue);\n if (option?.disabled) return;\n const current = selectedValuesRef.current;\n const nextValues = current.includes(optionValue)\n ? current.filter((v) => v !== optionValue)\n : [...current, optionValue];\n const nextOptions = nextValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(nextOptions);\n updateSelection(nextValues);\n },\n [optionMap, updateSelection, onOptionsSelect],\n );\n\n // Preserve already-selected disabled options when selecting all\n const selectAll = useCallback(() => {\n const enabledValues = options.filter((o) => !o.disabled).map((o) => o.value);\n const currentDisabledValues = selectedValuesRef.current.filter((v) => optionMap.get(v)?.disabled);\n const nextValues = [...new Set([...currentDisabledValues, ...enabledValues])];\n const nextOptions = nextValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(nextOptions);\n updateSelection(nextValues);\n }, [options, optionMap, updateSelection, onOptionsSelect]);\n\n // Retain disabled options that are currently selected when clearing\n const clearAll = useCallback(() => {\n const currentDisabledValues = selectedValuesRef.current.filter((v) => optionMap.get(v)?.disabled);\n const remainingOptions = currentDisabledValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(remainingOptions);\n updateSelection(currentDisabledValues);\n }, [optionMap, updateSelection, onOptionsSelect]);\n\n // Reset search when popover closes\n useEffect(() => {\n if (!open) {\n setSearchQuery('');\n }\n }, [open]);\n\n // Map selected values to their option objects for display\n const selectedOptions = useMemo(\n () => selectedValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[],\n [selectedValues, optionMap],\n );\n\n // Fire onOptionsSelect once when all initial values resolve from the async option map.\n const notifiedInitialRef = useRef<string | null>(null);\n useEffect(() => {\n if (selectedValues.length === 0) return;\n const allResolved = selectedValues.every((v) => optionMap.has(v));\n if (!allResolved) return;\n const key = [...selectedValues].sort().join(',');\n if (notifiedInitialRef.current === key) return;\n notifiedInitialRef.current = key;\n onOptionsSelect?.(selectedOptions);\n }, [selectedOptions, selectedValues, optionMap, onOptionsSelect]);\n\n // O(n + g) grouping — one pass over groups, one pass over options\n const grouped = useMemo(() => {\n if (!groups || groups.length === 0) return null;\n\n const buckets = new Map<string | number, SelectOption[]>();\n for (const g of groups) {\n buckets.set(g.id, []);\n }\n\n const ungrouped: SelectOption[] = [];\n for (const option of filteredOptions) {\n const bucket = option.groupId != null ? buckets.get(option.groupId) : undefined;\n if (bucket) {\n bucket.push(option);\n } else {\n ungrouped.push(option);\n }\n }\n\n const entries: Array<{ name: string; options: SelectOption[] }> = [];\n for (const g of groups) {\n const bucket = buckets.get(g.id);\n if (!bucket || bucket.length === 0) continue;\n entries.push({ name: g.name, options: bucket });\n }\n\n return { ungrouped, entries };\n }, [filteredOptions, groups]);\n\n return {\n selectedValues,\n selectedSet,\n selectedOptions,\n open,\n setOpen,\n searchQuery,\n setSearchQuery,\n listboxId,\n filteredOptions,\n grouped,\n toggleOption,\n selectAll,\n clearAll,\n };\n}\n","import { Loader2, X } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef } from 'react';\nimport { Badge } from '../../../../../shadcn/shadcnBadge';\nimport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n MultiSelectTrigger,\n} from '../../../../../shadcn/shadcnMultiSelect';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '../../../Field';\nimport { useMultiSelect } from '../../hooks/useMultiSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue } from '../../types';\n\nexport interface MultiSelectProps {\n label?: string;\n description?: React.ReactNode;\n error?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n onOptionsSelect?: (options: SelectOption[]) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValue[];\n maxDisplayedItems?: number;\n searchable?: boolean;\n searchPlaceholder?: string;\n asyncState?: AsyncSelectState;\n transformLabel?: (label: string, option: SelectOption, context: 'option' | 'trigger') => string;\n transformDescription?: (description: string, option: SelectOption) => string;\n onOpenChange?: (open: boolean) => void;\n}\n\n// Multi-value select with checkbox options, search, and badge chips\nexport const MultiSelect = forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n label,\n description,\n error,\n placeholder = 'Select options',\n options,\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n maxDisplayedItems = 3,\n searchable = false,\n searchPlaceholder = 'Search...',\n asyncState,\n transformLabel,\n transformDescription,\n onOpenChange,\n },\n ref,\n ) => {\n const state = useMultiSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Notifies parent (Select.tsx) of open state changes to gate async queries; clears async search on close\n function handleOpenChange(o: boolean) {\n state.setOpen(o);\n onOpenChange?.(o);\n if (!o) asyncState?.setSearchQuery('');\n }\n\n // Resolve search binding -- async delegates to parent, static uses local state\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n const showSearch = !!asyncState || searchable;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n const optionLabel = transformLabel ? transformLabel(option.label, option, 'option') : option.label;\n const optionDescription = option.description\n ? transformDescription\n ? transformDescription(option.description, option)\n : option.description\n : undefined;\n\n return (\n <MultiSelectRow\n key={String(option.value)}\n name={optionLabel}\n description={optionDescription}\n checked={state.selectedSet.has(option.value)}\n onToggle={() => {\n state.toggleOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <MultiSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <MultiSelectGroup key={entry.name}>\n <MultiSelectGroupLabel>{entry.name}</MultiSelectGroupLabel>\n {entry.options.map(renderRow)}\n </MultiSelectGroup>\n ))}\n </>\n );\n }\n\n // Renders badge chips, count summary, or placeholder inside the trigger\n function renderTriggerContent() {\n if (state.selectedOptions.length === 0) {\n return <span className=\"text-muted-foreground\">{placeholder}</span>;\n }\n\n if (state.selectedOptions.length > maxDisplayedItems) {\n return <span className=\"text-sm\">{state.selectedOptions.length} items selected</span>;\n }\n\n return (\n <span className=\"flex flex-wrap items-center gap-1\">\n {state.selectedOptions.map((option) => (\n <Badge key={String(option.value)} variant=\"secondary\" className=\"gap-1 pr-1\">\n {transformLabel ? transformLabel(option.label, option, 'trigger') : option.label}\n {/* biome-ignore lint/a11y/useSemanticElements: must stay a span — it's nested inside the trigger's\n <button>, and a nested native <button> is invalid HTML */}\n <span\n role=\"button\"\n tabIndex={0}\n aria-label={`Remove ${option.label}`}\n className=\"inline-flex cursor-pointer rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation();\n state.toggleOption(option.value);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n state.toggleOption(option.value);\n }\n }}\n >\n <X className=\"size-3 text-muted-foreground hover:text-foreground\" />\n </span>\n </Badge>\n ))}\n </span>\n );\n }\n\n return (\n <Field data-disabled={disabled}>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <MultiSelectRoot open={state.open} onOpenChange={handleOpenChange} disabled={disabled}>\n <MultiSelectTrigger\n ref={ref}\n id={id}\n open={state.open}\n listboxId={state.listboxId}\n aria-invalid={!!error}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={className}\n >\n <span className=\"flex flex-1 flex-wrap items-center gap-1 overflow-hidden\">{renderTriggerContent()}</span>\n </MultiSelectTrigger>\n\n <MultiSelectContent>\n {showSearch && (\n <MultiSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n )}\n\n <MultiSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </MultiSelectList>\n\n <MultiSelectActions onSelectAll={state.selectAll} onClear={state.clearAll} disabled={disabled} />\n </MultiSelectContent>\n </MultiSelectRoot>\n\n {name && state.selectedValues.map((v) => <input key={String(v)} type=\"hidden\" name={name} value={String(v)} />)}\n\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n {error && <FieldError>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n","import { keepPreviousData, useInfiniteQuery, useQuery } from '@tanstack/react-query';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport { axios } from '../../../utils/axios';\nimport type { SelectFieldKeys, SelectGroup, SelectOption, SelectOptionsResponse, SelectValue } from '../types';\n\nexport interface UseSelectProps {\n options?: SelectOption[];\n groups?: SelectGroup[];\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n selectedValues?: SelectValue[];\n enabled?: boolean;\n open?: boolean;\n}\n\nexport interface UseSelectReturn {\n options: SelectOption[];\n groups: SelectGroup[];\n loading: boolean;\n loadingMore: boolean;\n hasMore: boolean;\n searchQuery: string;\n setSearchQuery: (q: string) => void;\n sentinelRef: (node?: Element | null) => void;\n}\n\nconst NOOP_REF = () => {};\n\n// Stable JSON serialization for query keys (order-independent)\nexport function stableStringify(obj: object | undefined): string {\n if (!obj) return '';\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n// Manages async option fetching with debounced search, sentinel-based infinite scroll, and selected value resolution\nexport function useSelect({\n options: staticOptions,\n groups: staticGroups,\n optionsEndpoint,\n searchDebounceMs = 300,\n limit = 20,\n fieldKeys,\n params,\n selectedValues,\n enabled,\n open,\n}: UseSelectProps): UseSelectReturn {\n const isAsync = !!optionsEndpoint;\n const [searchQuery, setSearchQuery] = useState('');\n const [debouncedSearch, setDebouncedSearch] = useState('');\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Debounce search input\n useEffect(() => {\n if (!isAsync) return;\n if (debounceRef.current) clearTimeout(debounceRef.current);\n if (searchQuery === '') {\n setDebouncedSearch('');\n return;\n }\n debounceRef.current = setTimeout(() => {\n setDebouncedSearch(searchQuery);\n }, searchDebounceMs);\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, [searchQuery, searchDebounceMs, isAsync]);\n\n // Serialize selected values to a comma-separated string of IDs (filters out booleans)\n const serializedValues = useMemo(\n () =>\n selectedValues && selectedValues.length > 0\n ? selectedValues.filter((v): v is string | number => typeof v !== 'boolean').join(',')\n : undefined,\n [selectedValues],\n );\n\n // Latest selection in a ref so the freeze effect can read it without depending on the (per-render) array identity\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n // Selection used to resolve + order options, snapshotted on open and frozen for the session, re-captured on next open\n const [resolveValues, setResolveValues] = useState(selectedValues);\n useEffect(() => {\n if (open) setResolveValues(selectedValuesRef.current);\n }, [open]);\n\n // While closed, track the bound value so a programmatic change (autofill / async reset) resolves its display\n // label. Keyed on the serialized (stable) value — NOT the array identity — to avoid a render loop.\n useEffect(() => {\n if (!open) setResolveValues(selectedValuesRef.current);\n }, [serializedValues, open]);\n\n const serializedResolveValues = useMemo(\n () =>\n resolveValues && resolveValues.length > 0\n ? resolveValues.filter((v): v is string | number => typeof v !== 'boolean').join(',')\n : undefined,\n [resolveValues],\n );\n\n // Query 1: Resolve selected values to full option objects\n const { data: resolvedSelected } = useQuery({\n queryKey: [\n 'select-resolve',\n optionsEndpoint,\n stableStringify(fieldKeys),\n stableStringify(params),\n JSON.stringify(resolveValues),\n ],\n queryFn: () =>\n axios\n .get<SelectOptionsResponse>(optionsEndpoint ?? '', {\n params: { values: serializedResolveValues, ...fieldKeys, ...params },\n showSuccessToast: false,\n showErrorToast: false,\n })\n .then((r) => r.data),\n enabled: isAsync && (resolveValues?.length ?? 0) > 0,\n staleTime: 5 * 60_000,\n placeholderData: keepPreviousData,\n });\n\n // Query 2: Paginated search results, excluding selected IDs\n const { data, isFetching, isFetchingNextPage, fetchNextPage, hasNextPage } = useInfiniteQuery({\n queryKey: ['select-search', optionsEndpoint, debouncedSearch, stableStringify(fieldKeys), stableStringify(params)],\n queryFn: ({ pageParam = 0 }) =>\n axios\n .get<SelectOptionsResponse>(optionsEndpoint ?? '', {\n params: {\n search: debouncedSearch || undefined,\n limit,\n offset: pageParam,\n excludeIds: serializedValues,\n ...fieldKeys,\n ...params,\n },\n showSuccessToast: false,\n showErrorToast: false,\n })\n .then((r) => r.data),\n getNextPageParam: (lastPage, _allPages, lastPageParam) => (lastPage.hasMore ? lastPageParam + limit : undefined),\n initialPageParam: 0,\n enabled: isAsync && enabled !== false,\n staleTime: 0,\n refetchOnMount: 'always',\n });\n\n // Merge options with value-based dedup; during active search show only live results, not previously selected options\n const fetchedOptions = useMemo(() => {\n const searchResults = data?.pages.flatMap((p) => p.options) ?? [];\n const selected = resolvedSelected?.options ?? [];\n const uniqueByValue = new Map<string, SelectOption>();\n const makeKey = (value: SelectValue) => `${typeof value}:${String(value)}`;\n\n if (debouncedSearch.trim().length === 0) {\n for (const option of selected) {\n if (resolveValues?.includes(option.value)) {\n uniqueByValue.set(makeKey(option.value), option);\n }\n }\n }\n for (const option of searchResults) {\n const key = makeKey(option.value);\n if (!uniqueByValue.has(key)) {\n uniqueByValue.set(key, option);\n }\n }\n\n return Array.from(uniqueByValue.values());\n }, [resolvedSelected, data, debouncedSearch, resolveValues]);\n\n const fetchedGroups = data?.pages[0]?.groups ?? staticGroups ?? [];\n const hasSearchResultsData = (data?.pages.length ?? 0) > 0;\n\n // IntersectionObserver sentinel for infinite scroll\n const { ref: sentinelRef, inView } = useInView();\n useEffect(() => {\n if (inView && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n }, [inView, hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n // Static mode\n if (!isAsync) {\n return {\n options: staticOptions ?? [],\n groups: staticGroups ?? [],\n loading: false,\n loadingMore: false,\n hasMore: false,\n searchQuery,\n setSearchQuery,\n sentinelRef: NOOP_REF,\n };\n }\n\n return {\n options: fetchedOptions,\n groups: fetchedGroups,\n loading: isFetching && !isFetchingNextPage && !hasSearchResultsData,\n loadingMore: isFetchingNextPage,\n hasMore: hasNextPage ?? false,\n searchQuery,\n setSearchQuery,\n sentinelRef,\n };\n}\n","import type React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { MultiSelect, type MultiSelectProps } from './components/MultiSelect/MultiSelect';\nimport { SingleSelect, type SingleSelectProps } from './components/SingleSelect/SingleSelect';\nimport { useSelect } from './hooks/useSelect';\nimport type { AsyncSelectState, SelectFieldKeys } from './types';\n\ninterface SelectBaseProps {\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n}\n\nexport interface SelectProps extends Omit<SingleSelectProps & MultiSelectProps, 'value' | 'onChange'>, SelectBaseProps {\n multiple?: boolean;\n value?: SingleSelectProps['value'] | MultiSelectProps['value'];\n onChange?: SingleSelectProps['onChange'] | MultiSelectProps['onChange'];\n}\n\nexport type SelectSingleProps = SelectProps;\nexport type SelectMultiProps = SelectProps;\n\n// Unified select field supporting single/multi selection and default/filter variants\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>((props, ref) => {\n const { multiple, optionsEndpoint, searchDebounceMs, limit, fieldKeys, params, onOpenChange, ...rest } = props;\n const [open, setOpen] = useState(false);\n\n const selectData = useSelect({\n options: rest.options,\n groups: rest.groups,\n optionsEndpoint,\n searchDebounceMs,\n limit,\n fieldKeys,\n params,\n selectedValues: rest.value != null ? (Array.isArray(rest.value) ? rest.value : [rest.value]) : undefined,\n enabled: open,\n open,\n });\n\n const isAsync = !!optionsEndpoint;\n\n const asyncState: AsyncSelectState | undefined = isAsync\n ? {\n loading: selectData.loading,\n loadingMore: selectData.loadingMore,\n hasMore: selectData.hasMore,\n searchQuery: selectData.searchQuery,\n setSearchQuery: selectData.setSearchQuery,\n sentinelRef: selectData.sentinelRef,\n }\n : undefined;\n\n const childProps = {\n ...rest,\n options: selectData.options,\n groups: selectData.groups,\n asyncState,\n };\n\n // Scope async queries to the open popover lifecycle so reopening reuses cached data and refetches in the background.\n const handleOpenChange = (o: boolean) => {\n setOpen(o);\n onOpenChange?.(o);\n };\n\n if (multiple) {\n return <MultiSelect ref={ref} {...(childProps as MultiSelectProps)} onOpenChange={handleOpenChange} />;\n }\n return <SingleSelect ref={ref} {...(childProps as SingleSelectProps)} onOpenChange={handleOpenChange} />;\n}) as React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;\n\nSelect.displayName = 'Select';\n"],"names":["ChevronDownIcon","SearchIcon","MultiSelectRow","Loader2"],"mappings":"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"}
|
package/dist/SingleSelect.js
CHANGED
|
@@ -402,7 +402,7 @@ const SingleSelect = forwardRef(
|
|
|
402
402
|
] });
|
|
403
403
|
}
|
|
404
404
|
if (anchor) {
|
|
405
|
-
return /* @__PURE__ */ jsxs(Field, { children: [
|
|
405
|
+
return /* @__PURE__ */ jsxs(Field, { "data-disabled": disabled, children: [
|
|
406
406
|
label && /* @__PURE__ */ jsx(FieldLabel, { children: label }),
|
|
407
407
|
/* @__PURE__ */ jsxs(SingleSelectRoot, { open: state.open, onOpenChange: handleOpenChange, disabled, children: [
|
|
408
408
|
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: anchor({ selectedOption: state.selectedOption, open: state.open, disabled }) }),
|
|
@@ -413,7 +413,7 @@ const SingleSelect = forwardRef(
|
|
|
413
413
|
error && /* @__PURE__ */ jsx(FieldError, { children: error })
|
|
414
414
|
] });
|
|
415
415
|
}
|
|
416
|
-
return /* @__PURE__ */ jsxs(Field, { children: [
|
|
416
|
+
return /* @__PURE__ */ jsxs(Field, { "data-disabled": disabled, children: [
|
|
417
417
|
label && /* @__PURE__ */ jsx(FieldLabel, { children: label }),
|
|
418
418
|
/* @__PURE__ */ jsxs(SingleSelectRoot, { open: state.open, onOpenChange: handleOpenChange, disabled, children: [
|
|
419
419
|
/* @__PURE__ */ jsx(
|