From 7f931855a5ddd07ffa35e51c61f9f6263637f073 Mon Sep 17 00:00:00 2001 From: Timo Reymann Date: Fri, 17 Feb 2023 12:44:41 +0100 Subject: [PATCH] fix: Fix select after refactor --- src/prompts.sh | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/prompts.sh b/src/prompts.sh index 4479115..53d40e3 100644 --- a/src/prompts.sh +++ b/src/prompts.sh @@ -59,16 +59,6 @@ _increment_selected() { echo -n $selected } -# checks if $1 contains element $2 -_contains() { - items=$1 - search=$2 - for item in "${items[@]}"; do - if [ "$item" == "$search" ]; then return 0; fi - done - return 1 -} - # @description Prompt for text # @arg $1 string Phrase for prompting to text # @stderr Instructions for user @@ -203,12 +193,14 @@ checkbox() { local idx=0 for opt in "${opts[@]}"; do _cursor_to $((startrow + idx)) - local icon - if _contains "${checked[*]}" $idx; then - icon=$(echo -en "\u25C9") - else - icon=$(echo -en "\u25EF") - fi + local icon="◯" + for item in "${checked[@]}"; do + if [ "$item" == "$idx" ]; then + icon="◉" + break; + fi + done + if [ $idx -eq $selected ]; then printf "%s \e[0m\e[36m\u276F\e[0m \e[36m%-50s\e[0m" "$icon" "$opt" >&2 else @@ -221,8 +213,15 @@ checkbox() { case $(_key_input) in enter) break;; space) - if _contains "${checked[*]}" $selected; then - checked=( "${checked[@]/$selected}" ) + local found=0; + for item in "${checked[@]}"; do + if [ "$item" == "$selected" ]; then + found=1 + break; + fi + done + if [ $found -eq 1 ]; then + checked=( "${checked[@]/$selected}" ) else checked+=("${selected}") fi @@ -236,7 +235,7 @@ checkbox() { _cursor_to "${lastrow}" _cursor_blink_on - IFS=" " echo -n "${checked[@]}" + IFS="" echo -n "${checked[@]}" } # @description Show password prompt displaying stars for each password character letter typed