diff --git a/package-lock.json b/package-lock.json
index 65f2123b..30c4fc6f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,7 +12,9 @@
"dependencies": {
"@electron/remote": "~2.0.1",
"@faker-js/faker": "~6.1.2",
+ "@jamescoyle/vue-icon": "~0.1.2",
"@mdi/font": "~7.2.96",
+ "@mdi/js": "~7.2.96",
"@turf/helpers": "~6.5.0",
"@vueuse/core": "~10.4.1",
"ace-builds": "~1.24.1",
@@ -2018,6 +2020,11 @@
"node": ">= 14"
}
},
+ "node_modules/@jamescoyle/vue-icon": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@jamescoyle/vue-icon/-/vue-icon-0.1.2.tgz",
+ "integrity": "sha512-KFrImXx5TKIi6iQXlnyLEBl4rNosNKbTeRnr70ucTdUaciVmd9qK9d/pZAaKt1Ob/8xNnX2GMp8LisyHdKtEgw=="
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.3",
"dev": true,
@@ -2105,6 +2112,11 @@
"resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.2.96.tgz",
"integrity": "sha512-e//lmkmpFUMZKhmCY9zdjRe4zNXfbOIJnn6xveHbaV2kSw5aJ5dLXUxcRt1Gxfi7ZYpFLUWlkG2MGSFAiqAu7w=="
},
+ "node_modules/@mdi/js": {
+ "version": "7.2.96",
+ "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.2.96.tgz",
+ "integrity": "sha512-paR9M9ZT7rKbh2boksNUynuSZMHhqRYnEZOm/KrZTjQ4/FzyhjLHuvw/8XYzP+E7fS4+/Ms/82EN1pl/OFsiIA=="
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"dev": true,
diff --git a/package.json b/package.json
index 0c5fc68b..0b28c2cf 100644
--- a/package.json
+++ b/package.json
@@ -122,7 +122,9 @@
"dependencies": {
"@electron/remote": "~2.0.1",
"@faker-js/faker": "~6.1.2",
+ "@jamescoyle/vue-icon": "~0.1.2",
"@mdi/font": "~7.2.96",
+ "@mdi/js": "~7.2.96",
"@turf/helpers": "~6.5.0",
"@vueuse/core": "~10.4.1",
"ace-builds": "~1.24.1",
diff --git a/src/renderer/components/BaseIcon.vue b/src/renderer/components/BaseIcon.vue
new file mode 100644
index 00000000..1f4b7730
--- /dev/null
+++ b/src/renderer/components/BaseIcon.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
diff --git a/src/renderer/components/BaseNotification.vue b/src/renderer/components/BaseNotification.vue
index c23bade8..e865f5f5 100644
--- a/src/renderer/components/BaseNotification.vue
+++ b/src/renderer/components/BaseNotification.vue
@@ -1,13 +1,18 @@
-
+
{{ message }}
-
@@ -17,6 +22,8 @@
-
-
diff --git a/src/renderer/components/BaseUploadInput.vue b/src/renderer/components/BaseUploadInput.vue
index eeee9967..628917bf 100644
--- a/src/renderer/components/BaseUploadInput.vue
+++ b/src/renderer/components/BaseUploadInput.vue
@@ -1,14 +1,20 @@
- {{ schema }}
+ {{ schema }}
@@ -120,6 +132,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import QueryEditor from '@/components/QueryEditor.vue';
diff --git a/src/renderer/components/WorkspaceTabNewTriggerFunction.vue b/src/renderer/components/WorkspaceTabNewTriggerFunction.vue
index 2d013d23..2dc7d8ca 100644
--- a/src/renderer/components/WorkspaceTabNewTriggerFunction.vue
+++ b/src/renderer/components/WorkspaceTabNewTriggerFunction.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
+
@@ -99,6 +116,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import QueryEditor from '@/components/QueryEditor.vue';
diff --git a/src/renderer/components/WorkspaceTabNewView.vue b/src/renderer/components/WorkspaceTabNewView.vue
index f0aac320..217dc90a 100644
--- a/src/renderer/components/WorkspaceTabNewView.vue
+++ b/src/renderer/components/WorkspaceTabNewView.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
- {{ schema }}
+ {{ schema }}
@@ -109,6 +121,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import QueryEditor from '@/components/QueryEditor.vue';
diff --git a/src/renderer/components/WorkspaceTabPropsFunction.vue b/src/renderer/components/WorkspaceTabPropsFunction.vue
index 81aab9c1..4a8c74d7 100644
--- a/src/renderer/components/WorkspaceTabPropsFunction.vue
+++ b/src/renderer/components/WorkspaceTabPropsFunction.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
@@ -29,17 +37,29 @@
:disabled="isChanged"
@click="runFunctionCheck"
>
-
+
{{ t('general.run') }}
- {{ schema }}
+ {{ schema }}
@@ -199,6 +219,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import ModalAskParameters from '@/components/ModalAskParameters.vue';
diff --git a/src/renderer/components/WorkspaceTabPropsFunctionParamsModal.vue b/src/renderer/components/WorkspaceTabPropsFunctionParamsModal.vue
index 9217a975..a0da39bb 100644
--- a/src/renderer/components/WorkspaceTabPropsFunctionParamsModal.vue
+++ b/src/renderer/components/WorkspaceTabPropsFunctionParamsModal.vue
@@ -8,7 +8,11 @@
>
-
+
{{ t('database.parameters') }} "{{ func }}"
@@ -19,7 +23,11 @@
@@ -147,7 +168,11 @@
-
+
{{ t('database.thereAreNoParameters') }}
@@ -170,6 +195,7 @@ import { computed, onMounted, onUnmounted, Ref, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseSelect from '@/components/BaseSelect.vue';
const { t } = useI18n();
@@ -307,7 +333,7 @@ onUnmounted(() => {
overflow: auto;
}
-.remove-field .mdi {
+.remove-field svg {
pointer-events: none;
}
diff --git a/src/renderer/components/WorkspaceTabPropsRoutine.vue b/src/renderer/components/WorkspaceTabPropsRoutine.vue
index 0e329b43..56d5ba32 100644
--- a/src/renderer/components/WorkspaceTabPropsRoutine.vue
+++ b/src/renderer/components/WorkspaceTabPropsRoutine.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
@@ -29,17 +37,29 @@
:disabled="isChanged"
@click="runRoutineCheck"
>
-
+
{{ t('general.run') }}
- {{ schema }}
+ {{ schema }}
@@ -171,6 +191,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import ModalAskParameters from '@/components/ModalAskParameters.vue';
diff --git a/src/renderer/components/WorkspaceTabPropsRoutineParamsModal.vue b/src/renderer/components/WorkspaceTabPropsRoutineParamsModal.vue
index 070e94af..09d17952 100644
--- a/src/renderer/components/WorkspaceTabPropsRoutineParamsModal.vue
+++ b/src/renderer/components/WorkspaceTabPropsRoutineParamsModal.vue
@@ -8,7 +8,11 @@
>
-
+
{{ t('database.parameters') }} "{{ routine }}"
@@ -19,7 +23,11 @@
@@ -135,7 +156,11 @@
-
+
{{ t('database.thereAreNoParameters') }}
@@ -158,6 +183,7 @@ import { computed, onMounted, onUnmounted, Ref, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseSelect from '@/components/BaseSelect.vue';
const { t } = useI18n();
@@ -295,7 +321,7 @@ onUnmounted(() => {
overflow: auto;
}
-.remove-field .mdi {
+.remove-field svg {
pointer-events: none;
}
diff --git a/src/renderer/components/WorkspaceTabPropsScheduler.vue b/src/renderer/components/WorkspaceTabPropsScheduler.vue
index 81c48c40..d286ab83 100644
--- a/src/renderer/components/WorkspaceTabPropsScheduler.vue
+++ b/src/renderer/components/WorkspaceTabPropsScheduler.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
- {{ schema }}
+ {{ schema }}
@@ -129,6 +145,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import QueryEditor from '@/components/QueryEditor.vue';
diff --git a/src/renderer/components/WorkspaceTabPropsSchedulerTimingModal.vue b/src/renderer/components/WorkspaceTabPropsSchedulerTimingModal.vue
index 2c259aba..e578bfa4 100644
--- a/src/renderer/components/WorkspaceTabPropsSchedulerTimingModal.vue
+++ b/src/renderer/components/WorkspaceTabPropsSchedulerTimingModal.vue
@@ -8,7 +8,11 @@
>
-
+
{{ t('database.timing') }} "{{ localOptions.name }}"
@@ -76,7 +80,11 @@
class="form-input"
>
-
+
@@ -97,7 +105,11 @@
class="form-input"
>
-
+
@@ -115,7 +127,11 @@
class="form-input"
>
-
+
@@ -141,6 +157,7 @@ import { Ref, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseSelect from '@/components/BaseSelect.vue';
const { t } = useI18n();
diff --git a/src/renderer/components/WorkspaceTabPropsTable.vue b/src/renderer/components/WorkspaceTabPropsTable.vue
index aa98a099..73cb6b2e 100644
--- a/src/renderer/components/WorkspaceTabPropsTable.vue
+++ b/src/renderer/components/WorkspaceTabPropsTable.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
@@ -30,7 +38,11 @@
:title="t('database.addNewField')"
@click="addField"
>
-
+
{{ t('general.add') }}
@@ -60,13 +81,21 @@
:disabled="isSaving"
@click="showDdlModal"
>
-
+
{{ t('database.ddl') }}
- {{ schema }}
+ {{ schema }}
@@ -200,6 +229,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import WorkspaceTabPropsTableDdlModal from '@/components/WorkspaceTabPropsTableDdlModal.vue';
diff --git a/src/renderer/components/WorkspaceTabPropsTableContext.vue b/src/renderer/components/WorkspaceTabPropsTableContext.vue
index 739207a6..eec06ea7 100644
--- a/src/renderer/components/WorkspaceTabPropsTableContext.vue
+++ b/src/renderer/components/WorkspaceTabPropsTableContext.vue
@@ -4,8 +4,17 @@
@close-context="closeContext"
>
- {{ t('database.createNewIndex') }}
-
+
+ {{ t('database.createNewIndex') }}
+
- {{ t('database.addToIndex') }}
-
+
+ {{ t('database.addToIndex') }}
+
- {{ t('general.duplicate') }}
+
+ {{ t('general.duplicate') }}
- {{ t('database.deleteField') }}
+
+ {{ t('database.deleteField') }}
@@ -48,6 +90,7 @@ import { computed, Prop } from 'vue';
import { useI18n } from 'vue-i18n';
import BaseContextMenu from '@/components/BaseContextMenu.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
const { t } = useI18n();
diff --git a/src/renderer/components/WorkspaceTabPropsTableDdlModal.vue b/src/renderer/components/WorkspaceTabPropsTableDdlModal.vue
index c4f12933..5b4c20b7 100644
--- a/src/renderer/components/WorkspaceTabPropsTableDdlModal.vue
+++ b/src/renderer/components/WorkspaceTabPropsTableDdlModal.vue
@@ -9,7 +9,11 @@
>
-
+
{{ t('database.ddl') }} "{{ table }}"
@@ -32,6 +36,7 @@ import { onMounted, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseTextEditor from '@/components/BaseTextEditor.vue';
import Tables from '@/ipc-api/Tables';
import { useNotificationsStore } from '@/stores/notifications';
diff --git a/src/renderer/components/WorkspaceTabPropsTableForeignModal.vue b/src/renderer/components/WorkspaceTabPropsTableForeignModal.vue
index 319d9152..3918ca94 100644
--- a/src/renderer/components/WorkspaceTabPropsTableForeignModal.vue
+++ b/src/renderer/components/WorkspaceTabPropsTableForeignModal.vue
@@ -8,7 +8,11 @@
>
-
+
{{ t('database.foreignKeys') }} "{{ table }}"
@@ -19,7 +23,11 @@
@@ -171,7 +203,11 @@
-
+
{{ t('database.thereAreNoForeign') }}
@@ -195,6 +231,7 @@ import { computed, onMounted, onUnmounted, Prop, Ref, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import Tables from '@/ipc-api/Tables';
import { useNotificationsStore } from '@/stores/notifications';
@@ -383,7 +420,7 @@ onUnmounted(() => {
overflow: auto;
}
-.remove-field .mdi {
+.remove-field svg {
pointer-events: none;
}
@@ -394,6 +431,7 @@ onUnmounted(() => {
display: flex;
line-height: 1;
align-items: baseline;
+ align-items: center;
> span {
overflow: hidden;
diff --git a/src/renderer/components/WorkspaceTabPropsTableIndexesModal.vue b/src/renderer/components/WorkspaceTabPropsTableIndexesModal.vue
index 733647a5..78dc6336 100644
--- a/src/renderer/components/WorkspaceTabPropsTableIndexesModal.vue
+++ b/src/renderer/components/WorkspaceTabPropsTableIndexesModal.vue
@@ -8,7 +8,12 @@
>
-
+
{{ t('database.indexes') }} "{{ table }}"
@@ -19,7 +24,11 @@
@@ -116,7 +138,11 @@
-
+
{{ t('database.thereAreNoIndexes') }}
@@ -140,6 +166,7 @@ import { computed, onMounted, onUnmounted, Prop, Ref, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseSelect from '@/components/BaseSelect.vue';
const { t } = useI18n();
@@ -270,7 +297,7 @@ onUnmounted(() => {
overflow: auto;
}
-.remove-field .mdi {
+.remove-field svg {
pointer-events: none;
}
diff --git a/src/renderer/components/WorkspaceTabPropsTableRow.vue b/src/renderer/components/WorkspaceTabPropsTableRow.vue
index d9c97888..e969d343 100644
--- a/src/renderer/components/WorkspaceTabPropsTableRow.vue
+++ b/src/renderer/components/WorkspaceTabPropsTableRow.vue
@@ -2,25 +2,43 @@
-
+
+ class="p-vcentered"
+ >
+
+
@@ -227,7 +245,11 @@
>
-
+
{{ t('database.default') }} "{{ row.name }}"
@@ -331,6 +353,7 @@ import { computed, nextTick, onMounted, Prop, PropType, Ref, ref, watch } from '
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import { useWorkspacesStore } from '@/stores/workspaces';
@@ -558,7 +581,7 @@ const editOFF = () => {
const checkLengthScale = (e: KeyboardEvent & { target: HTMLInputElement }) => {
e = (e) || window.event as KeyboardEvent & { target: HTMLInputElement };
- const charCode = (e.which) ? e.which : e.code;
+ const charCode = (e.which) ? e.which : Number(e.code);
if (((charCode > 31 && (charCode < 48 || charCode > 57)) && charCode !== 44) || (charCode === 44 && e.target.value.includes(',')))
e.preventDefault();
diff --git a/src/renderer/components/WorkspaceTabPropsTrigger.vue b/src/renderer/components/WorkspaceTabPropsTrigger.vue
index 4ae64eb2..6eb73c8d 100644
--- a/src/renderer/components/WorkspaceTabPropsTrigger.vue
+++ b/src/renderer/components/WorkspaceTabPropsTrigger.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
- {{ schema }}
+ {{ schema }}
@@ -120,6 +132,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import QueryEditor from '@/components/QueryEditor.vue';
diff --git a/src/renderer/components/WorkspaceTabPropsTriggerFunction.vue b/src/renderer/components/WorkspaceTabPropsTriggerFunction.vue
index 59bec93d..f32ffa54 100644
--- a/src/renderer/components/WorkspaceTabPropsTriggerFunction.vue
+++ b/src/renderer/components/WorkspaceTabPropsTriggerFunction.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
+
@@ -87,6 +104,7 @@ import { storeToRefs } from 'pinia';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import QueryEditor from '@/components/QueryEditor.vue';
diff --git a/src/renderer/components/WorkspaceTabPropsView.vue b/src/renderer/components/WorkspaceTabPropsView.vue
index 91b0b143..abe895a8 100644
--- a/src/renderer/components/WorkspaceTabPropsView.vue
+++ b/src/renderer/components/WorkspaceTabPropsView.vue
@@ -9,7 +9,11 @@
:class="{'loading':isSaving}"
@click="saveChanges"
>
-
+
{{ t('general.save') }}
- {{ schema }}
+ {{ schema }}
@@ -107,6 +119,7 @@ import { ipcRenderer } from 'electron';
import { Component, computed, onBeforeUnmount, onMounted, onUnmounted, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import QueryEditor from '@/components/QueryEditor.vue';
diff --git a/src/renderer/components/WorkspaceTabQuery.vue b/src/renderer/components/WorkspaceTabQuery.vue
index b4f8089b..04f868df 100644
--- a/src/renderer/components/WorkspaceTabQuery.vue
+++ b/src/renderer/components/WorkspaceTabQuery.vue
@@ -27,7 +27,11 @@
:title="t('general.cancel')"
@click="killTabQuery()"
>
-
+
{{ t('general.run') }}
@@ -47,7 +55,11 @@
:class="{'loading':isQuering}"
@click="commitTab()"
>
-
+
{{ t('database.commit') }}
@@ -75,7 +95,11 @@
:disabled="!query || isQuering"
@click="beautify()"
>
-
+
{{ t('general.format') }}
@@ -92,9 +120,17 @@
class="btn btn-dark btn-sm dropdown-toggle mr-0 pr-0"
tabindex="0"
>
-
+
{{ t('database.export') }}
-
+
-
+
- {{ durationsCount / 1000 }}s
+ {{ durationsCount / 1000 }}s
- {{ resultsCount.toLocaleString() }}
+ {{ resultsCount.toLocaleString() }}
- {{ affectedCount }}
+ {{ affectedCount }}
@@ -101,7 +110,11 @@
>
-
+
{{ t('database.deleteRows', selectedRows.length) }}
@@ -119,7 +132,11 @@
>
-
+
{{ t('database.sqlExportOptions') }}
@@ -160,7 +177,11 @@
>
-
+
{{ t('application.csvExportOptions') }}
@@ -241,6 +262,7 @@ import { Component, computed, nextTick, onMounted, onUnmounted, onUpdated, Prop,
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import BaseVirtualScroll from '@/components/BaseVirtualScroll.vue';
import TableContext from '@/components/WorkspaceTabQueryTableContext.vue';
@@ -555,6 +577,8 @@ const copyRow = (format: string) => {
if (selectedRows.value.length === 1) {
const row = localResults.value.find((row: any) => selectedRows.value.includes(row._antares_id));
const rowToCopy = unproxify(row);
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
delete rowToCopy._antares_id;
contentToCopy = rowToCopy;
}
diff --git a/src/renderer/components/WorkspaceTabQueryTableContext.vue b/src/renderer/components/WorkspaceTabQueryTableContext.vue
index 247cc862..aebebc82 100644
--- a/src/renderer/components/WorkspaceTabQueryTableContext.vue
+++ b/src/renderer/components/WorkspaceTabQueryTableContext.vue
@@ -4,8 +4,17 @@
@close-context="closeContext"
>
- {{ t('general.copy') }}
-
+
+ {{ t('general.copy') }}
+
@@ -49,7 +83,11 @@
@click="duplicateRow"
>
- {{ t('general.duplicate') }}
+ {{ t('general.duplicate') }}
- {{ t('database.fillCell') }}
+ {{ t('database.fillCell') }}
-
+
@@ -225,6 +245,7 @@ import { computed, nextTick, onBeforeUnmount, Prop, Ref, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n';
import ConfirmModal from '@/components/BaseConfirmModal.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseMap from '@/components/BaseMap.vue';
import BaseSelect from '@/components/BaseSelect.vue';
import TextEditor from '@/components/BaseTextEditor.vue';
diff --git a/src/renderer/components/WorkspaceTabTable.vue b/src/renderer/components/WorkspaceTabTable.vue
index c2f01087..dbada82b 100644
--- a/src/renderer/components/WorkspaceTabTable.vue
+++ b/src/renderer/components/WorkspaceTabTable.vue
@@ -11,11 +11,22 @@
:title="`${t('general.refresh')}`"
@click="reloadTable"
>
-
-
+
+
-
+
{{ t('general.results') }}: {{ localeString(results[0].rows.length) }}
@@ -147,7 +171,11 @@
- {{ schema }}
+ {{ schema }}
@@ -163,7 +191,7 @@
-
+
{{ t('database.noResultsPresent') }}
@@ -206,6 +234,7 @@ import { storeToRefs } from 'pinia';
import { computed, onBeforeUnmount, Prop, Ref, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseLoader from '@/components/BaseLoader.vue';
import ModalFakerRows from '@/components/ModalFakerRows.vue';
import WorkspaceTabQueryTable from '@/components/WorkspaceTabQueryTable.vue';
diff --git a/src/renderer/components/WorkspaceTabTableFilters.vue b/src/renderer/components/WorkspaceTabTableFilters.vue
index f75546fa..17ab92e8 100644
--- a/src/renderer/components/WorkspaceTabTableFilters.vue
+++ b/src/renderer/components/WorkspaceTabTableFilters.vue
@@ -43,7 +43,11 @@
type="button"
@click="removeRow(index)"
>
-
+
@@ -58,7 +62,11 @@
type="button"
@click="addRow"
>
-
+
@@ -72,6 +80,7 @@ import { TableFilterClausole } from 'common/interfaces/tableApis';
import { computed, Prop, ref } from 'vue';
import { useI18n } from 'vue-i18n';
+import BaseIcon from '@/components/BaseIcon.vue';
import BaseSelect from '@/components/BaseSelect.vue';
const { t } = useI18n();
diff --git a/src/renderer/components/WorkspaceTabsContext.vue b/src/renderer/components/WorkspaceTabsContext.vue
index dd168631..c7041717 100644
--- a/src/renderer/components/WorkspaceTabsContext.vue
+++ b/src/renderer/components/WorkspaceTabsContext.vue
@@ -4,19 +4,39 @@
@close-context="closeContext"
>
- {{ t('application.closeAllTabs') }}
+
+ {{ t('application.closeAllTabs') }}
- {{ t('application.closeOtherTabs') }}
+
+ {{ t('application.closeOtherTabs') }}
- {{ t('application.closeTabsToLeft') }}
+
+ {{ t('application.closeTabsToLeft') }}
- {{ t('application.closeTabsToRight') }}
+
+ {{ t('application.closeTabsToRight') }}
@@ -25,6 +45,7 @@
import { useI18n } from 'vue-i18n';
import BaseContextMenu from '@/components/BaseContextMenu.vue';
+import BaseIcon from '@/components/BaseIcon.vue';
const { t } = useI18n();
diff --git a/src/renderer/scss/_table-keys.scss b/src/renderer/scss/_table-keys.scss
index 0c28866a..8c19da99 100644
--- a/src/renderer/scss/_table-keys.scss
+++ b/src/renderer/scss/_table-keys.scss
@@ -1,10 +1,5 @@
/* stylelint-disable selector-class-pattern */
.column-key {
- transform: rotate(45deg);
- font-size: 0.7rem;
- line-height: 1.5;
- margin-right: 0.2rem;
-
&.key-pri,
&.key-PRIMARY {
color: goldenrod;
diff --git a/src/renderer/scss/main.scss b/src/renderer/scss/main.scss
index e8aa4c9d..87a269d5 100644
--- a/src/renderer/scss/main.scss
+++ b/src/renderer/scss/main.scss
@@ -295,6 +295,12 @@ option:checked {
}
}
+.has-icon-left svg.form-icon,
+.has-icon-right svg.form-icon {
+ width: auto;
+ height: auto;
+}
+
.form-select {
cursor: pointer;
diff --git a/src/renderer/untyped.d.ts b/src/renderer/untyped.d.ts
index 0dc38501..2d0ca0c9 100644
--- a/src/renderer/untyped.d.ts
+++ b/src/renderer/untyped.d.ts
@@ -79,3 +79,34 @@ declare module 'vuedraggable' {// <- to export as default
}>;
export = draggableComponent;
}
+
+declare let SvgIcon: import('vue').DefineComponent<{
+ type: {
+ type: StringConstructor;
+ default: string;
+ };
+ path: {
+ type: StringConstructor;
+ default: string;
+ };
+ size: {
+ type: NumberConstructor;
+ optional: boolean;
+ };
+ viewbox: {
+ type: StringConstructor;
+ optional: boolean;
+ };
+ flip: {
+ type: StringConstructor;
+ optional: boolean;
+ };
+ rotate: {
+ type: StringConstructor;
+ optional: boolean;
+ };
+ }>;
+
+ declare module '@jamescoyle/vue-icon' {
+ export default SvgIcon;
+ }