@neutron.co.id/operasional-interfaces 1.17.31 → 1.17.32

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.
Files changed (27) hide show
  1. package/build/@office/config.mjs +3 -0
  2. package/build/@office/models/personalia/submission/SubmissionAction/SubmissionAction.vue +313 -0
  3. package/build/@office/models/personalia/submission/SubmissionAction/SubmissionActionDecision.vue +189 -0
  4. package/build/@office/models/personalia/submission/SubmissionAction/index.d.ts +2 -0
  5. package/build/@office/models/personalia/submission/SubmissionAction/index.mjs +2 -0
  6. package/build/@office/models/personalia/submission/SubmissionAudit.vue +60 -31
  7. package/build/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteModal.vue +94 -0
  8. package/build/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteViewModal.vue +149 -0
  9. package/build/@office/models/personalia/submission/SubmissionNoteModal/index.d.ts +1 -0
  10. package/build/@office/models/personalia/submission/SubmissionNoteModal/index.mjs +1 -0
  11. package/build/@office/models/personalia/submission/SubmissionStaff.vue +14 -0
  12. package/build/@office/models/personalia/submission/index.d.ts +2 -0
  13. package/build/@office/models/personalia/submission/index.mjs +2 -0
  14. package/build/@package/@office/models/personalia/submission/SubmissionAction/SubmissionAction.vue.d.ts +2 -0
  15. package/build/@package/@office/models/personalia/submission/SubmissionAction/SubmissionActionDecision.vue.d.ts +2 -0
  16. package/build/@package/@office/models/personalia/submission/SubmissionAction/index.d.ts +2 -0
  17. package/build/@package/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteModal.vue.d.ts +56 -0
  18. package/build/@package/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteViewModal.vue.d.ts +46 -0
  19. package/build/@package/@office/models/personalia/submission/SubmissionNoteModal/index.d.ts +1 -0
  20. package/build/@package/@office/models/personalia/submission/index.d.ts +2 -0
  21. package/build/mock/index.cjs +1079 -457
  22. package/build/mock/index.mjs +1081 -459
  23. package/build/mock/style.css +220 -2
  24. package/build/module.json +1 -1
  25. package/build/nuxt.json +1 -1
  26. package/build/nuxt.mjs +3 -0
  27. package/package.json +5 -5
