@fewangsit/wangsvue 1.5.199-alpha.9 → 1.5.200-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/basetree/BaseTree.vue.d.ts +13 -1
- package/components/basetree/TreeNode.vue.d.ts +2 -0
- package/components/detailsprint/DetailSprint.vue.d.ts +1 -3
- package/components/detailsprint/DialogPreparePbi.vue.d.ts +23 -0
- package/components/dialogdetailpbi/DialogDetailPbi.vue.d.ts +10 -0
- package/components/dialogdetailpbi/TaskDetailUnassignedPbi.vue.d.ts +2 -0
- package/components/dialogform/DialogForm.vue.d.ts +2 -2
- package/components/editor/CodeSnippetAdapter.vue.d.ts +24 -0
- package/components/editor/MentionSection.vue.d.ts +24 -0
- package/components/filtercontainer/FilterContainer.vue.d.ts +24 -0
- package/components/icon/Icon.vue.d.ts +2 -0
- package/components/image/Image.vue.d.ts +2 -1
- package/components/index.d.ts +2 -1
- package/components/menu/Menu.vue.d.ts +7 -0
- package/components/menu/helpers/filterMenu.helper.d.ts +3 -1
- package/components/menuitem/MenuItem.vue.d.ts +19 -0
- package/components/notificationitem/NotificationItem.vue.d.ts +1 -0
- package/components/taskdetail/blocks/sections/Checklist/Checklist.vue.d.ts +2 -0
- package/package.json +1 -1
- package/plugins/WangsVue.d.ts +2 -0
- package/style.css +1 -1
- package/utils/date.util.d.ts +6 -0
- package/wangsvue.es.js +32046 -31725
- package/wangsvue.system.js +121 -121
|
@@ -34,7 +34,7 @@ export interface TreeNode {
|
|
|
34
34
|
/**
|
|
35
35
|
* Mandatory unique key of the node.
|
|
36
36
|
*/
|
|
37
|
-
key:
|
|
37
|
+
key: string;
|
|
38
38
|
/**
|
|
39
39
|
* Label of the node.
|
|
40
40
|
*/
|
|
@@ -156,6 +156,18 @@ export interface TreeFilterEvent {
|
|
|
156
156
|
value: string;
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
+
export interface TreeCheckboxChangeEvent {
|
|
160
|
+
node: TreeNode;
|
|
161
|
+
check: boolean;
|
|
162
|
+
selectionKeys: TreeSelectionKeys;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface TreeNodeClickEvent {
|
|
166
|
+
node: TreeNode;
|
|
167
|
+
nodeTouched: boolean;
|
|
168
|
+
originalEvent: PointerEvent;
|
|
169
|
+
}
|
|
170
|
+
|
|
159
171
|
/**
|
|
160
172
|
* Custom passthrough(pt) options.
|
|
161
173
|
* @see {@link TreeProps.pt}
|
|
@@ -40,9 +40,7 @@ export type SprintDetail = Omit<Sprint, 'finishedAt'> & {
|
|
|
40
40
|
finishAt: number;
|
|
41
41
|
sprintInterval: number;
|
|
42
42
|
sprintIntervalUnit: string;
|
|
43
|
-
productBacklogItems:
|
|
44
|
-
canViewDetail?: boolean;
|
|
45
|
-
})[];
|
|
43
|
+
productBacklogItems: Pick<Pbi, '_id' | 'name' | 'status'>[];
|
|
46
44
|
};
|
|
47
45
|
|
|
48
46
|
export interface PbiOptions {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Pbi } from '../dialogdetailpbi/DialogDetailPbi.vue.d';
|
|
2
|
+
import { ClassComponent } from '../.././components/ts-helpers';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export interface DialogPreparePbiProps {
|
|
6
|
+
projectId: string;
|
|
7
|
+
selectedPbi: Pbi | undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type DialogPreparePbiEmits = {
|
|
11
|
+
/**
|
|
12
|
+
* Emit on reloading the task table
|
|
13
|
+
*/
|
|
14
|
+
reloadTable: [];
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
declare class DialogPreparePbi extends ClassComponent<
|
|
18
|
+
DialogPreparePbiProps,
|
|
19
|
+
unknown,
|
|
20
|
+
DialogPreparePbiEmits
|
|
21
|
+
> {}
|
|
22
|
+
|
|
23
|
+
export default DialogPreparePbi;
|
|
@@ -16,6 +16,12 @@ type PbiStatus =
|
|
|
16
16
|
|
|
17
17
|
type Platform = 'Web' | 'Mobile';
|
|
18
18
|
|
|
19
|
+
type PbiMemberDetail = {
|
|
20
|
+
sprintNumber: number;
|
|
21
|
+
member: Pick<User, '_id' | 'nickName'>;
|
|
22
|
+
date: string;
|
|
23
|
+
};
|
|
24
|
+
|
|
19
25
|
export type Pbi = {
|
|
20
26
|
_id: string;
|
|
21
27
|
name: string;
|
|
@@ -41,6 +47,10 @@ export type Pbi = {
|
|
|
41
47
|
isMemberAssigned: boolean;
|
|
42
48
|
platform: Platform;
|
|
43
49
|
totalBug?: number;
|
|
50
|
+
hasTimerStart?: boolean;
|
|
51
|
+
canViewDetail?: boolean;
|
|
52
|
+
timerEndDate?: string;
|
|
53
|
+
memberDetails?: PbiMemberDetail[];
|
|
44
54
|
};
|
|
45
55
|
|
|
46
56
|
export type TaskStatus =
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GenericObject } from 'vee-validate';
|
|
2
2
|
import { Slot } from 'vue';
|
|
3
|
-
import { FormPayload, FormProps } from '../form/Form.vue.d';
|
|
3
|
+
import FormInstance, { FormPayload, FormProps } from '../form/Form.vue.d';
|
|
4
4
|
import { WangsIcons } from '../icon/Icon.vue.d';
|
|
5
5
|
import { ClassComponent, GlobalComponentConstructor } from '../ts-helpers';
|
|
6
6
|
|
|
@@ -313,7 +313,7 @@ declare class DialogForm extends ClassComponent<
|
|
|
313
313
|
/**
|
|
314
314
|
* The ref of form element.
|
|
315
315
|
*/
|
|
316
|
-
form:
|
|
316
|
+
form: FormInstance;
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
declare module '@vue/runtime-core' {
|
|
@@ -31,6 +31,18 @@ declare const _default: import('vue').DefineComponent<{
|
|
|
31
31
|
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["deleteNode"]>;
|
|
32
32
|
required: true;
|
|
33
33
|
};
|
|
34
|
+
view: {
|
|
35
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["view"]>;
|
|
36
|
+
required: true;
|
|
37
|
+
};
|
|
38
|
+
innerDecorations: {
|
|
39
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["innerDecorations"]>;
|
|
40
|
+
required: true;
|
|
41
|
+
};
|
|
42
|
+
HTMLAttributes: {
|
|
43
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["HTMLAttributes"]>;
|
|
44
|
+
required: true;
|
|
45
|
+
};
|
|
34
46
|
}, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
35
47
|
editor: {
|
|
36
48
|
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["editor"]>;
|
|
@@ -64,5 +76,17 @@ declare const _default: import('vue').DefineComponent<{
|
|
|
64
76
|
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["deleteNode"]>;
|
|
65
77
|
required: true;
|
|
66
78
|
};
|
|
79
|
+
view: {
|
|
80
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["view"]>;
|
|
81
|
+
required: true;
|
|
82
|
+
};
|
|
83
|
+
innerDecorations: {
|
|
84
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["innerDecorations"]>;
|
|
85
|
+
required: true;
|
|
86
|
+
};
|
|
87
|
+
HTMLAttributes: {
|
|
88
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["HTMLAttributes"]>;
|
|
89
|
+
required: true;
|
|
90
|
+
};
|
|
67
91
|
}>>, {}, {}>;
|
|
68
92
|
export default _default;
|
|
@@ -31,6 +31,18 @@ declare const _default: import('vue').DefineComponent<{
|
|
|
31
31
|
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["deleteNode"]>;
|
|
32
32
|
required: true;
|
|
33
33
|
};
|
|
34
|
+
view: {
|
|
35
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["view"]>;
|
|
36
|
+
required: true;
|
|
37
|
+
};
|
|
38
|
+
innerDecorations: {
|
|
39
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["innerDecorations"]>;
|
|
40
|
+
required: true;
|
|
41
|
+
};
|
|
42
|
+
HTMLAttributes: {
|
|
43
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["HTMLAttributes"]>;
|
|
44
|
+
required: true;
|
|
45
|
+
};
|
|
34
46
|
}, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
35
47
|
editor: {
|
|
36
48
|
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["editor"]>;
|
|
@@ -64,5 +76,17 @@ declare const _default: import('vue').DefineComponent<{
|
|
|
64
76
|
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["deleteNode"]>;
|
|
65
77
|
required: true;
|
|
66
78
|
};
|
|
79
|
+
view: {
|
|
80
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["view"]>;
|
|
81
|
+
required: true;
|
|
82
|
+
};
|
|
83
|
+
innerDecorations: {
|
|
84
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["innerDecorations"]>;
|
|
85
|
+
required: true;
|
|
86
|
+
};
|
|
87
|
+
HTMLAttributes: {
|
|
88
|
+
type: import('vue').PropType<import('@tiptap/vue-3').NodeViewProps["HTMLAttributes"]>;
|
|
89
|
+
required: true;
|
|
90
|
+
};
|
|
67
91
|
}>>, {}, {}>;
|
|
68
92
|
export default _default;
|
|
@@ -5,6 +5,7 @@ import { QueryParams } from '../datatable/DataTable.vue.d';
|
|
|
5
5
|
import { DropdownProps } from '../dropdown/Dropdown.vue.d';
|
|
6
6
|
import { InputRangeNumberProps } from '../inputrangenumber/InputRangeNumber.vue.d';
|
|
7
7
|
import { MultiSelectProps } from '../multiselect/MultiSelect.vue.d';
|
|
8
|
+
import { ButtonSelectTreeProps } from '../buttonselecttree/ButtonSelectTree.vue.d';
|
|
8
9
|
|
|
9
10
|
// More specific filter field types
|
|
10
11
|
export interface MultiSelectFilterField extends MultiSelectProps {
|
|
@@ -34,12 +35,30 @@ export interface RangeNumberFilterField extends InputRangeNumberProps {
|
|
|
34
35
|
tooltip?: string;
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
export interface ButtonSelectTreeFilterField
|
|
39
|
+
extends Omit<ButtonSelectTreeProps, 'type' | 'label' | 'fieldLabel'> {
|
|
40
|
+
type: 'group' | 'category';
|
|
41
|
+
field: string; // The name of the field this filter applies to
|
|
42
|
+
/**
|
|
43
|
+
* The field label.
|
|
44
|
+
*/
|
|
45
|
+
label?: string;
|
|
46
|
+
/**
|
|
47
|
+
* The button label.
|
|
48
|
+
* @default to Select Group|Category
|
|
49
|
+
*/
|
|
50
|
+
buttonLabel?: string;
|
|
51
|
+
}
|
|
52
|
+
|
|
37
53
|
export interface CalendarFilterField extends CalendarProps {
|
|
38
54
|
type: 'calendar';
|
|
39
55
|
field: string;
|
|
40
56
|
}
|
|
41
57
|
|
|
58
|
+
export type AdditionalFilterField = ButtonSelectTreeFilterField;
|
|
59
|
+
|
|
42
60
|
export type FilterField =
|
|
61
|
+
| AdditionalFilterField
|
|
43
62
|
| MultiSelectFilterField
|
|
44
63
|
| DropdownFilterField
|
|
45
64
|
| RangeNumberFilterField
|
|
@@ -86,6 +105,11 @@ export type FilterContainerSlots = {
|
|
|
86
105
|
* @deprecated Please use props.fields instead
|
|
87
106
|
*/
|
|
88
107
|
default: Slot;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Additional template for field.
|
|
111
|
+
*/
|
|
112
|
+
field: Slot<{ field: AdditionalFilterField }>;
|
|
89
113
|
};
|
|
90
114
|
|
|
91
115
|
export type FilterContainerEmits = {
|
|
@@ -79,6 +79,7 @@ export type WangsIcons =
|
|
|
79
79
|
| 'file-history-fill'
|
|
80
80
|
| 'file-info'
|
|
81
81
|
| 'files'
|
|
82
|
+
| 'file-lines'
|
|
82
83
|
| 'file-list-2'
|
|
83
84
|
| 'file-list'
|
|
84
85
|
| 'file-settings'
|
|
@@ -97,6 +98,7 @@ export type WangsIcons =
|
|
|
97
98
|
| 'indeterminate-circle-fill'
|
|
98
99
|
| 'info'
|
|
99
100
|
| 'information-line'
|
|
101
|
+
| 'infrared-thermometer'
|
|
100
102
|
| 'list-check'
|
|
101
103
|
| 'link'
|
|
102
104
|
| 'luggage-cart'
|
|
@@ -202,9 +202,10 @@ export interface ImageProps {
|
|
|
202
202
|
* medium: 80
|
|
203
203
|
* big: 125
|
|
204
204
|
*
|
|
205
|
-
* @default 'big' -
|
|
205
|
+
* @default to 'big' or {@link width} - When the props.width specified, the size will use this value
|
|
206
206
|
*/
|
|
207
207
|
size?: 'small' | 'medium' | 'big';
|
|
208
|
+
|
|
208
209
|
/**
|
|
209
210
|
* Set custom size in pixels (without 'px')
|
|
210
211
|
* @example 30
|
package/components/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export { default as DialogDetailPbi } from './dialogdetailpbi/DialogDetailPbi.vu
|
|
|
10
10
|
export { default as TaskDetailPbi } from './dialogdetailpbi/TaskDetailPbi.vue';
|
|
11
11
|
export { default as DetailMember } from './detailmember/DetailMember.vue';
|
|
12
12
|
export { default as DetailSprint } from './detailsprint/DetailSprint.vue';
|
|
13
|
+
export { default as DialogPreparePbi } from './detailsprint/DialogPreparePbi.vue';
|
|
13
14
|
export { default as DialogAdjustmentTask } from './dialogAdjustmentTask/DialogAdjustmentTask.vue';
|
|
14
15
|
export { default as TaskDetail } from './taskdetail/TaskDetail.vue';
|
|
15
16
|
export { default as TaskTable } from './tasktable/TaskTable.vue';
|
|
@@ -17,6 +18,7 @@ export { default as NotificationItem } from './notificationitem/NotificationItem
|
|
|
17
18
|
export { default as DialogImprovementTask } from './dialogimprovementtask/DialogImprovementTask.vue';
|
|
18
19
|
export { default as Comment } from './comment/Comment.vue';
|
|
19
20
|
export { default as Calendar } from '.././components/calendar/Calendar.vue';
|
|
21
|
+
export { default as FilterContainer } from '.././components/filtercontainer/FilterContainer.vue';
|
|
20
22
|
export { default as Animation } from './animation/Animation.vue';
|
|
21
23
|
export { default as ApproverInfo } from './approverinfo/ApproverInfo.vue';
|
|
22
24
|
export { default as Badge } from './badge/Badge.vue';
|
|
@@ -40,7 +42,6 @@ export { default as DialogForm } from './dialogform/DialogForm.vue';
|
|
|
40
42
|
export { default as Dropdown } from './dropdown/Dropdown.vue';
|
|
41
43
|
export { default as Editor } from './editor/Editor.vue';
|
|
42
44
|
export { default as FileUpload } from './fileupload/FileUpload.vue';
|
|
43
|
-
export { default as FilterContainer } from './filtercontainer/FilterContainer.vue';
|
|
44
45
|
export { default as Form } from './form/Form.vue';
|
|
45
46
|
export { default as Icon } from './icon/Icon.vue';
|
|
46
47
|
export { default as Image } from './image/Image.vue';
|
|
@@ -33,6 +33,13 @@ export declare type MenuPassThroughTransitionType =
|
|
|
33
33
|
| ((options: MenuPassThroughMethodOptions) => TransitionProps)
|
|
34
34
|
| undefined;
|
|
35
35
|
|
|
36
|
+
export interface MenuLocaleConfig {
|
|
37
|
+
/**
|
|
38
|
+
* The label of menu when no selectable menu available.
|
|
39
|
+
*/
|
|
40
|
+
noOptionLabel?: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
36
43
|
/**
|
|
37
44
|
* Custom passthrough(pt) option method.
|
|
38
45
|
*/
|
|
@@ -4,7 +4,9 @@ import { MenuItem } from '../../menuitem';
|
|
|
4
4
|
* If no visible menu items are found, it returns a menu with a label 'No Option Available'.
|
|
5
5
|
*
|
|
6
6
|
* @param menuItems - The array of menu items to filter.
|
|
7
|
+
* @param noOptionLabel - The label of menu to be shown when no available option. The value is from locale configuration each project.
|
|
8
|
+
*
|
|
7
9
|
* @returns - The array of visible menu items or an array with a single menu item with label 'No Option Available'.
|
|
8
10
|
*/
|
|
9
|
-
declare const filterVisibleMenu: (menuItems: MenuItem[]) => MenuItem[];
|
|
11
|
+
declare const filterVisibleMenu: (menuItems: MenuItem[], noOptionLabel?: string) => MenuItem[];
|
|
10
12
|
export default filterVisibleMenu;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MenuRouterBindProps } from '../menu/Menu.vue.d';
|
|
2
|
+
import { MenuItem } from '.';
|
|
3
|
+
declare const _default: import('vue').DefineComponent<__VLS_TypePropsToOption<{
|
|
4
|
+
item: MenuItem;
|
|
5
|
+
routerProps: MenuRouterBindProps;
|
|
6
|
+
}>, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToOption<{
|
|
7
|
+
item: MenuItem;
|
|
8
|
+
routerProps: MenuRouterBindProps;
|
|
9
|
+
}>>>, {}, {}>;
|
|
10
|
+
export default _default;
|
|
11
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
12
|
+
type __VLS_TypePropsToOption<T> = {
|
|
13
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
14
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
15
|
+
} : {
|
|
16
|
+
type: import('vue').PropType<T[K]>;
|
|
17
|
+
required: true;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { TaskChecklist } from '../../../../../types/task.type';
|
|
2
2
|
declare const _default: import('vue').DefineComponent<__VLS_TypePropsToOption<{
|
|
3
3
|
static?: boolean;
|
|
4
|
+
taskIdProp?: string;
|
|
4
5
|
}>, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
5
6
|
updated: (checklists: TaskChecklist[]) => void;
|
|
6
7
|
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToOption<{
|
|
7
8
|
static?: boolean;
|
|
9
|
+
taskIdProp?: string;
|
|
8
10
|
}>>> & {
|
|
9
11
|
onUpdated?: (checklists: TaskChecklist[]) => any;
|
|
10
12
|
}, {}, {}>;
|
package/package.json
CHANGED
package/plugins/WangsVue.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ import { OverlayPanelPassThroughOptions } from '../components/overlaypanel/Overl
|
|
|
20
20
|
import { InputURLProps } from '../components/inputurl/InputURL.vue.d';
|
|
21
21
|
import { InputEmailProps } from '../components/inputemail/InputEmail.vue.d';
|
|
22
22
|
import { ImageProps } from '../components/image/Image.vue.d';
|
|
23
|
+
import { MenuLocaleConfig } from '../components/menu/Menu.vue.d';
|
|
23
24
|
/**
|
|
24
25
|
* A Record of component names with theirs props interface
|
|
25
26
|
*/
|
|
@@ -47,6 +48,7 @@ interface ComponentLocaleConfig {
|
|
|
47
48
|
InputPhoneNumber?: InputPhoneNumberLocaleConfig;
|
|
48
49
|
InputNumber?: InputNumberLocaleConfig;
|
|
49
50
|
Calendar?: CalendarLocaleConfig;
|
|
51
|
+
Menu?: MenuLocaleConfig;
|
|
50
52
|
}
|
|
51
53
|
export interface LocaleConfig {
|
|
52
54
|
global: Partial<PrimeVueLocaleOptions>;
|
package/style.css
CHANGED
|
@@ -10,4 +10,4 @@ html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-
|
|
|
10
10
|
Updated for @stackoverflow/stacks v0.64.0
|
|
11
11
|
Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
|
|
12
12
|
Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
|
|
13
|
-
*/.hljs{color:#2f3337;background:#f6f6f6}.hljs-subst{color:#2f3337}.hljs-comment{color:#656e77}.hljs-keyword,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-section,.hljs-attr{color:#015692}.hljs-attribute{color:#803378}.hljs-name,.hljs-type,.hljs-number,.hljs-selector-id,.hljs-quote,.hljs-template-tag{color:#b75501}.hljs-selector-class{color:#015692}.hljs-string,.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr{color:#54790d}.hljs-meta,.hljs-selector-pseudo{color:#015692}.hljs-built_in,.hljs-title,.hljs-literal{color:#b75501}.hljs-bullet,.hljs-code{color:#535a60}.hljs-meta .hljs-string{color:#54790d}.hljs-deletion{color:#c02d2e}.hljs-addition{color:#2f6f44}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.cropper-event-notification[data-v-b3a0d4df]{background:#0009;color:#fff;position:absolute;left:0;top:0;bottom:0;right:0;display:flex;justify-content:center;align-items:center;text-align:center;font-size:20px;transition:opacity .5s;opacity:0;pointer-events:none;padding-left:50px;padding-right:50px}.cropper-event-notification--visible[data-v-b3a0d4df]{transition:opacity .25s!important;pointer-events:all!important;opacity:1!important}.vue-advanced-cropper{text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;max-height:100%;max-width:100%;direction:ltr}.vue-advanced-cropper__stretcher{pointer-events:none;position:relative;max-width:100%;max-height:100%}.vue-advanced-cropper__image{-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;transform-origin:center;max-width:none!important}.vue-advanced-cropper__background,.vue-advanced-cropper__foreground{opacity:1;background:#000;transform:translate(-50%,-50%);position:absolute;top:50%;left:50%}.vue-advanced-cropper__foreground{opacity:.5}.vue-advanced-cropper__boundaries{opacity:1;transform:translate(-50%,-50%);position:absolute;left:50%;top:50%}.vue-advanced-cropper__cropper-wrapper{width:100%;height:100%}.vue-advanced-cropper__image-wrapper{overflow:hidden;position:absolute;width:100%;height:100%}.vue-advanced-cropper__stencil-wrapper{position:absolute}.vue-simple-handler{display:block;background:#fff;height:10px;width:10px}.vue-handler-wrapper{position:absolute;transform:translate(-50%,-50%);width:30px;height:30px}.vue-handler-wrapper__draggable{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.vue-handler-wrapper--west-north{cursor:nw-resize}.vue-handler-wrapper--north{cursor:n-resize}.vue-handler-wrapper--east-north{cursor:ne-resize}.vue-handler-wrapper--east{cursor:e-resize}.vue-handler-wrapper--east-south{cursor:se-resize}.vue-handler-wrapper--south{cursor:s-resize}.vue-handler-wrapper--west-south{cursor:sw-resize}.vue-handler-wrapper--west{cursor:w-resize}.vue-handler-wrapper--disabled{cursor:auto}.vue-line-wrapper{background:none;position:absolute;display:flex;align-items:center;justify-content:center}.vue-line-wrapper--north,.vue-line-wrapper--south{height:12px;width:100%;left:0;transform:translateY(-50%)}.vue-line-wrapper--north{top:0;cursor:n-resize}.vue-line-wrapper--south{top:100%;cursor:s-resize}.vue-line-wrapper--east,.vue-line-wrapper--west{width:12px;height:100%;transform:translate(-50%);top:0}.vue-line-wrapper--east{left:100%;cursor:e-resize}.vue-line-wrapper--west{left:0;cursor:w-resize}.vue-line-wrapper--disabled{cursor:auto}.vue-bounding-box{position:relative;height:100%;width:100%}.vue-bounding-box__handler{position:absolute}.vue-bounding-box__handler--west-north{left:0;top:0}.vue-bounding-box__handler--north{left:50%;top:0}.vue-bounding-box__handler--east-north{left:100%;top:0}.vue-bounding-box__handler--east{left:100%;top:50%}.vue-bounding-box__handler--east-south{left:100%;top:100%}.vue-bounding-box__handler--south{left:50%;top:100%}.vue-bounding-box__handler--west-south{left:0;top:100%}.vue-bounding-box__handler--west{left:0;top:50%}.vue-draggable-area{position:relative}.vue-preview-result{overflow:hidden;box-sizing:border-box;position:absolute;height:100%;width:100%}.vue-preview-result__wrapper{position:absolute}.vue-preview-result__image{pointer-events:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform-origin:center;max-width:none!important}.vue-rectangle-stencil{position:absolute;height:100%;width:100%;box-sizing:border-box}.vue-rectangle-stencil__preview{position:absolute;width:100%;height:100%}.vue-rectangle-stencil--movable{cursor:move}.vue-circle-stencil{position:absolute;height:100%;width:100%;box-sizing:content-box;cursor:move}.vue-circle-stencil__preview{border-radius:50%;position:absolute;width:100%;height:100%}.vue-circle-stencil--movable{cursor:move}.vue-preview{overflow:hidden;box-sizing:border-box;position:relative}.vue-preview--fill{width:100%;height:100%;position:absolute}.vue-preview__wrapper{position:absolute;height:100%;width:100%}.vue-preview__image{pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform-origin:center;max-width:none!important}.vue-simple-line{background:none;transition:border .5s;border-color:#ffffff4d;border-width:0;border-style:solid}.vue-simple-line--south,.vue-simple-line--north{height:0;width:100%}.vue-simple-line--east,.vue-simple-line--west{height:100%;width:0}.vue-simple-line--east{border-right-width:1px}.vue-simple-line--west{border-left-width:1px}.vue-simple-line--south{border-bottom-width:1px}.vue-simple-line--north{border-top-width:1px}.vue-simple-line--hover{opacity:1;border-color:#fff}body.loading,body.loading *{overflow:hidden}.wrap-text[data-v-5557db8b]{white-space:nowrap;word-wrap:break-word;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap}.scrollbar-hide[data-v-
|
|
13
|
+
*/.hljs{color:#2f3337;background:#f6f6f6}.hljs-subst{color:#2f3337}.hljs-comment{color:#656e77}.hljs-keyword,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-section,.hljs-attr{color:#015692}.hljs-attribute{color:#803378}.hljs-name,.hljs-type,.hljs-number,.hljs-selector-id,.hljs-quote,.hljs-template-tag{color:#b75501}.hljs-selector-class{color:#015692}.hljs-string,.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr{color:#54790d}.hljs-meta,.hljs-selector-pseudo{color:#015692}.hljs-built_in,.hljs-title,.hljs-literal{color:#b75501}.hljs-bullet,.hljs-code{color:#535a60}.hljs-meta .hljs-string{color:#54790d}.hljs-deletion{color:#c02d2e}.hljs-addition{color:#2f6f44}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.cropper-event-notification[data-v-b3a0d4df]{background:#0009;color:#fff;position:absolute;left:0;top:0;bottom:0;right:0;display:flex;justify-content:center;align-items:center;text-align:center;font-size:20px;transition:opacity .5s;opacity:0;pointer-events:none;padding-left:50px;padding-right:50px}.cropper-event-notification--visible[data-v-b3a0d4df]{transition:opacity .25s!important;pointer-events:all!important;opacity:1!important}.vue-advanced-cropper{text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;max-height:100%;max-width:100%;direction:ltr}.vue-advanced-cropper__stretcher{pointer-events:none;position:relative;max-width:100%;max-height:100%}.vue-advanced-cropper__image{-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;transform-origin:center;max-width:none!important}.vue-advanced-cropper__background,.vue-advanced-cropper__foreground{opacity:1;background:#000;transform:translate(-50%,-50%);position:absolute;top:50%;left:50%}.vue-advanced-cropper__foreground{opacity:.5}.vue-advanced-cropper__boundaries{opacity:1;transform:translate(-50%,-50%);position:absolute;left:50%;top:50%}.vue-advanced-cropper__cropper-wrapper{width:100%;height:100%}.vue-advanced-cropper__image-wrapper{overflow:hidden;position:absolute;width:100%;height:100%}.vue-advanced-cropper__stencil-wrapper{position:absolute}.vue-simple-handler{display:block;background:#fff;height:10px;width:10px}.vue-handler-wrapper{position:absolute;transform:translate(-50%,-50%);width:30px;height:30px}.vue-handler-wrapper__draggable{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.vue-handler-wrapper--west-north{cursor:nw-resize}.vue-handler-wrapper--north{cursor:n-resize}.vue-handler-wrapper--east-north{cursor:ne-resize}.vue-handler-wrapper--east{cursor:e-resize}.vue-handler-wrapper--east-south{cursor:se-resize}.vue-handler-wrapper--south{cursor:s-resize}.vue-handler-wrapper--west-south{cursor:sw-resize}.vue-handler-wrapper--west{cursor:w-resize}.vue-handler-wrapper--disabled{cursor:auto}.vue-line-wrapper{background:none;position:absolute;display:flex;align-items:center;justify-content:center}.vue-line-wrapper--north,.vue-line-wrapper--south{height:12px;width:100%;left:0;transform:translateY(-50%)}.vue-line-wrapper--north{top:0;cursor:n-resize}.vue-line-wrapper--south{top:100%;cursor:s-resize}.vue-line-wrapper--east,.vue-line-wrapper--west{width:12px;height:100%;transform:translate(-50%);top:0}.vue-line-wrapper--east{left:100%;cursor:e-resize}.vue-line-wrapper--west{left:0;cursor:w-resize}.vue-line-wrapper--disabled{cursor:auto}.vue-bounding-box{position:relative;height:100%;width:100%}.vue-bounding-box__handler{position:absolute}.vue-bounding-box__handler--west-north{left:0;top:0}.vue-bounding-box__handler--north{left:50%;top:0}.vue-bounding-box__handler--east-north{left:100%;top:0}.vue-bounding-box__handler--east{left:100%;top:50%}.vue-bounding-box__handler--east-south{left:100%;top:100%}.vue-bounding-box__handler--south{left:50%;top:100%}.vue-bounding-box__handler--west-south{left:0;top:100%}.vue-bounding-box__handler--west{left:0;top:50%}.vue-draggable-area{position:relative}.vue-preview-result{overflow:hidden;box-sizing:border-box;position:absolute;height:100%;width:100%}.vue-preview-result__wrapper{position:absolute}.vue-preview-result__image{pointer-events:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform-origin:center;max-width:none!important}.vue-rectangle-stencil{position:absolute;height:100%;width:100%;box-sizing:border-box}.vue-rectangle-stencil__preview{position:absolute;width:100%;height:100%}.vue-rectangle-stencil--movable{cursor:move}.vue-circle-stencil{position:absolute;height:100%;width:100%;box-sizing:content-box;cursor:move}.vue-circle-stencil__preview{border-radius:50%;position:absolute;width:100%;height:100%}.vue-circle-stencil--movable{cursor:move}.vue-preview{overflow:hidden;box-sizing:border-box;position:relative}.vue-preview--fill{width:100%;height:100%;position:absolute}.vue-preview__wrapper{position:absolute;height:100%;width:100%}.vue-preview__image{pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform-origin:center;max-width:none!important}.vue-simple-line{background:none;transition:border .5s;border-color:#ffffff4d;border-width:0;border-style:solid}.vue-simple-line--south,.vue-simple-line--north{height:0;width:100%}.vue-simple-line--east,.vue-simple-line--west{height:100%;width:0}.vue-simple-line--east{border-right-width:1px}.vue-simple-line--west{border-left-width:1px}.vue-simple-line--south{border-bottom-width:1px}.vue-simple-line--north{border-top-width:1px}.vue-simple-line--hover{opacity:1;border-color:#fff}body.loading,body.loading *{overflow:hidden}.wrap-text[data-v-5557db8b]{white-space:nowrap;word-wrap:break-word;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap}.scrollbar-hide[data-v-a30e8991]::-webkit-scrollbar{display:none}.scrollbar-hide[data-v-a30e8991]{-ms-overflow-style:none;scrollbar-width:none}.slide-fade-enter-active[data-v-0d731f6d]{transition:all .3s ease-out}.slide-fade-leave-active[data-v-0d731f6d]{transition:all .3s ease-in-out}.slide-fade-enter-from[data-v-0d731f6d],.slide-fade-leave-to[data-v-0d731f6d]{transform:translateY(-15px);opacity:0}.detailtask-scrollbar-hide::-webkit-scrollbar{display:none}.detailtask-scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}
|
package/utils/date.util.d.ts
CHANGED
|
@@ -15,3 +15,9 @@ export declare const formatISODate: (date: string | Date) => string;
|
|
|
15
15
|
* @returns The formatted date string.
|
|
16
16
|
*/
|
|
17
17
|
export declare const formatDateReadable: (date: Date, maxSeconds?: number) => string;
|
|
18
|
+
export declare const getRemainingTime: (deadline: string) => {
|
|
19
|
+
seconds: number;
|
|
20
|
+
days: number;
|
|
21
|
+
hours: number;
|
|
22
|
+
minutes: number;
|
|
23
|
+
};
|