lib-pajakio-v2 1.0.24 → 1.0.26

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/AGENTS.md ADDED
@@ -0,0 +1,174 @@
1
+ # Panduan Library Component Pajak.io
2
+
3
+ Dokumen ini menjelaskan cara memakai `lib-pajakio-v2`, daftar component yang diekspor, teknologi yang dipakai, dan syarat minimal agar library bisa digunakan di project lain.
4
+
5
+ ## Ringkasan
6
+
7
+ `lib-pajakio-v2` adalah library UI berbasis Vue untuk aplikasi Pajak.io/Fintax. Entry point library berada di `src/install.js` dan mengekspor named component dari `src/components/index.js`.
8
+
9
+ Package:
10
+
11
+ - Nama package: `lib-pajakio-v2`
12
+ - Versi saat dokumen dibuat: `1.0.24`
13
+ - Main bundle: `dist/lib-pajakio-v2.common.js`
14
+ - Style bundle: `dist/lib-pajakio-v2.css`
15
+
16
+ ## Bahasa dan teknologi
17
+
18
+ Library ini memakai:
19
+
20
+ - JavaScript
21
+ - Vue Single File Component (`.vue`)
22
+ - Vue 3
23
+ - SCSS/Sass
24
+ - HTML template Vue
25
+ - CSS utility class lokal dari `src/assets/style`
26
+
27
+ Build tool yang tersedia:
28
+
29
+ - Vue CLI untuk build library (`npm run build-library`)
30
+ - Vite untuk development/build aplikasi demo (`npm run dev`, `npm run build:vite`)
31
+
32
+ ## Syarat penggunaan di project lain
33
+
34
+ Project yang memakai library ini sebaiknya memenuhi syarat berikut:
35
+
36
+ - Menggunakan Vue 3.
37
+ - Menggunakan bundler yang mendukung Vue SFC dan CSS import, misalnya Vite atau Vue CLI.
38
+ - Meng-install dependency runtime yang dibutuhkan component:
39
+ - `vue`
40
+ - `vue-router` jika memakai component yang memakai `<router-link>` atau `$route`, seperti `DashboardFooter` dan sebagian alur `DashboardHeader`.
41
+ - `js-cookie` jika memakai `DashboardHeader` dengan fitur session/logout.
42
+ - Mengimpor CSS library agar styling component aktif.
43
+ - Memastikan alias `@` di project consumer tidak bentrok bila memakai source component langsung. Untuk penggunaan normal dari package, gunakan bundle `dist`.
44
+ - Menyediakan data props dengan shape yang sesuai. Beberapa component masih mengakses property object secara langsung, jadi nilai `null`/shape berbeda bisa memicu error.
45
+
46
+ ## Instalasi dan penggunaan
47
+
48
+ Install package dari registry/private registry yang digunakan project:
49
+
50
+ ```bash
51
+ npm install lib-pajakio-v2
52
+ ```
53
+
54
+ Import component yang dibutuhkan:
55
+
56
+ ```js
57
+ import { BaseButton, FormInput, DatePicker } from "lib-pajakio-v2";
58
+ import "lib-pajakio-v2/dist/lib-pajakio-v2.css";
59
+ ```
60
+
61
+ Contoh pemakaian di Vue:
62
+
63
+ ```vue
64
+ <template>
65
+ <form-input v-model="name" placeholder="Nama wajib pajak">
66
+ <template #label>
67
+ <typo-text variant="body-1-bold">Nama</typo-text>
68
+ </template>
69
+ </form-input>
70
+
71
+ <base-button variant="primary" icon-left="save">
72
+ Simpan
73
+ </base-button>
74
+ </template>
75
+
76
+ <script>
77
+ import { BaseButton, FormInput, TypoText } from "lib-pajakio-v2";
78
+ import "lib-pajakio-v2/dist/lib-pajakio-v2.css";
79
+
80
+ export default {
81
+ components: { BaseButton, FormInput, TypoText },
82
+ data() {
83
+ return { name: "" };
84
+ },
85
+ };
86
+ </script>
87
+ ```
88
+
89
+ Library ini belum menyediakan plugin installer global (`app.use(...)`). Cara paling aman adalah import named component dan register di component/page yang membutuhkan.
90
+
91
+ ## Development library
92
+
93
+ Install dependency:
94
+
95
+ ```bash
96
+ npm install
97
+ ```
98
+
99
+ Jalankan demo Vue CLI:
100
+
101
+ ```bash
102
+ npm run serve
103
+ ```
104
+
105
+ Jalankan demo Vite:
106
+
107
+ ```bash
108
+ npm run dev
109
+ ```
110
+
111
+ Build library:
112
+
113
+ ```bash
114
+ npm run build-library
115
+ ```
116
+
117
+ ## Component yang tersedia
118
+
119
+ Named export dari `src/components/index.js`:
120
+
121
+ - `AnimatedIconLogo`
122
+ - `BaseButton`
123
+ - `BaseIcon`
124
+ - `BaseTable`
125
+ - `Breadcrumbs`
126
+ - `DashboardFooter`
127
+ - `DashboardHeader`
128
+ - `DatePicker`
129
+ - `Dropdown`
130
+ - `DropdownCheckbox`
131
+ - `DropdownCompany`
132
+ - `DropdownMultipleTag`
133
+ - `DropdownSearchList`
134
+ - `DropdownSelect`
135
+ - `ExpansionPanel`
136
+ - `FormCheckbox`
137
+ - `FormGroupCheckbox`
138
+ - `FormInput`
139
+ - `FormInputTag`
140
+ - `FormRadio`
141
+ - `FormSwitch`
142
+ - `FormTextarea`
143
+ - `FormWysiwyg`
144
+ - `LoadingIcon`
145
+ - `ModalDialog`
146
+ - `SideNav`
147
+ - `Snackbar`
148
+ - `Stepper`
149
+ - `TablePagination`
150
+ - `Tabmenu`
151
+ - `TypoText`
152
+
153
+ Ada juga banyak component SVG icon di `src/components/Icons/*`. Icon individual tidak diekspor satu per satu dari package utama, tetapi digunakan melalui `BaseIcon` dengan prop `iconName`.
154
+
155
+ ## Struktur dokumentasi component
156
+
157
+ Detail component, props, events, slots, dan contoh penggunaan ada di:
158
+
159
+ - `docs/specs/README.md`
160
+ - `docs/specs/base-and-icons.md`
161
+ - `docs/specs/forms.md`
162
+ - `docs/specs/dropdowns.md`
163
+ - `docs/specs/date-picker.md`
164
+ - `docs/specs/navigation-layout.md`
165
+ - `docs/specs/feedback-overlays.md`
166
+ - `docs/specs/table-and-tabs.md`
167
+
168
+ ## Catatan integrasi penting
169
+
170
+ - Mayoritas input memakai kontrak `v-model` Vue 3, yaitu prop `modelValue` dan event `update:modelValue`.
171
+ - Beberapa component memakai event custom seperti `clickPage`, `changeSize`, `actionMenu`, `handleClose`, atau `actionRoute`.
172
+ - Component `FormInput`, `FormTextarea`, `FormInputTag`, dan `FormWysiwyg` menerima slot `label`.
173
+ - Component `Dropdown`, `DropdownCheckbox`, `DropdownCompany`, `ModalDialog`, `ExpansionPanel`, dan `Snackbar` mengandalkan slot untuk isi yang fleksibel.
174
+ - `DashboardHeader` melakukan redirect logout dan membaca cookie `pajakio`; pakai component ini hanya bila aplikasi consumer memang punya flow session yang kompatibel.
@@ -136,6 +136,17 @@ module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
136
136
  });