@@ -0,0 +1,94 @@
1
+ <script lang="ts" setup>
2
+ import { NeonButton, NeonModal, NeonSheet } from '@neon.id/interfaces'
3
+ import { NeonTextarea } from '@neon.id/form'
4
+ import { ref, watch } from 'vue'
5
+
6
+ defineOptions({ name: 'SubmissionNoteModal' })
7
+
8
+ const props = defineProps({
9
+ isActive: {
10
+ type: Boolean,
11
+ default: false,
12
+ },
13
+ submissionId: {
14
+ type: String,
15
+ default: '',
16
+ },
17
+ note: {
18
+ type: String,
19
+ default: '',
20
+ },
21
+ isDisabled: {
22
+ type: Boolean,
23
+ default: false,
24
+ },
25
+ isSaving: {
26
+ type: Boolean,
27
+ default: false,
28
+ },
29
+ })
30
+
31
+ const emit = defineEmits(['close', 'save'])
32
+
33
+ const noteInput = ref(props.note)
34
+
35
+ watch(
36
+ () => props.note,
37
+ (newValue) => {
38
+ noteInput.value = newValue
39
+ },
40
+ )
41
+ </script>
42
+
43
+ <template>
44
+ <NeonModal size="lg" :is-active="isActive" @close="$emit('close')">
45
+ <NeonSheet title="Catatan Pengawas" @close="$emit('close')">
46
+ <div class="submission-note-modal">
47
+ <span class="label">Detail Catatan</span>
48
+ <NeonTextarea
49
+ v-model="noteInput"
50
+ placeholder="Silahkan berikan detail catatan"
51
+ :rows="5"
52
+ :is-disabled="isDisabled"
53
+ is-full
54
+ />
55
+ <ul class="list-disc pl-5">
56
+ <li>
57
+ <span class="text-sm">
58
+ Catatan ini bersifat privat dan hanya dapat dibaca oleh Anda serta
59
+ pihak penyetuju.
60
+ </span>
61
+ </li>
62
+ </ul>
63
+ </div>
64
+ <template #footer>
65
+ <div class="w-full py-4">
66
+ <NeonButton
67
+ label="Simpan Catatan"
68
+ color="dark"
69
+ display="fill"
70
+ :is-disabled="!noteInput || isSaving || isDisabled"
71
+ :is-loading="isSaving"
72
+ is-full
73
+ @click="emit('save', noteInput)"
74
+ />
75
+ </div>
76
+ </template>
77
+ </NeonSheet>
78
+ </NeonModal>
79
+ </template>
80
+
81
+ <style scoped>
82
+ .submission-note-modal {
83
+ @apply flex flex-col gap-4;
84
+
85
+ .label {
86
+ @apply text-base font-medium text-black;
87
+ }
88
+ }
89
+ :deep(.neon-sheet-footer) {
90
+ height: 70px !important;
91
+ padding-top: 20px !important;
92
+ padding-bottom: 20px !important;
93
+ }
94
+ </style>
@@ -0,0 +1,149 @@
1
+ <script lang="ts" setup>
2
+ import { NeonIcon, NeonModal, NeonSheet } from '@neon.id/interfaces'
3
+ import { ref, computed, type PropType } from 'vue'
4
+
5
+ defineOptions({ name: 'SubmissionNoteViewModal' })
6
+
7
+ interface SubmissionNoteOwner {
8
+ id: string
9
+ name: string
10
+ }
11
+
12
+ interface SubmissionNote {
13
+ id: string
14
+ note: string
15
+ owner: SubmissionNoteOwner
16
+ }
17
+
18
+ interface StaffNoteGroup {
19
+ staffId: string
20
+ staffName: string
21
+ notes: SubmissionNote[]
22
+ }
23
+
24
+ const props = defineProps({
25
+ isActive: {
26
+ type: Boolean,
27
+ default: false,
28
+ },
29
+ submissionId: {
30
+ type: String,
31
+ default: '',
32
+ },
33
+ notes: {
34
+ type: Array as PropType<SubmissionNote[]>,
35
+ default: () => [],
36
+ },
37
+ })
38
+
39
+ defineEmits(['close'])
40
+
41
+ const expanded = ref<Record<string, boolean>>({})
42
+
43
+ const groupedNotes = computed<StaffNoteGroup[]>(() => {
44
+ const map = new Map<string, StaffNoteGroup>()
45
+ for (const item of props.notes) {
46
+ const group = map.get(item.owner.id)
47
+ if (group) {
48
+ group.notes.push(item)
49
+ } else {
50
+ map.set(item.owner.id, {
51
+ staffId: item.owner.id,
52
+ staffName: item.owner.name,
53
+ notes: [item],
54
+ })
55
+ }
56
+ }
57
+ return Array.from(map.values())
58
+ })
59
+
60
+ function toggle(staffId: string) {
61
+ expanded.value[staffId] = !expanded.value[staffId]
62
+ }
63
+ </script>
64
+
65
+ <template>
66
+ <NeonModal size="lg" :is-active="isActive" @close="$emit('close')">
67
+ <NeonSheet title="Catatan Pengawas" @close="$emit('close')">
68
+ <div class="submission-note-modal">
69
+ <div v-if="groupedNotes.length" class="note-list">
70
+ <div
71
+ v-for="group in groupedNotes"
72
+ :key="group.staffId"
73
+ class="note-group"
74
+ >
75
+ <button
76
+ type="button"
77
+ class="note-group-header"
78
+ @click="toggle(group.staffId)"
79
+ >
80
+ <span class="staff-name break-words text-left">
81
+ {{ group.staffName }}
82
+ </span>
83
+ <NeonIcon
84
+ :name="expanded[group.staffId] ? 'chevron-up' : 'chevron-down'"
85
+ class="chevron"
86
+ />
87
+ </button>
88
+ <div v-if="expanded[group.staffId]" class="note-group-body">
89
+ <div
90
+ v-for="item in group.notes"
91
+ :key="item.id"
92
+ class="note-item break-words whitespace-pre-wrap"
93
+ >
94
+ {{ item.note }}
95
+ </div>
96
+ </div>
97
+ </div>
98
+ </div>
99
+ <span v-else class="empty">Belum ada catatan.</span>
100
+ <ul class="list-disc pl-5">
101
+ <li>
102
+ <span class="text-sm">
103
+ Seluruh catatan bersifat privat dan hanya dapat diakses oleh pihak
104
+ yang terkait.
105
+ </span>
106
+ </li>
107
+ </ul>
108
+ </div>
109
+ </NeonSheet>
110
+ </NeonModal>
111
+ </template>
112
+
113
+ <style scoped>
114
+ .submission-note-modal {
115
+ @apply flex flex-col gap-4;
116
+
117
+ .note-list {
118
+ @apply flex flex-col gap-2;
119
+ }
120
+
121
+ .note-group {
122
+ @apply border-b-[1px] border-gray-200 bg-white;
123
+ }
124
+
125
+ .note-group-header {
126
+ @apply flex w-full items-center justify-between px-4 py-3 text-left;
127
+
128
+ .staff-name {
129
+ @apply text-base font-medium text-black;
130
+ }
131
+
132
+ .chevron {
133
+ @apply h-4 w-4 text-gray-500;
134
+ }
135
+ }
136
+
137
+ .note-group-body {
138
+ @apply flex flex-col gap-2 px-4 py-3;
139
+ }
140
+
141
+ .note-item {
142
+ @apply whitespace-pre-wrap text-sm text-gray-800;
143
+ }
144
+
145
+ .empty {
146
+ @apply text-sm text-gray-500;
147
+ }
148
+ }
149
+ </style>
@@ -0,0 +1 @@
1
+ export { default as SubmissionNoteModal } from './SubmissionNoteModal.vue';
@@ -0,0 +1 @@
1
+ export { default as SubmissionNoteModal } from "./SubmissionNoteModal.vue";
@@ -98,6 +98,20 @@
98
98
  "
