diff options
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/bip39-generator/bip39-generator.vue | 12 | ||||
-rw-r--r-- | src/tools/camera-recorder/camera-recorder.vue | 35 | ||||
-rw-r--r-- | src/tools/date-time-converter/date-time-converter.vue | 6 | ||||
-rw-r--r-- | src/tools/encryption/encryption.vue | 22 | ||||
-rw-r--r-- | src/tools/eta-calculator/eta-calculator.vue | 16 | ||||
-rw-r--r-- | src/tools/hash-text/hash-text.vue | 46 | ||||
-rw-r--r-- | src/tools/hmac-generator/hmac-generator.vue | 60 | ||||
-rw-r--r-- | src/tools/list-converter/list-converter.vue | 24 | ||||
-rw-r--r-- | src/tools/meta-tag-generator/meta-tag-generator.vue | 8 | ||||
-rw-r--r-- | src/tools/mime-types/mime-types.vue | 32 | ||||
-rw-r--r-- | src/tools/phone-parser-and-formatter/phone-parser-and-formatter.vue | 4 | ||||
-rw-r--r-- | src/tools/qr-code-generator/qr-code-generator.vue | 15 | ||||
-rw-r--r-- | src/tools/sql-prettify/sql-prettify.vue | 80 |
13 files changed, 180 insertions, 180 deletions
diff --git a/src/tools/bip39-generator/bip39-generator.vue b/src/tools/bip39-generator/bip39-generator.vue index 6c2af7b..03c1fe3 100644 --- a/src/tools/bip39-generator/bip39-generator.vue +++ b/src/tools/bip39-generator/bip39-generator.vue @@ -84,12 +84,12 @@ const { copy: copyPassphrase } = useCopy({ source: passphrase, text: 'Passphrase <div> <n-grid cols="3" x-gap="12"> <n-gi span="1"> - <n-form-item label="Language:"> - <n-select - v-model:value="language" - :options="Object.keys(languages).map((label) => ({ label, value: label }))" - /> - </n-form-item> + <c-select + v-model:value="language" + searchable + label="Language:" + :options="Object.keys(languages)" + /> </n-gi> <n-gi span="2"> <n-form-item diff --git a/src/tools/camera-recorder/camera-recorder.vue b/src/tools/camera-recorder/camera-recorder.vue index 19fe30b..34ce39a 100644 --- a/src/tools/camera-recorder/camera-recorder.vue +++ b/src/tools/camera-recorder/camera-recorder.vue @@ -122,23 +122,24 @@ function downloadMedia({ type, value, createdAt }: Media) { </c-card> <c-card v-else> - <div flex gap-2> - <div flex-1> - <div>Video</div> - <n-select - v-model:value="currentCamera" - :options="cameras.map(({ deviceId, label }) => ({ value: deviceId, label }))" - placeholder="Select camera" - /> - </div> - <div v-if="currentMicrophone && microphones.length > 0" flex-1> - <div>Audio</div> - <n-select - v-model:value="currentMicrophone" - :options="microphones.map(({ deviceId, label }) => ({ value: deviceId, label }))" - placeholder="Select microphone" - /> - </div> + <div flex flex-col gap-2> + <c-select + v-model:value="currentCamera" + label-position="left" + label-width="60px" + label="Video:" + :options="cameras.map(({ deviceId, label }) => ({ value: deviceId, label }))" + placeholder="Select camera" + /> + <c-select + v-if="currentMicrophone && microphones.length > 0" + v-model:value="currentMicrophone" + label="Audio:" + label-position="left" + label-width="60px" + :options="microphones.map(({ deviceId, label }) => ({ value: deviceId, label }))" + placeholder="Select microphone" + /> </div> <div v-if="!isMediaStreamAvailable" mt-3 flex justify-center> diff --git a/src/tools/date-time-converter/date-time-converter.vue b/src/tools/date-time-converter/date-time-converter.vue index fcebce8..79f9218 100644 --- a/src/tools/date-time-converter/date-time-converter.vue +++ b/src/tools/date-time-converter/date-time-converter.vue @@ -142,7 +142,7 @@ function formatDateUsingFormatter(formatter: (date: Date) => string, date?: Date <template> <div> - <n-input-group> + <div flex gap-2> <c-input-text v-model:value="inputDate" autofocus @@ -153,13 +153,13 @@ function formatDateUsingFormatter(formatter: (date: Date) => string, date?: Date @update:value="onDateInputChanged" /> - <n-select + <c-select v-model:value="formatIndex" style="flex: 0 0 170px" :options="formats.map(({ name }, i) => ({ label: name, value: i }))" data-test-id="date-time-converter-format-select" /> - </n-input-group> + </div> <n-divider /> diff --git a/src/tools/encryption/encryption.vue b/src/tools/encryption/encryption.vue index a11a307..4a348f8 100644 --- a/src/tools/encryption/encryption.vue +++ b/src/tools/encryption/encryption.vue @@ -29,12 +29,11 @@ const decryptOutput = computed(() => <div flex flex-1 flex-col gap-2> <c-input-text v-model:value="cypherSecret" label="Your secret key:" clearable raw-text /> - <n-form-item label="Encryption algorithm:" :show-feedback="false"> - <n-select - v-model:value="cypherAlgo" - :options="Object.keys(algos).map((label) => ({ label, value: label }))" - /> - </n-form-item> + <c-select + v-model:value="cypherAlgo" + label="Encryption algorithm:" + :options="Object.keys(algos).map((label) => ({ label, value: label }))" + /> </div> </div> <c-input-text @@ -57,12 +56,11 @@ const decryptOutput = computed(() => <div flex flex-1 flex-col gap-2> <c-input-text v-model:value="decryptSecret" label="Your secret key:" clearable raw-text /> - <n-form-item label="Encryption algorithm:" :show-feedback="false"> - <n-select - v-model:value="decryptAlgo" - :options="Object.keys(algos).map((label) => ({ label, value: label }))" - /> - </n-form-item> + <c-select + v-model:value="decryptAlgo" + label="Encryption algorithm:" + :options="Object.keys(algos).map((label) => ({ label, value: label }))" + /> </div> </div> <c-input-text diff --git a/src/tools/eta-calculator/eta-calculator.vue b/src/tools/eta-calculator/eta-calculator.vue index 8a45fc5..a81a77d 100644 --- a/src/tools/eta-calculator/eta-calculator.vue +++ b/src/tools/eta-calculator/eta-calculator.vue @@ -39,13 +39,15 @@ const endAt = computed(() => </n-form-item> </div> - <n-form-item label="Amount of unit consumed by time span" :show-feedback="false"> + <p>Amount of unit consumed by time span</p> + <div flex flex-col items-baseline gap-y-2 md:flex-row> <n-input-number v-model:value="unitPerTimeSpan" :min="1" /> - <span mx-3>in</span> - <n-input-group> - <n-input-number v-model:value="timeSpan" :min="1" /> - <n-select + <div flex items-baseline gap-2> + <span ml-2>in</span> + <n-input-number v-model:value="timeSpan" min-w-130px :min="1" /> + <c-select v-model:value="timeSpanUnitMultiplier" + min-w-130px :options="[ { label: 'milliseconds', value: 1 }, { label: 'seconds', value: 1000 }, @@ -54,8 +56,8 @@ const endAt = computed(() => { label: 'days', value: 1000 * 60 * 60 * 24 }, ]" /> - </n-input-group> - </n-form-item> + </div> + </div> <n-divider /> <c-card mb-2> diff --git a/src/tools/hash-text/hash-text.vue b/src/tools/hash-text/hash-text.vue index d367407..6eae981 100644 --- a/src/tools/hash-text/hash-text.vue +++ b/src/tools/hash-text/hash-text.vue @@ -41,29 +41,29 @@ const hashText = (algo: AlgoNames, value: string) => formatWithEncoding(algos[al <n-divider /> - <n-form-item label="Digest encoding"> - <n-select - v-model:value="encoding" - :options="[ - { - label: 'Binary (base 2)', - value: 'Bin', - }, - { - label: 'Hexadecimal (base 16)', - value: 'Hex', - }, - { - label: 'Base64 (base 64)', - value: 'Base64', - }, - { - label: 'Base64url (base 64 with url safe chars)', - value: 'Base64url', - }, - ]" - /> - </n-form-item> + <c-select + v-model:value="encoding" + mb-4 + label="Digest encoding" + :options="[ + { + label: 'Binary (base 2)', + value: 'Bin', + }, + { + label: 'Hexadecimal (base 16)', + value: 'Hex', + }, + { + label: 'Base64 (base 64)', + value: 'Base64', + }, + { + label: 'Base64url (base 64 with url safe chars)', + value: 'Base64url', + }, + ]" + /> <div v-for="algo in algoNames" :key="algo" style="margin: 5px 0"> <n-input-group> diff --git a/src/tools/hmac-generator/hmac-generator.vue b/src/tools/hmac-generator/hmac-generator.vue index 463e27b..fda3988 100644 --- a/src/tools/hmac-generator/hmac-generator.vue +++ b/src/tools/hmac-generator/hmac-generator.vue @@ -51,37 +51,35 @@ const { copy } = useCopy({ source: hmac }); <c-input-text v-model:value="secret" raw-text placeholder="Enter the secret key..." label="Secret key" clearable /> <div flex gap-2> - <n-form-item label="Hashing function" flex-1> - <n-select - v-model:value="hashFunction" - placeholder="Select an hashing function..." - :options="Object.keys(algos).map((label) => ({ label, value: label }))" - /> - </n-form-item> - <n-form-item label="Output encoding" flex-1> - <n-select - v-model:value="encoding" - placeholder="Select the result encoding..." - :options="[ - { - label: 'Binary (base 2)', - value: 'Bin', - }, - { - label: 'Hexadecimal (base 16)', - value: 'Hex', - }, - { - label: 'Base64 (base 64)', - value: 'Base64', - }, - { - label: 'Base64-url (base 64 with url safe chars)', - value: 'Base64url', - }, - ]" - /> - </n-form-item> + <c-select + v-model:value="hashFunction" label="Hashing function" + flex-1 + placeholder="Select an hashing function..." + :options="Object.keys(algos).map((label) => ({ label, value: label }))" + /> + <c-select + v-model:value="encoding" label="Output encoding" + flex-1 + placeholder="Select the result encoding..." + :options="[ + { + label: 'Binary (base 2)', + value: 'Bin', + }, + { + label: 'Hexadecimal (base 16)', + value: 'Hex', + }, + { + label: 'Base64 (base 64)', + value: 'Base64', + }, + { + label: 'Base64-url (base 64 with url safe chars)', + value: 'Base64url', + }, + ]" + /> </div> <input-copyable v-model:value="hmac" type="textarea" placeholder="The result of the HMAC..." label="HMAC of your text" /> <div flex justify-center> diff --git a/src/tools/list-converter/list-converter.vue b/src/tools/list-converter/list-converter.vue index 2e6d2b3..19dd30e 100644 --- a/src/tools/list-converter/list-converter.vue +++ b/src/tools/list-converter/list-converter.vue @@ -61,17 +61,19 @@ function transformer(value: string) { </n-form-item> </div> <div flex-1> - <n-form-item label="Sort list" label-placement="left" label-width="120" :show-feedback="false" mb-2> - <n-select - v-model:value="conversionConfig.sortList" - :options="sortOrderOptions" - clearable - w-full - :disabled="conversionConfig.reverseList" - data-test-id="sortList" - placeholder="Sort alphabetically" - /> - </n-form-item> + <c-select + v-model:value="conversionConfig.sortList" + label="Sort list" + label-position="left" + label-width="120px" + label-align="right" + mb-2 + :options="sortOrderOptions" + w-full + :disabled="conversionConfig.reverseList" + data-test-id="sortList" + placeholder="Sort alphabetically" + /> <c-input-text v-model:value="conversionConfig.separator" diff --git a/src/tools/meta-tag-generator/meta-tag-generator.vue b/src/tools/meta-tag-generator/meta-tag-generator.vue index de8a0c6..aafa779 100644 --- a/src/tools/meta-tag-generator/meta-tag-generator.vue +++ b/src/tools/meta-tag-generator/meta-tag-generator.vue @@ -53,12 +53,15 @@ const metaTags = computed(() => { <template> <div> <div v-for="{ name, elements } of sections" :key="name" style="margin-bottom: 15px"> - <n-form-item :label="name" :show-feedback="false" /> + <div mb-5px> + {{ name }} + </div> <n-input-group v-for="{ key, type, label, placeholder, ...element } of elements" :key="key"> <n-input-group-label style="flex: 0 0 110px"> {{ label }} </n-input-group-label> + <c-input-text v-if="type === 'input'" v-model:value="metadata[key]" :placeholder="placeholder" clearable /> <n-dynamic-input v-else-if="type === 'input-multiple'" @@ -69,9 +72,10 @@ const metaTags = computed(() => { :show-sort-button="true" /> - <n-select + <c-select v-else-if="type === 'select'" v-model:value="metadata[key]" + w-full :placeholder="placeholder" :options="(element as OGSchemaTypeElementSelect).options" /> diff --git a/src/tools/mime-types/mime-types.vue b/src/tools/mime-types/mime-types.vue index 80eba60..3bd7611 100644 --- a/src/tools/mime-types/mime-types.vue +++ b/src/tools/mime-types/mime-types.vue @@ -26,15 +26,13 @@ const mimeTypeFound = computed(() => (selectedExtension.value ? extensionToMimeT <div style="opacity: 0.8"> Know which file extensions are associated to a mime-type </div> - <n-form-item> - <n-select - v-model:value="selectedMimeType" - filterable - :options="mimeToExtensionsOptions" - size="large" - placeholder="Select your mimetype here... (ex: application/pdf)" - /> - </n-form-item> + <c-select + v-model:value="selectedMimeType" + searchable + my-4 + :options="mimeToExtensionsOptions" + placeholder="Select your mimetype here... (ex: application/pdf)" + /> <div v-if="extensionsFound.length > 0"> Extensions of files with the <n-tag round :bordered="false"> @@ -62,15 +60,13 @@ const mimeTypeFound = computed(() => (selectedExtension.value ? extensionToMimeT <div style="opacity: 0.8"> Know which mime type is associated to a file extension </div> - <n-form-item> - <n-select - v-model:value="selectedExtension" - filterable - :options="extensionToMimeTypeOptions" - size="large" - placeholder="Select your mimetype here... (ex: application/pdf)" - /> - </n-form-item> + <c-select + v-model:value="selectedExtension" + searchable + my-4 + :options="extensionToMimeTypeOptions" + placeholder="Select your mimetype here... (ex: application/pdf)" + /> <div v-if="selectedExtension"> Mime type associated to the extension <n-tag round :bordered="false"> diff --git a/src/tools/phone-parser-and-formatter/phone-parser-and-formatter.vue b/src/tools/phone-parser-and-formatter/phone-parser-and-formatter.vue index fde65f4..5bc6778 100644 --- a/src/tools/phone-parser-and-formatter/phone-parser-and-formatter.vue +++ b/src/tools/phone-parser-and-formatter/phone-parser-and-formatter.vue @@ -85,9 +85,7 @@ const countriesOptions = getCountries().map(code => ({ <template> <div> - <n-form-item label="Default country code:"> - <n-select v-model:value="defaultCountryCode" :options="countriesOptions" filterable /> - </n-form-item> + <c-select v-model:value="defaultCountryCode" label="Default country code:" :options="countriesOptions" searchable mb-5 /> <c-input-text v-model:value="rawPhone" diff --git a/src/tools/qr-code-generator/qr-code-generator.vue b/src/tools/qr-code-generator/qr-code-generator.vue index f0c6ac2..8bc9f74 100644 --- a/src/tools/qr-code-generator/qr-code-generator.vue +++ b/src/tools/qr-code-generator/qr-code-generator.vue @@ -35,6 +35,7 @@ const { download } = useDownloadFileFromBase64({ source: qrcode, filename: 'qr-c label="Text:" multiline rows="1" + autosize placeholder="Your link or text..." mb-6 /> @@ -45,12 +46,14 @@ const { download } = useDownloadFileFromBase64({ source: qrcode, filename: 'qr-c <n-form-item label="Background color:"> <n-color-picker v-model:value="background" :modes="['hex']" /> </n-form-item> - <n-form-item label="Error resistance:"> - <n-select - v-model:value="errorCorrectionLevel" - :options="errorCorrectionLevels.map((value) => ({ label: value, value }))" - /> - </n-form-item> + <c-select + v-model:value="errorCorrectionLevel" + label="Error resistance:" + label-position="left" + label-width="130px" + label-align="right" + :options="errorCorrectionLevels.map((value) => ({ label: value, value }))" + /> </n-form> </n-gi> <n-gi> diff --git a/src/tools/sql-prettify/sql-prettify.vue b/src/tools/sql-prettify/sql-prettify.vue index a0da8a7..049d6c8 100644 --- a/src/tools/sql-prettify/sql-prettify.vue +++ b/src/tools/sql-prettify/sql-prettify.vue @@ -19,47 +19,45 @@ const prettySQL = computed(() => formatSQL(rawSQL.value, config)); <template> <div style="flex: 0 0 100%"> - <div mx-auto style="max-width: 600px" flex gap-2 :class="{ 'flex-col': styleStore.isSmallScreen }"> - <n-form-item label="Dialect" label-width="500" flex-1> - <n-select - v-model:value="config.language" - :options="[ - { label: 'GCP BigQuery', value: 'bigquery' }, - { label: 'IBM DB2', value: 'db2' }, - { label: 'Apache Hive', value: 'hive' }, - { label: 'MariaDB', value: 'mariadb' }, - { label: 'MySQL', value: 'mysql' }, - { label: 'Couchbase N1QL', value: 'n1ql' }, - { label: 'Oracle PL/SQL', value: 'plsql' }, - { label: 'PostgreSQL', value: 'postgresql' }, - { label: 'Amazon Redshift', value: 'redshift' }, - { label: 'Spark', value: 'spark' }, - { label: 'Standard SQL', value: 'sql' }, - { label: 'sqlite', value: 'sqlite' }, - { label: 'SQL Server Transact-SQL', value: 'tsql' }, - ]" - /> - </n-form-item> - <n-form-item label="Keyword case" flex-1> - <n-select - v-model:value="config.keywordCase" - :options="[ - { label: 'UPPERCASE', value: 'upper' }, - { label: 'lowercase', value: 'lower' }, - { label: 'Preserve', value: 'preserve' }, - ]" - /> - </n-form-item> - <n-form-item label="Indent style" flex-1> - <n-select - v-model:value="config.indentStyle" - :options="[ - { label: 'Standard', value: 'standard' }, - { label: 'Tabular left', value: 'tabularLeft' }, - { label: 'Tabular right', value: 'tabularRight' }, - ]" - /> - </n-form-item> + <div style="max-width: 600px" :class="{ 'flex-col': styleStore.isSmallScreen }" mx-auto mb-5 flex gap-2> + <c-select + v-model:value="config.language" + flex-1 + label="Dialect" + :options="[ + { label: 'GCP BigQuery', value: 'bigquery' }, + { label: 'IBM DB2', value: 'db2' }, + { label: 'Apache Hive', value: 'hive' }, + { label: 'MariaDB', value: 'mariadb' }, + { label: 'MySQL', value: 'mysql' }, + { label: 'Couchbase N1QL', value: 'n1ql' }, + { label: 'Oracle PL/SQL', value: 'plsql' }, + { label: 'PostgreSQL', value: 'postgresql' }, + { label: 'Amazon Redshift', value: 'redshift' }, + { label: 'Spark', value: 'spark' }, + { label: 'Standard SQL', value: 'sql' }, + { label: 'sqlite', value: 'sqlite' }, + { label: 'SQL Server Transact-SQL', value: 'tsql' }, + ]" + /> + <c-select + v-model:value="config.keywordCase" label="Keyword case" + flex-1 + :options="[ + { label: 'UPPERCASE', value: 'upper' }, + { label: 'lowercase', value: 'lower' }, + { label: 'Preserve', value: 'preserve' }, + ]" + /> + <c-select + v-model:value="config.indentStyle" label="Indent style" + flex-1 + :options="[ + { label: 'Standard', value: 'standard' }, + { label: 'Tabular left', value: 'tabularLeft' }, + { label: 'Tabular right', value: 'tabularRight' }, + ]" + /> </div> </div> |