From ab0984c7b3aa708f2ee20c194387e1b20edc4cf2 Mon Sep 17 00:00:00 2001 From: Wanjin Noh Date: Tue, 4 Mar 2025 10:53:41 +0900 Subject: [PATCH 01/18] feat(link): add line height prop to link component Signed-off-by: Wanjin Noh --- packages/mirinae/src/navigation/link/PLink.mdx | 6 ++++++ .../mirinae/src/navigation/link/PLink.stories.ts | 15 +++++++++++++++ packages/mirinae/src/navigation/link/PLink.vue | 6 +++++- .../mirinae/src/navigation/link/story-helper.ts | 16 ++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/packages/mirinae/src/navigation/link/PLink.mdx b/packages/mirinae/src/navigation/link/PLink.mdx index 46353dbc9d..95f54128bd 100644 --- a/packages/mirinae/src/navigation/link/PLink.mdx +++ b/packages/mirinae/src/navigation/link/PLink.mdx @@ -71,6 +71,12 @@ This component prevents the propagation of the click event by default. ## Use Anchor Scroll +
+
+ +## Line Height + + ## Playground diff --git a/packages/mirinae/src/navigation/link/PLink.stories.ts b/packages/mirinae/src/navigation/link/PLink.stories.ts index 3cb16f909c..f185c7d94a 100644 --- a/packages/mirinae/src/navigation/link/PLink.stories.ts +++ b/packages/mirinae/src/navigation/link/PLink.stories.ts @@ -45,6 +45,7 @@ const Template: Story = { :new-tab="newTab" :href="href" :to="to" + :line-height="lineHeight" > @@ -184,6 +185,20 @@ export const UseAnchorScroll: Story = { }), }; +export const LineHeight: Story = { + render: () => ({ + components: { PLink }, + router, + template: ` +
+ Without line height
+ With line height 1.5
+ With line height 2
+
+ `, + }), +}; + export const Playground: Story = { ...Template, }; diff --git a/packages/mirinae/src/navigation/link/PLink.vue b/packages/mirinae/src/navigation/link/PLink.vue index b32caeb22b..df77c8f1e5 100644 --- a/packages/mirinae/src/navigation/link/PLink.vue +++ b/packages/mirinae/src/navigation/link/PLink.vue @@ -21,7 +21,9 @@ color="inherit" class="icon" /> - + {{ props.text }} @@ -60,6 +62,7 @@ interface LinkProps { href?: string; to?: Location; useAnchorScroll?: boolean; + lineHeight?: string; } const props = withDefaults(defineProps(), { @@ -70,6 +73,7 @@ const props = withDefaults(defineProps(), { href: undefined, to: undefined, useAnchorScroll: false, + lineHeight: undefined, }); const linkRef = ref(null); diff --git a/packages/mirinae/src/navigation/link/story-helper.ts b/packages/mirinae/src/navigation/link/story-helper.ts index 4d8c3a3a1c..c9a9fd25f8 100644 --- a/packages/mirinae/src/navigation/link/story-helper.ts +++ b/packages/mirinae/src/navigation/link/story-helper.ts @@ -15,6 +15,7 @@ export const getLinkArgs = (): Args => ({ href: 'https://cloudforet.io', to: undefined, useAnchorScroll: false, + lineHeight: undefined, defaultSlot: null, }); @@ -180,6 +181,21 @@ export const getLinkArgTypes = (): ArgTypes => ({ }, }, }, + lineHeight: { + name: 'lineHeight', + type: { name: 'string' }, + description: 'Line height of link text.', + table: { + type: { + summary: 'string', + }, + category: 'props', + defaultValue: { + summary: 'undefined', + }, + }, + control: 'text', + }, defaultSlot: { name: 'default', description: 'Slot for text', From 4f57e38d221ce4922ba6850c315a1990e380cc21 Mon Sep 17 00:00:00 2001 From: Wanjin Noh Date: Tue, 4 Mar 2025 10:53:43 +0900 Subject: [PATCH 02/18] fix(text-editor): add white-space pre-wrap to code blocks Signed-off-by: Wanjin Noh --- apps/web/src/common/components/editor/text-editor-nodes.pcss | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/web/src/common/components/editor/text-editor-nodes.pcss b/apps/web/src/common/components/editor/text-editor-nodes.pcss index 8602905579..a39d91c52a 100644 --- a/apps/web/src/common/components/editor/text-editor-nodes.pcss +++ b/apps/web/src/common/components/editor/text-editor-nodes.pcss @@ -157,6 +157,7 @@ @apply bg-gray-100 rounded-lg; margin-top: 0.75rem; padding: 0.5rem 1rem; + white-space: pre-wrap; > code { font-family: $font-code; font-size: 0.875rem; From 239fab9edc7243d724fe22c5018267d6477031f6 Mon Sep 17 00:00:00 2001 From: Wanjin Noh Date: Tue, 4 Mar 2025 10:53:44 +0900 Subject: [PATCH 03/18] fix(board-task): add line height classes to task name field Signed-off-by: Wanjin Noh --- .../web/src/services/ops-flow/components/BoardTaskNameField.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/web/src/services/ops-flow/components/BoardTaskNameField.vue b/apps/web/src/services/ops-flow/components/BoardTaskNameField.vue index 125cbdc1ed..5a7a2d92e4 100644 --- a/apps/web/src/services/ops-flow/components/BoardTaskNameField.vue +++ b/apps/web/src/services/ops-flow/components/BoardTaskNameField.vue @@ -25,9 +25,11 @@ const props = defineProps<{ taskId: props.taskId, }, }" + class="leading-lg" :highlight="!props.linkNewTab" :action-icon="props.linkNewTab ? 'internal-link' : 'none'" :new-tab="props.linkNewTab" + line-height="1.25" /> From a91808fcf743bb58c0cea8b722d573468c473451 Mon Sep 17 00:00:00 2001 From: Wanjin Noh Date: Tue, 4 Mar 2025 10:53:44 +0900 Subject: [PATCH 04/18] refactor(ops-flow): update import paths for task-related schemas Signed-off-by: Wanjin Noh --- .../src/services/ops-flow/components/TaskAssignModal.vue | 2 +- .../ops-flow/components/TaskStatusDeleteModal.vue | 2 +- .../ops-flow/components/TaskStatusDraggableItem.vue | 2 +- .../src/services/ops-flow/components/TaskStatusList.vue | 3 ++- .../ops-flow/components/TaskStatusSetDefaultModal.vue | 2 +- .../src/services/ops-flow/components/TaskTypeForm.vue | 3 ++- .../ops-flow/composables/use-task-status-field.ts | 2 +- .../services/ops-flow/composables/use-task-type-field.ts | 3 ++- .../ops-flow/constants/task-status-label-constant.ts | 2 +- apps/web/src/services/ops-flow/pages/TaskCreatePage.vue | 8 ++++++-- apps/web/src/services/ops-flow/pages/TaskDetailPage.vue | 2 +- .../ops-flow/stores/admin/task-category-page-store.ts | 9 +++++---- .../web/src/services/ops-flow/stores/board-page-store.ts | 5 +++-- .../task-fields-configuration/TaskFieldGenerator.vue | 2 +- .../TaskFieldsConfiguration.vue | 6 ++++-- .../composables/use-task-field-generator.ts | 2 +- .../composables/use-task-fields-configuration.ts | 2 +- .../DropdownOptionsGenerator.vue | 2 +- .../ParagraphOptionsGenerator.vue | 2 +- .../stores/use-task-field-metadata-store.ts | 2 +- .../types/mutable-task-field-type.ts | 2 +- .../types/options-generator-type.ts | 2 +- .../types/task-field-dropdown-enum-type.ts | 2 +- .../types/task-field-type-metadata-type.ts | 2 +- .../ops-flow/task-fields-form/TaskFieldsForm.vue | 2 +- .../composables/use-task-field-validation.ts | 2 +- .../task-fields-form/field-templates/AssetTaskField.vue | 2 +- .../task-fields-form/field-templates/DateTaskField.vue | 2 +- .../field-templates/DropdownTaskField.vue | 2 +- .../task-fields-form/field-templates/LabelsTaskField.vue | 2 +- .../field-templates/ParagraphTaskField.vue | 2 +- .../field-templates/ProjectTaskField.vue | 2 +- .../field-templates/ServiceAccountTaskField.vue | 2 +- .../task-fields-form/field-templates/TextTaskField.vue | 2 +- .../field-templates/UnknownTaskField.vue | 2 +- .../task-fields-form/field-templates/UserTaskField.vue | 2 +- .../task-fields-form/types/task-field-form-type.ts | 2 +- 37 files changed, 54 insertions(+), 43 deletions(-) diff --git a/apps/web/src/services/ops-flow/components/TaskAssignModal.vue b/apps/web/src/services/ops-flow/components/TaskAssignModal.vue index 9e535990e1..1fec692b9c 100644 --- a/apps/web/src/services/ops-flow/components/TaskAssignModal.vue +++ b/apps/web/src/services/ops-flow/components/TaskAssignModal.vue @@ -8,7 +8,7 @@ import type { SelectDropdownMenuItem } from '@cloudforet/mirinae/types/controls/ import type { DataTableField } from '@cloudforet/mirinae/types/data-display/tables/data-table/type'; import type { ToolboxTableOptions } from '@cloudforet/mirinae/types/data-display/tables/toolbox-table/type'; -import type { TaskModel } from '@/schema/opsflow/task/model'; +import type { TaskModel } from '@/api-clients/opsflow/task/schema/model'; import { i18n } from '@/translations'; import type { UserReferenceItem } from '@/store/reference/user-reference-store'; diff --git a/apps/web/src/services/ops-flow/components/TaskStatusDeleteModal.vue b/apps/web/src/services/ops-flow/components/TaskStatusDeleteModal.vue index be1f43f090..3cffc89d76 100644 --- a/apps/web/src/services/ops-flow/components/TaskStatusDeleteModal.vue +++ b/apps/web/src/services/ops-flow/components/TaskStatusDeleteModal.vue @@ -5,7 +5,7 @@ import { cloneDeep } from 'lodash'; import { PButtonModal } from '@cloudforet/mirinae'; -import type { TaskStatusOption, TaskStatusOptions, TaskStatusType } from '@/schema/opsflow/task/type'; +import type { TaskStatusOption, TaskStatusOptions, TaskStatusType } from '@/api-clients/opsflow/task/schema/type'; import { getParticle, i18n as _i18n } from '@/translations'; import { showSuccessMessage } from '@/lib/helper/notice-alert-helper'; diff --git a/apps/web/src/services/ops-flow/components/TaskStatusDraggableItem.vue b/apps/web/src/services/ops-flow/components/TaskStatusDraggableItem.vue index fa1bfa05eb..cae3825b4f 100644 --- a/apps/web/src/services/ops-flow/components/TaskStatusDraggableItem.vue +++ b/apps/web/src/services/ops-flow/components/TaskStatusDraggableItem.vue @@ -4,7 +4,7 @@ import { computed } from 'vue'; import { PI, PBadge } from '@cloudforet/mirinae'; import type { MenuItem } from '@cloudforet/mirinae/types/controls/context-menu/type'; -import type { TaskStatusType } from '@/schema/opsflow/task/type'; +import type { TaskStatusType } from '@/api-clients/opsflow/task/schema/type'; import { i18n } from '@/translations'; import ActionMenuButton from '@/common/components/buttons/ActionMenuButton.vue'; diff --git a/apps/web/src/services/ops-flow/components/TaskStatusList.vue b/apps/web/src/services/ops-flow/components/TaskStatusList.vue index cf2674126d..d822d5e8b6 100644 --- a/apps/web/src/services/ops-flow/components/TaskStatusList.vue +++ b/apps/web/src/services/ops-flow/components/TaskStatusList.vue @@ -2,11 +2,12 @@ import { computed, ref, watch } from 'vue'; import draggable from 'vuedraggable'; -import type { TaskStatusOption, TaskStatusType } from '@/schema/opsflow/task/type'; +import type { TaskStatusOption, TaskStatusType } from '@/api-clients/opsflow/task/schema/type'; import TaskStatusDraggableItem from '@/services/ops-flow/components/TaskStatusDraggableItem.vue'; import TaskStatusListFoldButton from '@/services/ops-flow/components/TaskStatusListFoldButton.vue'; + const props = defineProps<{ header: string; type: TaskStatusType; diff --git a/apps/web/src/services/ops-flow/components/TaskStatusSetDefaultModal.vue b/apps/web/src/services/ops-flow/components/TaskStatusSetDefaultModal.vue index 6fb2cb6945..c9a4ba5b05 100644 --- a/apps/web/src/services/ops-flow/components/TaskStatusSetDefaultModal.vue +++ b/apps/web/src/services/ops-flow/components/TaskStatusSetDefaultModal.vue @@ -5,7 +5,7 @@ import { cloneDeep } from 'lodash'; import { PButtonModal } from '@cloudforet/mirinae'; -import type { TaskStatusOption, TaskStatusOptions, TaskStatusType } from '@/schema/opsflow/task/type'; +import type { TaskStatusOption, TaskStatusOptions, TaskStatusType } from '@/api-clients/opsflow/task/schema/type'; import { i18n as _i18n } from '@/translations'; import { showSuccessMessage } from '@/lib/helper/notice-alert-helper'; diff --git a/apps/web/src/services/ops-flow/components/TaskTypeForm.vue b/apps/web/src/services/ops-flow/components/TaskTypeForm.vue index d2a464df3c..9c3a4caa8a 100644 --- a/apps/web/src/services/ops-flow/components/TaskTypeForm.vue +++ b/apps/web/src/services/ops-flow/components/TaskTypeForm.vue @@ -9,7 +9,6 @@ import { POverlayLayout, PFieldGroup, PTextInput, PButton, PTextarea, PRadioGroup, PRadio, } from '@cloudforet/mirinae'; -import type { TaskTypeModel } from '@/schema/opsflow/task-type/model'; import { getParticle, i18n as _i18n } from '@/translations'; import { showSuccessMessage } from '@/lib/helper/notice-alert-helper'; @@ -28,6 +27,8 @@ import { useTaskManagementTemplateStore, } from '@/services/ops-flow/task-management-templates/stores/use-task-management-template-store'; +import type { TaskTypeModel } from '@/api-clients/opsflow/task/schema-type/model'; + const taskCategoryPageStore = useTaskCategoryPageStore(); const taskCategoryPageState = taskCategoryPageStore.state; const taskCategoryPageGetters = taskCategoryPageStore.getters; diff --git a/apps/web/src/services/ops-flow/composables/use-task-status-field.ts b/apps/web/src/services/ops-flow/composables/use-task-status-field.ts index c108ec7604..cbc76158d8 100644 --- a/apps/web/src/services/ops-flow/composables/use-task-status-field.ts +++ b/apps/web/src/services/ops-flow/composables/use-task-status-field.ts @@ -4,7 +4,7 @@ import { ref, computed } from 'vue'; import { getTextHighlightRegex } from '@cloudforet/mirinae'; import type { AutocompleteHandler, SelectDropdownMenuItem } from '@cloudforet/mirinae/types/controls/dropdown/select-dropdown/type'; -import type { TaskStatusOption, TaskStatusOptions } from '@/schema/opsflow/task/type'; +import type { TaskStatusOption, TaskStatusOptions } from '@/api-clients/opsflow/task/schema/type'; import { getParticle, i18n } from '@/translations'; import { useFieldValidator } from '@/common/composables/form-validator'; diff --git a/apps/web/src/services/ops-flow/composables/use-task-type-field.ts b/apps/web/src/services/ops-flow/composables/use-task-type-field.ts index 63a6214549..b6fa889498 100644 --- a/apps/web/src/services/ops-flow/composables/use-task-type-field.ts +++ b/apps/web/src/services/ops-flow/composables/use-task-type-field.ts @@ -4,7 +4,6 @@ import { ref, computed } from 'vue'; import { getTextHighlightRegex } from '@cloudforet/mirinae'; import type { AutocompleteHandler, SelectDropdownMenuItem } from '@cloudforet/mirinae/types/controls/dropdown/select-dropdown/type'; -import type { TaskTypeModel } from '@/schema/opsflow/task-type/model'; import { getParticle, i18n } from '@/translations'; import { useFieldValidator } from '@/common/composables/form-validator'; @@ -14,6 +13,8 @@ import { useTaskManagementTemplateStore, } from '@/services/ops-flow/task-management-templates/stores/use-task-management-template-store'; +import type { TaskTypeModel } from '@/api-clients/opsflow/task/schema-type/model'; + export const useTaskTypeField = ({ isRequired, categoryId, }: { diff --git a/apps/web/src/services/ops-flow/constants/task-status-label-constant.ts b/apps/web/src/services/ops-flow/constants/task-status-label-constant.ts index 47e4dffdaf..a50a21821e 100644 --- a/apps/web/src/services/ops-flow/constants/task-status-label-constant.ts +++ b/apps/web/src/services/ops-flow/constants/task-status-label-constant.ts @@ -1,4 +1,4 @@ -import type { TaskStatusType } from '@/schema/opsflow/task/type'; +import type { TaskStatusType } from '@/api-clients/opsflow/task/schema/type'; export const TASK_STATUS_LABELS: Record = { TODO: 'To Do', diff --git a/apps/web/src/services/ops-flow/pages/TaskCreatePage.vue b/apps/web/src/services/ops-flow/pages/TaskCreatePage.vue index d1725689dc..34879bfd8a 100644 --- a/apps/web/src/services/ops-flow/pages/TaskCreatePage.vue +++ b/apps/web/src/services/ops-flow/pages/TaskCreatePage.vue @@ -29,7 +29,7 @@ import { PHeadingLayout, PHeading, PButton, PPaneLayout, PSkeleton, } from '@cloudforet/mirinae'; -import type { TaskModel } from '@/schema/opsflow/task/model'; +import type { TaskModel } from '@/api-clients/opsflow/task/schema/model'; import { i18n as _i18n } from '@/translations'; import { queryStringToString } from '@/lib/router-query-string'; @@ -51,6 +51,7 @@ import type { TaskCreatePageQueryValue } from '@/services/ops-flow/types/task-cr + const taskContentFormStore = useTaskContentFormStore(); const taskContentFormState = taskContentFormStore.state; const taskContentFormGetters = taskContentFormStore.getters; @@ -123,7 +124,7 @@ defineExpose({ setPathFrom });