mirror of
				https://gitlab.nic.cz/turris/reforis/foris-js.git
				synced 2025-11-03 23:00:31 +01:00 
			
		
		
		
	Add custom order ability of Select options
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
 | 
			
		||||
 * Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
 | 
			
		||||
 *
 | 
			
		||||
 * This is free software, licensed under the GNU General Public License v3.
 | 
			
		||||
 * See /LICENSE for more information.
 | 
			
		||||
@@ -18,18 +18,23 @@ Select.propTypes = {
 | 
			
		||||
    value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
 | 
			
		||||
    /** Help text message. */
 | 
			
		||||
    helpText: PropTypes.string,
 | 
			
		||||
    /** Turns on/off alphabetical ordering of the Select options. */
 | 
			
		||||
    customOrder: PropTypes.bool,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export function Select({ label, choices, helpText, ...props }) {
 | 
			
		||||
export function Select({ label, choices, helpText, customOrder, ...props }) {
 | 
			
		||||
    const uid = useUID();
 | 
			
		||||
 | 
			
		||||
    const options = Object.keys(choices)
 | 
			
		||||
        .sort((a, b) => a - b || a.toString().localeCompare(b.toString()))
 | 
			
		||||
        .map((key) => (
 | 
			
		||||
            <option key={key} value={key}>
 | 
			
		||||
                {choices[key]}
 | 
			
		||||
            </option>
 | 
			
		||||
        ));
 | 
			
		||||
    const keys = Object.keys(choices);
 | 
			
		||||
    if (!customOrder) {
 | 
			
		||||
        keys.sort((a, b) => a - b || a.toString().localeCompare(b.toString()));
 | 
			
		||||
    }
 | 
			
		||||
    const options = keys.map((key) => (
 | 
			
		||||
        <option key={key} value={key}>
 | 
			
		||||
            {choices[key]}
 | 
			
		||||
        </option>
 | 
			
		||||
    ));
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
        <div className="form-group">
 | 
			
		||||
            <label htmlFor={uid}>{label}</label>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user