137
137
 
138
138
 
139
+ /***/ }),
140
+
141
+ /***/ "056e":
142
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
143
+
144
+ "use strict";
145
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_v16_dist_index_js_ref_1_1_index_vue_vue_type_style_index_0_id_41a595cc_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("e23d");
146
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_v16_dist_index_js_ref_1_1_index_vue_vue_type_style_index_0_id_41a595cc_lang_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_v16_dist_index_js_ref_1_1_index_vue_vue_type_style_index_0_id_41a595cc_lang_scss__WEBPACK_IMPORTED_MODULE_0__);
147
+ /* unused harmony reexport * */
148
+
149
+
139
150
  /***/ }),
140
151
 
141
152
  /***/ "06cf":
@@ -512,17 +523,6 @@ module.exports = function (it) {
512
523
  /* unused harmony reexport * */
513
524
 
514
525
 
515
- /***/ }),
516
-
517
- /***/ "2334":
518
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
519
-
520
- "use strict";
521
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_v16_dist_index_js_ref_1_1_index_vue_vue_type_style_index_0_id_504d1e58_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("c8a1");
522
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_v16_dist_index_js_ref_1_1_index_vue_vue_type_style_index_0_id_504d1e58_lang_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_9_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_9_oneOf_1_1_node_modules_vue_loader_v16_dist_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_v16_dist_index_js_ref_1_1_index_vue_vue_type_style_index_0_id_504d1e58_lang_scss__WEBPACK_IMPORTED_MODULE_0__);
523
- /* unused harmony reexport * */
524
-
525
-
526
526
  /***/ }),