99
99
  />
100
100
  </NeonFields>
101
+ <NeonField
102
+ v-model="values.deadline"
103
+ v-bind="fields.deadline"
104
+ :is-disabled="
105
+ values.status === 'processed' ||
106
+ values.status === 'waitForAudit' ||
107
+ values.status === 'approved' ||
108
+ values.status === 'raised' ||
109
+ values.status === 'delay' ||
110
+ values.status === 'monitored' ||
111
+ values.status === 'discontinued' ||
112
+ values.status === 'resolved'
113
+ "
114
+ />
101
115
 
102
116
  <OfficeRelation
103
117
  v-model="values"
@@ -7,3 +7,5 @@ export { default as SubmissionForDecision } from './SubmissionForDecision.vue';
7
7
  export { default as SubmissionSupervisor } from './SubmissionSupervisor.vue';
8
8
  export * from './SubmissionCollection';
9
9
  export * from './SubmissionSingle';
10
+ export * from './SubmissionAction';
11
+ export * from './SubmissionNoteModal';
@@ -7,3 +7,5 @@ export { default as SubmissionForDecision } from "./SubmissionForDecision.vue";
7
7
  export { default as SubmissionSupervisor } from "./SubmissionSupervisor.vue";
8
8
  export * from "./SubmissionCollection/index.mjs";
9
9
  export * from "./SubmissionSingle/index.mjs";
10
+ export * from "./SubmissionAction/index.mjs";
11
+ export * from "./SubmissionNoteModal/index.mjs";
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as SubmissionAction } from './SubmissionAction.vue';
2
+ export { default as SubmissionActionDecision } from './SubmissionActionDecision.vue';
@@ -0,0 +1,56 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ isActive: {
3
+ type: BooleanConstructor;
4
+ default: boolean;
5
+ };
6
+ submissionId: {
7
+ type: StringConstructor;
8
+ default: string;
9
+ };
10
+ note: {
11
+ type: StringConstructor;
12
+ default: string;
13
+ };
14
+ isDisabled: {
15
+ type: BooleanConstructor;
16
+ default: boolean;
17
+ };
18
+ isSaving: {
19
+ type: BooleanConstructor;
20
+ default: boolean;
21
+ };
22
+ }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
+ close: (...args: any[]) => void;
24
+ save: (...args: any[]) => void;
25
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
26
+ isActive: {
27
+ type: BooleanConstructor;
28
+ default: boolean;
29
+ };
30
+ submissionId: {
31
+ type: StringConstructor;
32
+ default: string;
33
+ };
34
+ note: {
35
+ type: StringConstructor;
36
+ default: string;
37
+ };
38
+ isDisabled: {
39
+ type: BooleanConstructor;
40
+ default: boolean;
41
+ };
42
+ isSaving: {
43
+ type: BooleanConstructor;
44
+ default: boolean;
45
+ };
46
+ }>> & {
47
+ onClose?: ((...args: any[]) => any) | undefined;
48
+ onSave?: ((...args: any[]) => any) | undefined;
49
+ }, {
50
+ isDisabled: boolean;
51
+ isActive: boolean;
52
+ note: string;
53
+ submissionId: string;
54
+ isSaving: boolean;
55
+ }, {}>;
56
+ export default _default;
@@ -0,0 +1,46 @@
1
+ import { type PropType } from 'vue';
2
+ interface SubmissionNoteOwner {
3
+ id: string;
4
+ name: string;
5
+ }
6
+ interface SubmissionNote {
7
+ id: string;
8
+ note: string;
9
+ owner: SubmissionNoteOwner;
10
+ }
11
+ declare const _default: import("vue").DefineComponent<{
12
+ isActive: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ submissionId: {
17
+ type: StringConstructor;
18
+ default: string;
19
+ };
20
+ notes: {
21
+ type: PropType<SubmissionNote[]>;
22
+ default: () => never[];
23
+ };
24
+ }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
25
+ close: (...args: any[]) => void;
26
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
27
+ isActive: {
28
+ type: BooleanConstructor;
29
+ default: boolean;
30
+ };
31
+ submissionId: {
32
+ type: StringConstructor;
33
+ default: string;
34
+ };
35
+ notes: {
36
+ type: PropType<SubmissionNote[]>;
37
+ default: () => never[];
38
+ };
39
+ }>> & {
40
+ onClose?: ((...args: any[]) => any) | undefined;
41
+ }, {
42
+ isActive: boolean;
43
+ notes: SubmissionNote[];
44
+ submissionId: string;
45
+ }, {}>;
46
+ export default _default;
@@ -0,0 +1 @@
1
+ export { default as SubmissionNoteModal } from './SubmissionNoteModal.vue';
@@ -7,3 +7,5 @@ export { default as SubmissionForDecision } from './SubmissionForDecision.vue';
7
7
  export { default as SubmissionSupervisor } from './SubmissionSupervisor.vue';
8
8
  export * from './SubmissionCollection';
9
9
  export * from './SubmissionSingle';
10
+ export * from './SubmissionAction';
11
+ export * from './SubmissionNoteModal';