From e9c76c529083bd95e39d21207a28fe3bb5f09761 Mon Sep 17 00:00:00 2001 From: John Cowen Date: Fri, 3 May 2024 16:48:29 +0100 Subject: [PATCH] chore: add XCopy Signed-off-by: John Cowen --- .../DebugKClipboardProvider.vue | 28 ------ .../debug-k-clipboard-provider/README.md | 7 -- src/app/common/TextWithCopyButton.vue | 32 +++---- .../common/code-block/ResourceCodeBlock.vue | 86 ++++++------------- src/app/meshes/views/MeshDetailTabsView.vue | 7 +- src/app/x/components/x-copy-button/README.md | 9 ++ .../components/x-copy-button/XCopyButton.vue | 73 ++++++++++++++++ .../x-copy-button/XCopyButtonDebug.vue | 44 ++++++++++ src/app/x/components/x-icon/XIcon.vue | 2 + src/app/x/index.ts | 3 + src/services/development.ts | 4 +- 11 files changed, 176 insertions(+), 119 deletions(-) delete mode 100644 src/app/application/components/debug-k-clipboard-provider/DebugKClipboardProvider.vue delete mode 100644 src/app/application/components/debug-k-clipboard-provider/README.md create mode 100644 src/app/x/components/x-copy-button/README.md create mode 100644 src/app/x/components/x-copy-button/XCopyButton.vue create mode 100644 src/app/x/components/x-copy-button/XCopyButtonDebug.vue diff --git a/src/app/application/components/debug-k-clipboard-provider/DebugKClipboardProvider.vue b/src/app/application/components/debug-k-clipboard-provider/DebugKClipboardProvider.vue deleted file mode 100644 index 0ca67e532..000000000 --- a/src/app/application/components/debug-k-clipboard-provider/DebugKClipboardProvider.vue +++ /dev/null @@ -1,28 +0,0 @@ - - diff --git a/src/app/application/components/debug-k-clipboard-provider/README.md b/src/app/application/components/debug-k-clipboard-provider/README.md deleted file mode 100644 index 114a0de7f..000000000 --- a/src/app/application/components/debug-k-clipboard-provider/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# DebugKClipboardProvider - -Wraps KClipboardProvider in a decorator to also `console.log` the text of any -copy (and also `console.error` the text if the copy fails). - -The component should always be injected as a replacement for KClipboardProvider -in debug/dev modes only and never used directly. diff --git a/src/app/common/TextWithCopyButton.vue b/src/app/common/TextWithCopyButton.vue index 26a64245c..af7094225 100644 --- a/src/app/common/TextWithCopyButton.vue +++ b/src/app/common/TextWithCopyButton.vue @@ -1,12 +1,15 @@ - - diff --git a/src/app/common/code-block/ResourceCodeBlock.vue b/src/app/common/code-block/ResourceCodeBlock.vue index 31f6307e5..326846551 100644 --- a/src/app/common/code-block/ResourceCodeBlock.vue +++ b/src/app/common/code-block/ResourceCodeBlock.vue @@ -13,50 +13,44 @@ @reg-exp-mode-change="emit('reg-exp-mode-change', $event)" > - - diff --git a/src/app/meshes/views/MeshDetailTabsView.vue b/src/app/meshes/views/MeshDetailTabsView.vue index 3878fe956..3bf14bfe6 100644 --- a/src/app/meshes/views/MeshDetailTabsView.vue +++ b/src/app/meshes/views/MeshDetailTabsView.vue @@ -9,11 +9,13 @@ @@ -53,5 +55,4 @@ diff --git a/src/app/x/components/x-copy-button/README.md b/src/app/x/components/x-copy-button/README.md new file mode 100644 index 000000000..d2c59bae0 --- /dev/null +++ b/src/app/x/components/x-copy-button/README.md @@ -0,0 +1,9 @@ +# x-copy-button + +## x-copy-button-debug + +Wraps XCopyButton in a decorator to also `console.log` the text of any copy +(but not `console.error` the text if the copy fails). + +The component should always be injected as a replacement for XCopyButton in +debug/dev modes only and never used directly. diff --git a/src/app/x/components/x-copy-button/XCopyButton.vue b/src/app/x/components/x-copy-button/XCopyButton.vue new file mode 100644 index 000000000..7a4821cf3 --- /dev/null +++ b/src/app/x/components/x-copy-button/XCopyButton.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/app/x/components/x-copy-button/XCopyButtonDebug.vue b/src/app/x/components/x-copy-button/XCopyButtonDebug.vue new file mode 100644 index 000000000..c140658bb --- /dev/null +++ b/src/app/x/components/x-copy-button/XCopyButtonDebug.vue @@ -0,0 +1,44 @@ + + diff --git a/src/app/x/components/x-icon/XIcon.vue b/src/app/x/components/x-icon/XIcon.vue index febd90246..8686a3aa9 100644 --- a/src/app/x/components/x-icon/XIcon.vue +++ b/src/app/x/components/x-icon/XIcon.vue @@ -35,6 +35,7 @@ import { MeshIcon, BookIcon, FilterIcon, + CopyIcon, } from '@kong/icons' import { KTooltip, PopPlacements } from '@kong/kongponents' import { useSlots, useAttrs } from 'vue' @@ -55,6 +56,7 @@ const icons = { mesh: MeshIcon, docs: BookIcon, search: FilterIcon, + copy: CopyIcon, } as const const id = uniqueId('-x-icon-tooltip') const slots = useSlots() diff --git a/src/app/x/index.ts b/src/app/x/index.ts index f498cbf8c..43d234e6c 100644 --- a/src/app/x/index.ts +++ b/src/app/x/index.ts @@ -1,5 +1,6 @@ import XAction from './components/x-action/XAction.vue' import XBreadcrumbs from './components/x-breadcrumbs/XBreadcrumbs.vue' +import XCopyButton from './components/x-copy-button/XCopyButton.vue' import XDisclosure from './components/x-disclosure/XDisclosure.vue' import XIcon from './components/x-icon/XIcon.vue' import XInput from './components/x-input/XInput.vue' @@ -16,6 +17,7 @@ declare module '@vue/runtime-core' { XIcon: typeof XIcon XInput: typeof XInput XAction: typeof XAction + XCopyButton: typeof XCopyButton XBreadcrumbs: typeof XBreadcrumbs XTabs: typeof XTabs XTeleportTemplate: typeof XTeleportTemplate @@ -32,6 +34,7 @@ export const services = (app: Record): ServiceDefinition[] => { return [ ['XAction', XAction], ['XBreadcrumbs', XBreadcrumbs], + ['XCopyButton', XCopyButton], ['XIcon', XIcon], ['XInput', XInput], ['XTabs', XTabs], diff --git a/src/services/development.ts b/src/services/development.ts index 1113dc490..071f1ae53 100644 --- a/src/services/development.ts +++ b/src/services/development.ts @@ -1,8 +1,8 @@ import { setupWorker } from 'msw/browser' -import DebugKClipboardProvider from '@/app/application/components/debug-k-clipboard-provider/DebugKClipboardProvider.vue' import debugI18n from '@/app/application/services/i18n/DebugI18n' import { TOKENS as CONTROL_PLANES } from '@/app/control-planes' +import XCopyButtonDebug from '@/app/x/components/x-copy-button/XCopyButtonDebug.vue' import cookied from '@/services/env/CookiedEnv' import type Env from '@/services/env/Env' import type { ServiceConfigurator, Token, TokenType } from '@/services/utils' @@ -70,7 +70,7 @@ export const services: ServiceConfigurator = (app) => [ [token('development.components'), { service: () => { return [ - ['KClipboardProvider', DebugKClipboardProvider], + ['XCopyButton', XCopyButtonDebug], ] }, labels: [