@@ -14,6 +14,7 @@ const numbers = useQueryParamOrStorage({ name: 'nums', storageName: 'pass-genera
1414const capitalize = useQueryParamOrStorage ({ name: ' capitalize' , storageName: ' pass-generator:capitalize' , defaultValue: false });
1515const saltChars = useQueryParamOrStorage ({ name: ' salt' , storageName: ' pass-generator:salt' , defaultValue: ' ' });
1616const separator = useQueryParamOrStorage ({ name: ' sep' , storageName: ' pass-generator:sep' , defaultValue: ' -' });
17+ const minLen = useQueryParamOrStorage ({ name: ' minlen' , storageName: ' pass-generator:minlen' , defaultValue: 0 });
1718const maxLen = useQueryParamOrStorage ({ name: ' maxlen' , storageName: ' pass-generator:maxlen' , defaultValue: 100 });
1819
1920const [passphrases, refreshPassphrases] = computedRefreshable (
@@ -35,7 +36,7 @@ const [passphrases, refreshPassphrases] = computedRefreshable(
3536 }
3637 }
3738
38- let maxIter = 10 ;
39+ let maxIter = 1000 ;
3940 while (maxIter > 0 ) {
4041 const passphrase = generateSillyPassword ({
4142 capitalize: capitalize .value ,
@@ -47,12 +48,13 @@ const [passphrases, refreshPassphrases] = computedRefreshable(
4748 }
4849 return word ;
4950 }).join (separator .value );
50- if (passphrase .length < maxLen .value ) {
51+ if (minLen . value < passphrase . length && passphrase .length < maxLen .value ) {
5152 return passphrase ;
5253 }
5354 maxIter -= 1 ;
5455 }
55- return ` # Cannot generate a passphrase of max ${maxLen .value } characters ` ;
56+ return t (' tools.passphrase-generator.texts.cannot-generate-a-passphrase-of-minlen-value-maxlen-value-characters-please-retry' ,
57+ [minLen .value , maxLen .value ]);
5658 }).join (' \n ' ),
5759);
5860
@@ -63,7 +65,7 @@ const { copy } = useCopy({ source: passphrases, text: t('tools.passphrase-genera
6365 <div >
6466 <c-card >
6567 <n-space >
66- <n-form-item :label =" `Words (${ words})` " label-placement =" left" >
68+ <n-form-item :label =" t('tools.passphrase-generator.texts. words-words', [words]) " label-placement =" left" >
6769 <n-slider v-model:value =" words" :step =" 1" :min =" 1" :max =" 512" mr-2 />
6870 <n-input-number-i18n v-model:value =" words" size =" small" />
6971 </n-form-item >
@@ -74,8 +76,11 @@ const { copy } = useCopy({ source: passphrases, text: t('tools.passphrase-genera
7476 </n-space >
7577
7678 <n-space >
79+ <n-form-item :label =" t('tools.passphrase-generator.texts.label-min-passphrase-len')" label-placement =" left" >
80+ <n-input-number-i18n v-model:value =" minLen" :max =" maxLen" size =" small" />
81+ </n-form-item >
7782 <n-form-item :label =" t('tools.passphrase-generator.texts.label-max-passphrase-len')" label-placement =" left" >
78- <n-input-number-i18n v-model:value =" maxLen" size =" small" />
83+ <n-input-number-i18n v-model:value =" maxLen" :min = " minLen " size =" small" />
7984 </n-form-item >
8085
8186 <n-form-item :label =" t('tools.passphrase-generator.texts.label-capitalize')" label-placement =" left" >
0 commit comments