527
527
 
528
528
  /***/ "23cb":
@@ -2179,13 +2179,6 @@ var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED,
2179
2179
  /* unused harmony reexport * */
2180
2180
 
2181
2181
 
2182
- /***/ }),
2183
-
2184
- /***/ "c8a1":
2185
- /***/ (function(module, exports, __webpack_require__) {
2186
-
2187
- // extracted by mini-css-extract-plugin
2188
-
2189
2182
  /***/ }),
2190
2183
 
2191
2184
  /***/ "c8ba":
@@ -2484,6 +2477,13 @@ module.exports = function (V, P) {
2484
2477
  /* unused harmony reexport * */
2485
2478
 
2486
2479
 
2480
+ /***/ }),
2481
+
2482
+ /***/ "e23d":
2483
+ /***/ (function(module, exports, __webpack_require__) {
2484
+
2485
+ // extracted by mini-css-extract-plugin
2486
+
2487
2487
  /***/ }),
2488
2488
 
2489
2489
  /***/ "e330":
@@ -40869,29 +40869,29 @@ var FormSwitchvue_type_style_index_0_id_7b52b7b6_lang_scss_scoped_true = __webpa
40869
40869
  const FormSwitch_exports_ = /*#__PURE__*/exportHelper_default()(FormSwitchvue_type_script_lang_js, [['render',FormSwitchvue_type_template_id_7b52b7b6_scoped_true_render],['__scopeId',"data-v-7b52b7b6"]])
40870
40870
 
40871
40871
  /* harmony default export */ var FormSwitch = (FormSwitch_exports_);
40872
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader-v16/dist??ref--1-1!./src/components/SideNav/index.vue?vue&type=template&id=504d1e58
40872
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader-v16/dist??ref--1-1!./src/components/SideNav/index.vue?vue&type=template&id=41a595cc
40873
40873
 
