@antify/ui-module 1.2.1 → 1.4.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/dist/module.json +1 -1
- package/dist/runtime/components/AntTooltip.vue +69 -63
- package/dist/runtime/components/__stories/AntTooltip.stories.d.ts +5 -0
- package/dist/runtime/components/__stories/AntTooltip.stories.mjs +33 -11
- package/dist/runtime/components/buttons/AntActionButton.vue +63 -0
- package/dist/runtime/components/buttons/AntButton.vue +3 -3
- package/dist/runtime/components/buttons/AntCreateButton.vue +23 -14
- package/dist/runtime/components/buttons/AntDeleteButton.vue +23 -12
- package/dist/runtime/components/buttons/AntSaveAndNewButton.vue +24 -14
- package/dist/runtime/components/buttons/AntSaveButton.vue +23 -11
- package/dist/runtime/components/buttons/__stories/AntActionButton.stories.d.ts +11 -0
- package/dist/runtime/components/buttons/__stories/AntActionButton.stories.mjs +79 -0
- package/dist/runtime/components/buttons/__stories/AntCreateButton.stories.d.ts +1 -0
- package/dist/runtime/components/buttons/__stories/AntCreateButton.stories.mjs +9 -0
- package/dist/runtime/components/buttons/__stories/AntDeleteButton.stories.d.ts +1 -0
- package/dist/runtime/components/buttons/__stories/AntDeleteButton.stories.mjs +9 -0
- package/dist/runtime/components/buttons/__stories/AntSaveAndNewButton.stories.d.ts +1 -0
- package/dist/runtime/components/buttons/__stories/AntSaveAndNewButton.stories.mjs +9 -0
- package/dist/runtime/components/buttons/__stories/AntSaveButton.stories.d.ts +1 -0
- package/dist/runtime/components/buttons/__stories/AntSaveButton.stories.mjs +9 -0
- package/dist/runtime/components/crud/AntCrudDetailActions.vue +10 -3
- package/dist/runtime/components/crud/AntCrudDetailNav.vue +21 -15
- package/dist/runtime/components/crud/AntCrudTableFilter.vue +35 -33
- package/dist/runtime/utils.d.ts +6 -0
- package/dist/runtime/utils.mjs +21 -0
- package/package.json +1 -1
- package/src/runtime/components/AntTooltip.vue +69 -63
- package/src/runtime/components/buttons/AntActionButton.vue +63 -0
- package/src/runtime/components/buttons/AntButton.vue +3 -3
- package/src/runtime/components/buttons/AntCreateButton.vue +23 -14
- package/src/runtime/components/buttons/AntDeleteButton.vue +23 -12
- package/src/runtime/components/buttons/AntSaveAndNewButton.vue +24 -14
- package/src/runtime/components/buttons/AntSaveButton.vue +23 -11
- package/src/runtime/components/crud/AntCrudDetailActions.vue +10 -3
- package/src/runtime/components/crud/AntCrudDetailNav.vue +21 -15
- package/src/runtime/components/crud/AntCrudTableFilter.vue +35 -33
|
@@ -1,32 +1,41 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import {Grouped} from '../../enums/Grouped.enum';
|
|
3
3
|
import {Size} from '../../enums/Size.enum';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import AntActionButton from './AntActionButton.vue';
|
|
5
|
+
import {Position} from '../../enums';
|
|
6
6
|
|
|
7
7
|
defineEmits(['click', 'blur']);
|
|
8
|
-
defineProps<{
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
withDefaults(defineProps<{
|
|
9
|
+
size?: Size;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
grouped?: Grouped;
|
|
12
|
+
skeleton?: boolean;
|
|
13
|
+
expanded?: boolean;
|
|
14
|
+
canCreate?: boolean;
|
|
15
|
+
invalidPermissionTooltipPosition?: Position;
|
|
16
|
+
}>(), {
|
|
17
|
+
canCreate: true
|
|
18
|
+
});
|
|
15
19
|
</script>
|
|
16
20
|
|
|
17
21
|
<template>
|
|
18
|
-
<
|
|
22
|
+
<AntActionButton
|
|
19
23
|
:size="size"
|
|
20
24
|
:disabled="disabled"
|
|
21
25
|
:grouped="grouped"
|
|
22
26
|
:skeleton="skeleton"
|
|
23
27
|
:expanded="expanded"
|
|
24
|
-
:
|
|
25
|
-
|
|
28
|
+
:has-permission="canCreate"
|
|
29
|
+
:invalid-permission-tooltip-position="invalidPermissionTooltipPosition"
|
|
26
30
|
data-e2e="create-button"
|
|
27
31
|
@click="$emit('click')"
|
|
28
32
|
@blur="$emit('blur')"
|
|
29
33
|
>
|
|
30
|
-
Create
|
|
31
|
-
|
|
34
|
+
<template #default>Create</template>
|
|
35
|
+
|
|
36
|
+
<template #invalidPermissionTooltipContent>
|
|
37
|
+
You have no permission to create new entries.<br>
|
|
38
|
+
Please contact your administrator.
|
|
39
|
+
</template>
|
|
40
|
+
</AntActionButton>
|
|
32
41
|
</template>
|
|
@@ -2,31 +2,42 @@
|
|
|
2
2
|
import {Grouped} from '../../enums/Grouped.enum';
|
|
3
3
|
import {Size} from '../../enums/Size.enum';
|
|
4
4
|
import {ColorType} from '../../enums/ColorType.enum';
|
|
5
|
-
import
|
|
5
|
+
import AntActionButton from './AntActionButton.vue';
|
|
6
|
+
import {Position} from '../../enums';
|
|
6
7
|
|
|
7
8
|
defineEmits(['click', 'blur']);
|
|
8
|
-
defineProps<{
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
withDefaults(defineProps<{
|
|
10
|
+
size?: Size;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
grouped?: Grouped;
|
|
13
|
+
skeleton?: boolean;
|
|
14
|
+
expanded?: boolean;
|
|
15
|
+
canDelete?: boolean;
|
|
16
|
+
invalidPermissionTooltipPosition?: Position;
|
|
17
|
+
}>(), {
|
|
18
|
+
canDelete: true
|
|
19
|
+
})
|
|
15
20
|
</script>
|
|
16
21
|
|
|
17
22
|
<template>
|
|
18
|
-
<
|
|
23
|
+
<AntActionButton
|
|
19
24
|
:size="size"
|
|
20
25
|
:disabled="disabled"
|
|
21
26
|
:grouped="grouped"
|
|
22
27
|
:skeleton="skeleton"
|
|
23
28
|
:expanded="expanded"
|
|
24
29
|
:color-type="ColorType.danger"
|
|
25
|
-
|
|
30
|
+
:has-permission="canDelete"
|
|
31
|
+
:invalid-permission-tooltip-position="invalidPermissionTooltipPosition"
|
|
26
32
|
data-e2e="delete-button"
|
|
27
33
|
@click="$emit('click')"
|
|
28
34
|
@blur="$emit('blur')"
|
|
29
35
|
>
|
|
30
|
-
Delete
|
|
31
|
-
|
|
36
|
+
<template #default>Delete</template>
|
|
37
|
+
|
|
38
|
+
<template #invalidPermissionTooltipContent>
|
|
39
|
+
You have no permission to delete this entry.<br>
|
|
40
|
+
Please contact your administrator.
|
|
41
|
+
</template>
|
|
42
|
+
</AntActionButton>
|
|
32
43
|
</template>
|
|
@@ -1,32 +1,42 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import {Grouped} from '../../enums/Grouped.enum';
|
|
3
3
|
import {Size} from '../../enums/Size.enum';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import AntActionButton from './AntActionButton.vue';
|
|
5
|
+
import {Position} from '../../enums';
|
|
6
6
|
|
|
7
7
|
defineEmits(['click', 'blur']);
|
|
8
|
-
defineProps<{
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
withDefaults(defineProps<{
|
|
9
|
+
size?: Size;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
grouped?: Grouped;
|
|
12
|
+
skeleton?: boolean;
|
|
13
|
+
expanded?: boolean;
|
|
14
|
+
canSave?: boolean;
|
|
15
|
+
invalidPermissionTooltipPosition?: Position;
|
|
16
|
+
}>(), {
|
|
17
|
+
canSave: true
|
|
18
|
+
});
|
|
15
19
|
</script>
|
|
16
20
|
|
|
17
21
|
<template>
|
|
18
|
-
<
|
|
22
|
+
<AntActionButton
|
|
19
23
|
:size="size"
|
|
20
24
|
:disabled="disabled"
|
|
21
25
|
:grouped="grouped"
|
|
22
26
|
:skeleton="skeleton"
|
|
23
27
|
:expanded="expanded"
|
|
24
|
-
:
|
|
25
|
-
|
|
28
|
+
:filled="false"
|
|
29
|
+
:has-permission="canSave"
|
|
30
|
+
:invalid-permission-tooltip-position="invalidPermissionTooltipPosition"
|
|
26
31
|
data-e2e="save-and-new-button"
|
|
27
32
|
@click="$emit('click')"
|
|
28
33
|
@blur="$emit('blur')"
|
|
29
34
|
>
|
|
30
|
-
Save and new
|
|
31
|
-
|
|
35
|
+
<template #default>Save and new</template>
|
|
36
|
+
|
|
37
|
+
<template #invalidPermissionTooltipContent>
|
|
38
|
+
You have no permission to save this entry.<br>
|
|
39
|
+
Please contact your administrator.
|
|
40
|
+
</template>
|
|
41
|
+
</AntActionButton>
|
|
32
42
|
</template>
|
|
@@ -2,20 +2,25 @@
|
|
|
2
2
|
import {Grouped} from '../../enums/Grouped.enum';
|
|
3
3
|
import {Size} from '../../enums/Size.enum';
|
|
4
4
|
import {ColorType} from '../../enums/ColorType.enum';
|
|
5
|
-
import
|
|
5
|
+
import AntActionButton from './AntActionButton.vue';
|
|
6
|
+
import {Position} from '../../enums';
|
|
6
7
|
|
|
7
8
|
defineEmits(['click', 'blur']);
|
|
8
|
-
defineProps<{
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
withDefaults(defineProps<{
|
|
10
|
+
size?: Size;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
grouped?: Grouped;
|
|
13
|
+
skeleton?: boolean;
|
|
14
|
+
expanded?: boolean;
|
|
15
|
+
canSave?: boolean;
|
|
16
|
+
invalidPermissionTooltipPosition?: Position;
|
|
17
|
+
}>(), {
|
|
18
|
+
canSave: true
|
|
19
|
+
});
|
|
15
20
|
</script>
|
|
16
21
|
|
|
17
22
|
<template>
|
|
18
|
-
<
|
|
23
|
+
<AntActionButton
|
|
19
24
|
:size="size"
|
|
20
25
|
:disabled="disabled"
|
|
21
26
|
:grouped="grouped"
|
|
@@ -23,9 +28,16 @@ defineProps<{
|
|
|
23
28
|
:expanded="expanded"
|
|
24
29
|
:color-type="ColorType.primary"
|
|
25
30
|
data-e2e="save-button"
|
|
31
|
+
:has-permission="canSave"
|
|
32
|
+
:invalid-permission-tooltip-position="invalidPermissionTooltipPosition"
|
|
26
33
|
@click="$emit('click')"
|
|
27
34
|
@blur="$emit('blur')"
|
|
28
35
|
>
|
|
29
|
-
Save
|
|
30
|
-
|
|
36
|
+
<template #default>Save</template>
|
|
37
|
+
|
|
38
|
+
<template #invalidPermissionTooltipContent>
|
|
39
|
+
You have no permission to save this entry.<br>
|
|
40
|
+
Please contact your administrator.
|
|
41
|
+
</template>
|
|
42
|
+
</AntActionButton>
|
|
31
43
|
</template>
|
|
@@ -8,14 +8,19 @@ defineEmits(['back', 'save', 'save-and-new']);
|
|
|
8
8
|
withDefaults(defineProps<{
|
|
9
9
|
disabled?: boolean
|
|
10
10
|
skeleton?: boolean
|
|
11
|
+
canSave?: boolean
|
|
11
12
|
}>(), {
|
|
12
13
|
disabled: false,
|
|
13
14
|
skeleton: false,
|
|
15
|
+
canSave: true
|
|
14
16
|
});
|
|
15
17
|
</script>
|
|
16
18
|
|
|
17
19
|
<template>
|
|
18
|
-
<div
|
|
20
|
+
<div
|
|
21
|
+
class="flex justify-between p-2.5 gap-2.5 bg-neutral-50"
|
|
22
|
+
data-e2e="crud-detail-actions"
|
|
23
|
+
>
|
|
19
24
|
<div class="flex gap-2.5">
|
|
20
25
|
<slot name="buttons-left">
|
|
21
26
|
<AntButton
|
|
@@ -31,21 +36,23 @@ withDefaults(defineProps<{
|
|
|
31
36
|
</div>
|
|
32
37
|
|
|
33
38
|
<div class="flex gap-2.5">
|
|
34
|
-
<slot name="before-buttons-right"/>
|
|
39
|
+
<slot name="before-buttons-right" />
|
|
35
40
|
<slot name="buttons-right">
|
|
36
41
|
<AntSaveAndNewButton
|
|
37
42
|
:skeleton="skeleton"
|
|
38
43
|
:disabled="disabled"
|
|
44
|
+
:can-save="canSave"
|
|
39
45
|
@click="$emit('save-and-new')"
|
|
40
46
|
/>
|
|
41
47
|
|
|
42
48
|
<AntSaveButton
|
|
43
49
|
:skeleton="skeleton"
|
|
44
50
|
:disabled="disabled"
|
|
51
|
+
:can-save="canSave"
|
|
45
52
|
@click="$emit('save')"
|
|
46
53
|
/>
|
|
47
54
|
</slot>
|
|
48
|
-
<slot name="after-buttons-right"/>
|
|
55
|
+
<slot name="after-buttons-right" />
|
|
49
56
|
</div>
|
|
50
57
|
</div>
|
|
51
58
|
</template>
|
|
@@ -5,40 +5,46 @@ import AntTabs from '../tabs/AntTabs.vue';
|
|
|
5
5
|
import AntDeleteButton from '../buttons/AntDeleteButton.vue';
|
|
6
6
|
import AntDeleteDialog from '../dialogs/AntDeleteDialog.vue';
|
|
7
7
|
import {ref} from 'vue';
|
|
8
|
+
import {Position} from '../../enums';
|
|
8
9
|
|
|
9
10
|
defineEmits(['delete']);
|
|
10
11
|
withDefaults(defineProps<{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
tabItems?: TabItem[]
|
|
13
|
+
deleteButtonDisabled?: boolean
|
|
14
|
+
getEntityName: () => string
|
|
15
|
+
canDelete?: boolean
|
|
14
16
|
}>(), {
|
|
15
|
-
|
|
17
|
+
deleteButtonDisabled: false,
|
|
18
|
+
canDelete: true
|
|
16
19
|
});
|
|
17
20
|
|
|
18
21
|
const dialogOpen = ref(false);
|
|
19
22
|
</script>
|
|
20
23
|
|
|
21
24
|
<template>
|
|
22
|
-
<div
|
|
25
|
+
<div
|
|
26
|
+
class="flex justify-between items-stretch gap-2.5 bg-neutral-50"
|
|
27
|
+
data-e2e="crud-detail-nav"
|
|
28
|
+
>
|
|
23
29
|
<slot name="tabs">
|
|
24
30
|
<AntTabs
|
|
25
|
-
:
|
|
31
|
+
:tab-items="tabItems"
|
|
26
32
|
/>
|
|
27
33
|
</slot>
|
|
28
34
|
|
|
29
35
|
<div class="flex gap-2.5 pr-2.5 py-2.5">
|
|
30
36
|
<slot name="buttons">
|
|
31
|
-
<slot name="before-delete-button"/>
|
|
37
|
+
<slot name="before-delete-button" />
|
|
32
38
|
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
<AntDeleteButton
|
|
40
|
+
:disabled="deleteButtonDisabled || !canDelete"
|
|
41
|
+
filled
|
|
42
|
+
:can-delete="canDelete"
|
|
43
|
+
:invalid-permission-tooltip-position="Position.left"
|
|
44
|
+
@click="() => dialogOpen = true"
|
|
45
|
+
/>
|
|
40
46
|
|
|
41
|
-
<slot name="after-delete-button"/>
|
|
47
|
+
<slot name="after-delete-button" />
|
|
42
48
|
</slot>
|
|
43
49
|
</div>
|
|
44
50
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
// TODO:: This component works only with vue-router. Make it work in storybook.
|
|
3
|
-
// TODO:: add skeleton
|
|
4
3
|
import AntSearch from '../form/AntSearch.vue';
|
|
5
4
|
import AntCreateButton from '../buttons/AntCreateButton.vue';
|
|
6
5
|
import AntDropdown from '../AntDropdown.vue';
|
|
7
|
-
import AntIcon from '../AntIcon.vue';
|
|
8
6
|
import {computed, ref, watch} from 'vue';
|
|
9
7
|
import AntButton from '../buttons/AntButton.vue';
|
|
10
8
|
import {faFilter, faMultiply} from '@fortawesome/free-solid-svg-icons';
|
|
@@ -12,17 +10,19 @@ import {ColorType, Grouped, Position} from '../../enums';
|
|
|
12
10
|
import {useRoute, useRouter} from 'vue-router';
|
|
13
11
|
|
|
14
12
|
const props = withDefaults(defineProps<{
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
fullWidth?: boolean,
|
|
14
|
+
showFilter?: boolean,
|
|
15
|
+
searchQuery?: string,
|
|
16
|
+
hasFilter?: boolean,
|
|
17
|
+
canCreate?: boolean,
|
|
18
|
+
skeleton?: boolean,
|
|
20
19
|
}>(), {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
fullWidth: true,
|
|
21
|
+
showFilter: true,
|
|
22
|
+
searchQuery: 'search',
|
|
23
|
+
hasFilter: false,
|
|
24
|
+
canCreate: true,
|
|
25
|
+
skeleton: false,
|
|
26
26
|
});
|
|
27
27
|
const emit = defineEmits(['search', 'create', 'removeFilter']);
|
|
28
28
|
const router = useRouter();
|
|
@@ -31,32 +31,32 @@ const route = useRoute();
|
|
|
31
31
|
const showDropdown = ref(false);
|
|
32
32
|
const _fullWidth = ref(props.fullWidth)
|
|
33
33
|
const search = computed({
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
get: () => route.query[props.searchQuery] as string || '',
|
|
35
|
+
set: (value) => {
|
|
36
|
+
const query = {
|
|
37
|
+
...route.query,
|
|
38
|
+
[props.searchQuery]: value
|
|
39
|
+
}
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
if (!value) {
|
|
42
|
+
delete query[props.searchQuery];
|
|
43
|
+
}
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
(async () => {
|
|
46
|
+
await router.replace({
|
|
47
|
+
...route,
|
|
48
|
+
query
|
|
49
|
+
})
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
emit('search', value)
|
|
52
|
+
})()
|
|
53
|
+
}
|
|
54
54
|
})
|
|
55
55
|
|
|
56
56
|
watch(() => props.fullWidth, (val) => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
_fullWidth.value = val
|
|
59
|
+
}, val ? 250 : 300)
|
|
60
60
|
})
|
|
61
61
|
</script>
|
|
62
62
|
|
|
@@ -102,7 +102,7 @@ watch(() => props.fullWidth, (val) => {
|
|
|
102
102
|
</div>
|
|
103
103
|
|
|
104
104
|
<template #content>
|
|
105
|
-
<slot name="dropdownContent"/>
|
|
105
|
+
<slot name="dropdownContent" />
|
|
106
106
|
</template>
|
|
107
107
|
</AntDropdown>
|
|
108
108
|
</div>
|
|
@@ -112,6 +112,8 @@ watch(() => props.fullWidth, (val) => {
|
|
|
112
112
|
<AntCreateButton
|
|
113
113
|
filled
|
|
114
114
|
:skeleton="skeleton"
|
|
115
|
+
:can-create="canCreate"
|
|
116
|
+
:invalid-permission-tooltip-position="Position.left"
|
|
115
117
|
@click="() => emit('create')"
|
|
116
118
|
/>
|
|
117
119
|
</slot>
|