@antify/ui-module 1.3.0 → 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 +35 -13
- package/dist/runtime/components/buttons/AntButton.vue +3 -3
- package/dist/runtime/components/buttons/AntCreateButton.vue +20 -8
- package/dist/runtime/components/buttons/AntDeleteButton.vue +20 -8
- package/dist/runtime/components/buttons/AntSaveAndNewButton.vue +21 -8
- package/dist/runtime/components/buttons/AntSaveButton.vue +20 -8
- package/dist/runtime/components/buttons/__stories/AntActionButton.stories.d.ts +1 -0
- package/dist/runtime/components/buttons/__stories/AntActionButton.stories.mjs +22 -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 +35 -13
- package/src/runtime/components/buttons/AntButton.vue +3 -3
- package/src/runtime/components/buttons/AntCreateButton.vue +20 -8
- package/src/runtime/components/buttons/AntDeleteButton.vue +20 -8
- package/src/runtime/components/buttons/AntSaveAndNewButton.vue +21 -8
- package/src/runtime/components/buttons/AntSaveButton.vue +20 -8
- 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
|
@@ -3,15 +3,20 @@ import {Grouped} from '../../enums/Grouped.enum';
|
|
|
3
3
|
import {Size} from '../../enums/Size.enum';
|
|
4
4
|
import {ColorType} from '../../enums/ColorType.enum';
|
|
5
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>
|
|
@@ -22,10 +27,17 @@ defineProps<{
|
|
|
22
27
|
:skeleton="skeleton"
|
|
23
28
|
:expanded="expanded"
|
|
24
29
|
:color-type="ColorType.danger"
|
|
30
|
+
:has-permission="canDelete"
|
|
31
|
+
:invalid-permission-tooltip-position="invalidPermissionTooltipPosition"
|
|
25
32
|
data-e2e="delete-button"
|
|
26
33
|
@click="$emit('click')"
|
|
27
34
|
@blur="$emit('blur')"
|
|
28
35
|
>
|
|
29
|
-
Delete
|
|
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>
|
|
30
42
|
</AntActionButton>
|
|
31
43
|
</template>
|
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
import {Grouped} from '../../enums/Grouped.enum';
|
|
3
3
|
import {Size} from '../../enums/Size.enum';
|
|
4
4
|
import AntActionButton from './AntActionButton.vue';
|
|
5
|
+
import {Position} from '../../enums';
|
|
5
6
|
|
|
6
7
|
defineEmits(['click', 'blur']);
|
|
7
|
-
defineProps<{
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
+
});
|
|
14
19
|
</script>
|
|
15
20
|
|
|
16
21
|
<template>
|
|
@@ -20,10 +25,18 @@ defineProps<{
|
|
|
20
25
|
:grouped="grouped"
|
|
21
26
|
:skeleton="skeleton"
|
|
22
27
|
:expanded="expanded"
|
|
28
|
+
:filled="false"
|
|
29
|
+
:has-permission="canSave"
|
|
30
|
+
:invalid-permission-tooltip-position="invalidPermissionTooltipPosition"
|
|
23
31
|
data-e2e="save-and-new-button"
|
|
24
32
|
@click="$emit('click')"
|
|
25
33
|
@blur="$emit('blur')"
|
|
26
34
|
>
|
|
27
|
-
Save and new
|
|
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>
|
|
28
41
|
</AntActionButton>
|
|
29
42
|
</template>
|
|
@@ -3,15 +3,20 @@ import {Grouped} from '../../enums/Grouped.enum';
|
|
|
3
3
|
import {Size} from '../../enums/Size.enum';
|
|
4
4
|
import {ColorType} from '../../enums/ColorType.enum';
|
|
5
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>
|
|
@@ -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
|
|
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>
|
|
30
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>
|