40874
- const SideNavvue_type_template_id_504d1e58_hoisted_1 = ["src"];
40875
- const SideNavvue_type_template_id_504d1e58_hoisted_2 = ["src"];
40876
- const SideNavvue_type_template_id_504d1e58_hoisted_3 = {
40874
+ const SideNavvue_type_template_id_41a595cc_hoisted_1 = ["src"];
40875
+ const SideNavvue_type_template_id_41a595cc_hoisted_2 = ["src"];
40876
+ const SideNavvue_type_template_id_41a595cc_hoisted_3 = {
40877
40877
  class: "side-nav__content"
40878
40878
  };
40879
- const SideNavvue_type_template_id_504d1e58_hoisted_4 = {
40879
+ const SideNavvue_type_template_id_41a595cc_hoisted_4 = {
40880
40880
  class: "side-nav__group"
40881
40881
  };
40882
- const SideNavvue_type_template_id_504d1e58_hoisted_5 = ["id"];
40883
- const SideNavvue_type_template_id_504d1e58_hoisted_6 = ["onClick"];
40884
- const SideNavvue_type_template_id_504d1e58_hoisted_7 = {
40882
+ const SideNavvue_type_template_id_41a595cc_hoisted_5 = ["id"];
40883
+ const SideNavvue_type_template_id_41a595cc_hoisted_6 = ["onClick"];
40884
+ const SideNavvue_type_template_id_41a595cc_hoisted_7 = {
40885
40885
  key: 0,
40886
40886
  class: "side-nav__badge"
40887
40887
  };
40888
- const SideNavvue_type_template_id_504d1e58_hoisted_8 = ["onClick"];
40889
- const SideNavvue_type_template_id_504d1e58_hoisted_9 = ["data-title"];
40890
- const SideNavvue_type_template_id_504d1e58_hoisted_10 = {
40888
+ const SideNavvue_type_template_id_41a595cc_hoisted_8 = ["onClick"];
40889
+ const SideNavvue_type_template_id_41a595cc_hoisted_9 = ["data-title"];
40890
+ const SideNavvue_type_template_id_41a595cc_hoisted_10 = {
40891
40891
  key: 0,
40892
40892
  class: "side-nav__divider"
40893
40893
  };
40894
- function SideNavvue_type_template_id_504d1e58_render(_ctx, _cache, $props, $setup, $data, $options) {
40894
+ function SideNavvue_type_template_id_41a595cc_render(_ctx, _cache, $props, $setup, $data, $options) {
40895
40895
  const _component_base_icon = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("base-icon");
40896
40896
  const _component_typo_text = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("typo-text");
40897
40897
  return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("aside", {
@@ -40914,7 +40914,7 @@ function SideNavvue_type_template_id_504d1e58_render(_ctx, _cache, $props, $setu
40914
40914
  class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["side-nav__logo", {
40915
40915
  'side-nav__logo--collapsed': !$data.menuOpen
40916
40916
  }])
40917
- }, null, 10, SideNavvue_type_template_id_504d1e58_hoisted_1)]), $options.showCollapseButton ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
40917
+ }, null, 10, SideNavvue_type_template_id_41a595cc_hoisted_1)]), $options.showCollapseButton ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
40918
40918
  key: 0,
40919
40919
  type: "button",
40920
40920
  class: "side-nav__toggle",
@@ -40924,7 +40924,7 @@ function SideNavvue_type_template_id_504d1e58_render(_ctx, _cache, $props, $setu
40924
40924
  src: $data.menuOpen ? $data.collapseClose : $data.collapseOpen,
40925
40925
  alt: "Toggle navigation",
40926
40926
  class: "side-nav__toggle-icon"
40927
- }, null, 8, SideNavvue_type_template_id_504d1e58_hoisted_2)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SideNavvue_type_template_id_504d1e58_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
40927
+ }, null, 8, SideNavvue_type_template_id_41a595cc_hoisted_2)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SideNavvue_type_template_id_41a595cc_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
40928
40928
  class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["side-nav__item", {
40929
40929
  'is-active': $props.activeSideNav === 'dashboard',
40930
40930
  'is-disabled': false
@@ -40946,7 +40946,7 @@ function SideNavvue_type_template_id_504d1e58_render(_ctx, _cache, $props, $setu
40946
40946
  }, null, -1)), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])($data.menuStructure, (menu, i) => {
40947
40947
  return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], {
40948
40948
  key: i
40949
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SideNavvue_type_template_id_504d1e58_hoisted_4, [$data.menuOpen && menu.groupTitle ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_typo_text, {
40949
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SideNavvue_type_template_id_41a595cc_hoisted_4, [$data.menuOpen && menu.groupTitle ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_typo_text, {
40950
40950
  key: 0,
40951
40951
  class: "side-nav__group-title",
40952
40952
  variant: "caption-bold"
@@ -40978,7 +40978,7 @@ function SideNavvue_type_template_id_504d1e58_render(_ctx, _cache, $props, $setu
40978
40978
  class: "side-nav__label",
40979
40979
  variant: $options.isParentActive(data) ? 'body-1-bold' : 'body-1-regular'
40980
40980
  }, {
40981
- default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(() => [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(data.label) + " ", 1), data.slug === 'ematerai' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", SideNavvue_type_template_id_504d1e58_hoisted_7, " NEW ! ")) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]),
40981
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(() => [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(data.label) + " ", 1), data.slug === 'ematerai' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", SideNavvue_type_template_id_41a595cc_hoisted_7, " NEW ! ")) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]),
40982
40982
  _: 2
40983
40983
  }, 1032, ["variant"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), data.children.length > 0 && $data.menuOpen ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
40984
40984
  key: 1,
@@ -40990,7 +40990,7 @@ function SideNavvue_type_template_id_504d1e58_render(_ctx, _cache, $props, $setu
40990
40990
  color: "#B0B8C2",
40991
40991
  width: "18",
40992
40992
  height: "18"
40993
- }, null, 8, ["iconName"])], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 10, SideNavvue_type_template_id_504d1e58_hoisted_6), $data.menuOpen ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
40993
+ }, null, 8, ["iconName"])], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 10, SideNavvue_type_template_id_41a595cc_hoisted_6), $data.menuOpen ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
40994
40994
  key: 0,
40995
40995
  class: "side-nav__children",
40996
40996
  style: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeStyle"])({
@@ -41021,12 +41021,12 @@ function SideNavvue_type_template_id_504d1e58_render(_ctx, _cache, $props, $setu
41021
41021
  height: "16",
41022
41022
  iconName: "info_outline",
41023
41023
  color: "#383E45"
41024
- })], 8, SideNavvue_type_template_id_504d1e58_hoisted_9)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 10, SideNavvue_type_template_id_504d1e58_hoisted_8);
41025
- }), 128))], 4)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 10, SideNavvue_type_template_id_504d1e58_hoisted_5);
41026
- }), 128))]), i < $data.menuStructure.length - 1 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SideNavvue_type_template_id_504d1e58_hoisted_10)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 64);
41024
+ })], 8, SideNavvue_type_template_id_41a595cc_hoisted_9)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 10, SideNavvue_type_template_id_41a595cc_hoisted_8);
41025
+ }), 128))], 4)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 10, SideNavvue_type_template_id_41a595cc_hoisted_5);
41026
+ }), 128))]), i < $data.menuStructure.length - 1 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SideNavvue_type_template_id_41a595cc_hoisted_10)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 64);
41027
41027
  }), 128))])], 2);
41028
41028
  }
41029
- // CONCATENATED MODULE: ./src/components/SideNav/index.vue?vue&type=template&id=504d1e58
41029
+ // CONCATENATED MODULE: ./src/components/SideNav/index.vue?vue&type=template&id=41a595cc
41030
41030
 
41031
41031
  // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader-v16/dist??ref--1-1!./src/components/SideNav/index.vue?vue&type=script&lang=js
41032
41032
 
@@ -41084,12 +41084,17 @@ const collapseClose = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0
41084
41084
  list: {
41085
41085
  handler() {
41086
41086
  this.setMenuStructure();
41087
+ this.redirectInactiveActiveSideNav();
41087
41088
  },
41088
41089
  deep: true
41090
+ },
41091
+ activeSideNav() {
41092
+ this.redirectInactiveActiveSideNav();
41089
41093
  }
41090
41094
  },
41091
41095
  mounted() {
41092
41096
  this.setMenuStructure();
41097
+ this.redirectInactiveActiveSideNav();
41093
41098
  this.updateIsMobile();
41094
41099
  window.addEventListener("resize", this.updateIsMobile);
41095
41100
  document.addEventListener("click", this.handleClickOutside);
@@ -41145,6 +41150,63 @@ const collapseClose = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0
41145
41150
  console.warn("List or children is undefined!");
41146
41151
  }
41147
41152
  },
41153
+ buildModuleUrl(path) {
41154
+ const baseUrl = typeof window !== "undefined" ? window.location.origin : "";
41155
+ const normalizedPath = path.startsWith("/") ? path : `/${path}`;
41156
+ return `${baseUrl}${normalizedPath}`;
41157
+ },
41158
+ getCurrentRouteSideNavSlug() {
41159
+ if (typeof window === "undefined") {
41160
+ return "";
41161
+ }
41162
+ const [slug] = window.location.pathname.split("/").filter(Boolean);
41163
+ return slug || "";
41164
+ },
41165
+ findSideNavItem(slug) {
41166
+ if (!slug || slug === "dashboard") {
41167
+ return null;
41168
+ }
41169
+ for (const menu of this.menuStructure) {
41170
+ for (const menuItem of menu.groupMenu || []) {
41171
+ if (menuItem.slug === slug) {
41172
+ return {
41173
+ item: menuItem,
41174
+ parent: null
41175
+ };
41176
+ }
41177
+ if (Array.isArray(menuItem.children)) {
41178
+ const child = menuItem.children.find(item => item.slug === slug);
41179
+ if (child) {
41180
+ return {
41181
+ item: child,
41182
+ parent: menuItem
41183
+ };
41184
+ }
41185
+ }
41186
+ }
41187
+ }
41188
+ return null;
41189
+ },
41190
+ isSideNavItemInactiveBySlug(slug) {
41191
+ const matchedMenu = this.findSideNavItem(slug);
41192
+ if (!matchedMenu) {
41193
+ return false;
41194
+ }
41195
+ return matchedMenu.item.active === false || Boolean(matchedMenu.parent && matchedMenu.parent.active === false);
41196
+ },
41197
+ isCurrentRouteSideNavInactive() {
41198
+ const currentRouteSlug = this.getCurrentRouteSideNavSlug();
41199
+ return this.isSideNavItemInactiveBySlug(currentRouteSlug);
41200
+ },
41201
+ redirectInactiveActiveSideNav() {
41202
+ if (!this.isCurrentRouteSideNavInactive() || typeof window === "undefined") {
41203
+ return;
41204
+ }
41205
+ const dashboardUrl = this.buildModuleUrl("/dashboard");
41206
+ if (window.location.href !== dashboardUrl) {
41207
+ window.location.href = dashboardUrl;
41208
+ }
41209
+ },
41148
41210
  clickNav(data) {
41149
41211
  if (data && typeof data === "object" && data.active === false) {
41150
41212
  return;
@@ -41191,8 +41253,8 @@ const collapseClose = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0
41191
41253
  });
41192
41254
  // CONCATENATED MODULE: ./src/components/SideNav/index.vue?vue&type=script&lang=js
41193
41255
 
41194
- // EXTERNAL MODULE: ./src/components/SideNav/index.vue?vue&type=style&index=0&id=504d1e58&lang=scss
41195
- var SideNavvue_type_style_index_0_id_504d1e58_lang_scss = __webpack_require__("2334");
41256
+ // EXTERNAL MODULE: ./src/components/SideNav/index.vue?vue&type=style&index=0&id=41a595cc&lang=scss
41257
+ var SideNavvue_type_style_index_0_id_41a595cc_lang_scss = __webpack_require__("056e");
41196
41258
 
41197
41259
  // CONCATENATED MODULE: ./src/components/SideNav/index.vue
41198
41260
 
@@ -41202,7 +41264,7 @@ var SideNavvue_type_style_index_0_id_504d1e58_lang_scss = __webpack_require__("2
41202
41264
 
41203
41265
 
41204
41266
 
41205
- const SideNav_exports_ = /*#__PURE__*/exportHelper_default()(SideNavvue_type_script_lang_js, [['render',SideNavvue_type_template_id_504d1e58_render]])
41267
+ const SideNav_exports_ = /*#__PURE__*/exportHelper_default()(SideNavvue_type_script_lang_js, [['render',SideNavvue_type_template_id_41a595cc_render]])
41206
41268
 
41207
41269
  /* harmony default export */ var SideNav = (SideNav_exports_);
41208
41270
  // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader-v16/dist??ref--1-1!./src/components/Snackbar/index.vue?vue&type=template&id=e0e5b538