@iankibetsh/shframework 5.8.8 → 5.9.2

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/README.md CHANGED
@@ -66,15 +66,18 @@ The flagship component for generating complex forms from simple configurations.
66
66
  - **Auto-Detection**: Infers input types from field names (email, phone, date, etc.).
67
67
  - **Multi-Step Support**: Break long forms into logical steps with progress indicators.
68
68
  - **Validation**: Seamlessly handles and displays Laravel validation errors (422).
69
- - **GraphQL Support**: Integrate with GraphQL mutations via the `gqlMutation` prop.
70
- - **Checkbox Support**: Easily handle boolean or multiple-choice fields with `type: 'checkbox'`.
69
+ - **Conditional Visibility**: Hide the submit button using `:hide-submit-button="true"`.
71
70
  - **Modern Reactivity**: Built using Vue 3.4's `defineModel` for clean, conflict-free two-way binding.
72
71
 
73
72
  ```html
74
73
  <sh-auto-form
75
- :fields="['name', 'email', 'password', 'gender']"
76
- :required="['name', 'email']"
77
- action="auth/register"
74
+ :fields="[
75
+ { field: 'name', label: 'Name', required: true },
76
+ { field: 'email', type: 'email', label: 'Email', required: true },
77
+ { field: 'password', type: 'password', label: 'Password' },
78
+ { field: 'gender', type: 'select', label: 'Gender' }
79
+ ]"
80
+ :action="getActionUrl('register')"
78
81
  :successCallback="onRegistered"
79
82
  />
80
83
  ```
@@ -91,8 +94,11 @@ A convenience component that wraps a trigger button, a Bootstrap modal, and an `
91
94
  <sh-modal-form
92
95
  modal-id="addTaskModal"
93
96
  modal-title="Create New Task"
94
- :fields="['title', 'description']"
95
- action="tasks/store"
97
+ :fields="[
98
+ { field: 'title', label: 'Task Title', required: true },
99
+ { field: 'description', type: 'textarea', label: 'Description' }
100
+ ]"
101
+ :action="getActionUrl('storeTask')"
96
102
  >
97
103
  Add Task
98
104
  </sh-modal-form>
@@ -260,38 +260,6 @@
260
260
  }
261
261
  }
262
262
 
263
- .sh-phone{
264
- display: flex;
265
- width: 100%;
266
- align-items: center;
267
- padding: 0 0.25rem;
268
- }
269
- .phone-country{
270
- width: 2rem;
271
- border: none;
272
- align-self: center;
273
- outline: none !important;
274
- padding: 0.4rem;
275
- border-right: 1px solid #0003;
276
- }
277
- .phone-number{
278
- width: calc(100% - 2.2rem);
279
- border: none;
280
- align-self: center;
281
- outline: none;
282
- margin-bottom: 0;
283
- padding: 0.4rem;
284
- }
285
- .sh-phone img{
286
- padding: 0.125rem;
287
- width: 2rem;
288
- height: 2rem;
289
- }
290
- .phone-number::placeholder{
291
- font-weight: 300;
292
- opacity: 0.5;
293
- }
294
-
295
263
  .colored-toast.swal2-icon-success {
296
264
  background-color: #a5dc86 !important;
297
265
  }
@@ -368,6 +336,38 @@
368
336
  flex-grow: 1;
369
337
  }
370
338
 
339
+ .sh-phone{
340
+ display: flex;
341
+ width: 100%;
342
+ align-items: center;
343
+ padding: 0 0.25rem;
344
+ }
345
+ .phone-country{
346
+ width: 2rem;
347
+ border: none;
348
+ align-self: center;
349
+ outline: none !important;
350
+ padding: 0.4rem;
351
+ border-right: 1px solid #0003;
352
+ }
353
+ .phone-number{
354
+ width: calc(100% - 2.2rem);
355
+ border: none;
356
+ align-self: center;
357
+ outline: none;
358
+ margin-bottom: 0;
359
+ padding: 0.4rem;
360
+ }
361
+ .sh-phone img{
362
+ padding: 0.125rem;
363
+ width: 2rem;
364
+ height: 2rem;
365
+ }
366
+ .phone-number::placeholder{
367
+ font-weight: 300;
368
+ opacity: 0.5;
369
+ }
370
+
371
371
  .sh-selected-item{
372
372
  line-height: unset!important;
373
373
  }
package/dist/library.js CHANGED
@@ -619,7 +619,6 @@ const updateSession = () =>{
619
619
  shStorage.setItem('last_activity', timeNow);
620
620
  };
621
621
 
622
- const graphQlEndpoint = 'sh-ql';
623
622
  // eslint-disable-next-line no-undef
624
623
  let axios;
625
624
 
@@ -729,28 +728,14 @@ function doPatch(endPoint, data, extraConfig) {
729
728
 
730
729
  }
731
730
 
732
- function graphQlQuery(query) {
733
- const data = {
734
- query
735
- };
736
- return doGet(graphQlEndpoint, data)
737
- }
738
731
 
739
- function graphQlMutate(mutation) {
740
- const data = {
741
- query: `mutation ${mutation}`
742
- };
743
- return doPost(graphQlEndpoint, data)
744
- }
745
732
 
746
733
  var shApis = {
747
734
  doGet,
748
735
  doPost,
749
- graphQlQuery,
750
736
  doDelete,
751
737
  doPut,
752
- doPatch,
753
- graphQlMutate
738
+ doPatch
754
739
  };
755
740
 
756
741
  const countries = [
@@ -3730,10 +3715,6 @@ var script$q = {
3730
3715
  type: Array,
3731
3716
  required: false
3732
3717
  },
3733
- gqlMutation: {
3734
- type: String,
3735
- required: false
3736
- },
3737
3718
  required: {
3738
3719
  type: Array,
3739
3720
  required: false
@@ -3746,7 +3727,7 @@ var script$q = {
3746
3727
  type: Array,
3747
3728
  required: false
3748
3729
  },
3749
- hideButton: {
3730
+ hideSubmitButton: {
3750
3731
  type: Boolean,
3751
3732
  default: false
3752
3733
  }
@@ -3946,34 +3927,16 @@ const submitForm = async (e) => {
3946
3927
 
3947
3928
  emit('preSubmit', data);
3948
3929
 
3949
- // Handle GraphQL mutation
3950
- if (props.gqlMutation) {
3951
- const selectFields = Object.keys(data);
3952
- let args = selectFields
3953
- .filter(key => data[key])
3954
- .map(key => `${key}: "${data[key]}"`)
3955
- .join(', ');
3956
-
3957
- if (args) {
3958
- args = `(${args})`;
3959
- }
3930
+ // Handle REST API
3931
+ const method = props.method === 'put'
3932
+ ? shApis.doPut
3933
+ : props.method === 'delete'
3934
+ ? shApis.doDelete
3935
+ : shApis.doPost;
3960
3936
 
3961
- const mutation = `{\n${props.gqlMutation}${args} {\n${selectFields.join('\n')}\n}\n}`;
3962
- shApis.graphQlMutate(mutation)
3963
- .then(handleSuccessRequest)
3964
- .catch(handleFailedRequest);
3965
- } else {
3966
- // Handle REST API
3967
- const method = props.method === 'put'
3968
- ? shApis.doPut
3969
- : props.method === 'delete'
3970
- ? shApis.doDelete
3971
- : shApis.doPost;
3972
-
3973
- method(props.action, data)
3974
- .then(handleSuccessRequest)
3975
- .catch(handleFailedRequest);
3976
- }
3937
+ method(props.action, data)
3938
+ .then(handleSuccessRequest)
3939
+ .catch(handleFailedRequest);
3977
3940
 
3978
3941
  return false
3979
3942
  };
@@ -4312,7 +4275,7 @@ return (_ctx, _cache) => {
4312
4275
  ], 10 /* CLASS, PROPS */, _hoisted_21$1)
4313
4276
  ], 2 /* CLASS */))
4314
4277
  : vue.createCommentVNode("v-if", true),
4315
- (isLastStep.value && !__props.hideButton)
4278
+ (isLastStep.value && !__props.hideSubmitButton)
4316
4279
  ? (vue.openBlock(), vue.createElementBlock("div", {
4317
4280
  key: 2,
4318
4281
  class: vue.normalizeClass(getElementClass('formGroup') + ' ms-auto')
@@ -4592,6 +4555,7 @@ const cleanedProp = vue.computed(()=>{
4592
4555
  const p = {...props};
4593
4556
  delete p.class;
4594
4557
  delete p.modalId;
4558
+ delete p.hideButton;
4595
4559
  return p
4596
4560
  });
4597
4561
 
@@ -5612,22 +5576,26 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
5612
5576
  return ($props.paginationStyle !== 'loadMore')
5613
5577
  ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
5614
5578
  vue.createElementVNode("div", _hoisted_2$9, [
5615
- _cache[5] || (_cache[5] = vue.createElementVNode("span", { class: "per_page_show" }, "Showing", -1 /* CACHED */)),
5616
- _cache[6] || (_cache[6] = vue.createTextVNode("  ", -1 /* CACHED */)),
5617
- vue.withDirectives(vue.createElementVNode("select", {
5618
- class: "select_per_page",
5619
- onChange: _cache[0] || (_cache[0] = (...args) => ($options.changePerPage && $options.changePerPage(...args))),
5620
- "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => (($data.per_page) = $event))
5621
- }, [
5622
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.pageOptions, (option) => {
5623
- return (vue.openBlock(), vue.createElementBlock("option", { value: option }, vue.toDisplayString(option), 9 /* TEXT, PROPS */, _hoisted_3$7))
5624
- }), 256 /* UNKEYED_FRAGMENT */))
5625
- ], 544 /* NEED_HYDRATION, NEED_PATCH */), [
5626
- [vue.vModelSelect, $data.per_page]
5627
- ]),
5628
- vue.createElementVNode("span", _hoisted_4$7, " of " + vue.toDisplayString($props.pagination_data.record_count) + " items", 1 /* TEXT */)
5579
+ ($props.pagination_data.end > 1)
5580
+ ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
5581
+ _cache[5] || (_cache[5] = vue.createElementVNode("span", { class: "per_page_show" }, "Showing", -1 /* CACHED */)),
5582
+ _cache[6] || (_cache[6] = vue.createTextVNode("  ", -1 /* CACHED */)),
5583
+ vue.withDirectives(vue.createElementVNode("select", {
5584
+ class: "select_per_page",
5585
+ onChange: _cache[0] || (_cache[0] = (...args) => ($options.changePerPage && $options.changePerPage(...args))),
5586
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => (($data.per_page) = $event))
5587
+ }, [
5588
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList($data.pageOptions, (option) => {
5589
+ return (vue.openBlock(), vue.createElementBlock("option", { value: option }, vue.toDisplayString(option), 9 /* TEXT, PROPS */, _hoisted_3$7))
5590
+ }), 256 /* UNKEYED_FRAGMENT */))
5591
+ ], 544 /* NEED_HYDRATION, NEED_PATCH */), [
5592
+ [vue.vModelSelect, $data.per_page]
5593
+ ])
5594
+ ], 64 /* STABLE_FRAGMENT */))
5595
+ : vue.createCommentVNode("v-if", true),
5596
+ vue.createElementVNode("span", _hoisted_4$7, " Showing " + vue.toDisplayString($props.pagination_data.record_count) + " items", 1 /* TEXT */)
5629
5597
  ]),
5630
- ($props.pagination_data != null)
5598
+ ($props.pagination_data != null && $props.pagination_data.end > 1)
5631
5599
  ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_5$5, [
5632
5600
  vue.createElementVNode("ul", _hoisted_6$4, [
5633
5601
  vue.createElementVNode("li", {
@@ -6418,7 +6386,7 @@ return (_ctx, _cache) => {
6418
6386
  ], 8 /* PROPS */, _hoisted_3$6)
6419
6387
  ]))
6420
6388
  : vue.createCommentVNode("v-if", true),
6421
- (!__props.hideSearch && (records.value.length > 0 || !hasEmptySlot.value || filter_value.value.length > 0))
6389
+ (!__props.hideSearch && (pagination_data.value?.end > 1 || filter_value.value.length > 0))
6422
6390
  ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$6, [
6423
6391
  vue.createElementVNode("div", _hoisted_5$4, [
6424
6392
  vue.createElementVNode("div", {
@@ -6873,7 +6841,7 @@ return (_ctx, _cache) => {
6873
6841
  ]))
6874
6842
  : vue.createCommentVNode("v-if", true)
6875
6843
  ])),
6876
- (pagination_data.value && (records.value.length > 0 || !hasEmptySlot.value || filter_value.value.length > 0))
6844
+ (pagination_data.value && (records.value.length > 0 || filter_value.value.length > 0))
6877
6845
  ? (vue.openBlock(), vue.createBlock(script$e, {
6878
6846
  key: 7,
6879
6847
  onLoadMoreRecords: loadMoreRecords,
@@ -8689,19 +8657,6 @@ const ShFrontend = {
8689
8657
  }
8690
8658
  };
8691
8659
 
8692
- const query = async qlQuery => {
8693
- const result = await shApis.graphQlQuery(qlQuery);
8694
- return result.data
8695
- };
8696
- const mutate = async mutation => {
8697
- const result = await shApis.graphQlMutate(mutation);
8698
- return result.data
8699
- };
8700
- var shGql = {
8701
- query,
8702
- mutate
8703
- };
8704
-
8705
8660
  /**
8706
8661
  * useShFetch is a custom hook for fetching data from a given URL and caching it.
8707
8662
  * @param {string} url - The URL to fetch data from.
@@ -8786,7 +8741,6 @@ exports.ShSuggest = script$A;
8786
8741
  exports.ShTable = script$d;
8787
8742
  exports.ShTabs = script$c;
8788
8743
  exports.shApis = shApis;
8789
- exports.shGql = shGql;
8790
8744
  exports.shRepo = shRepo;
8791
8745
  exports.shStorage = shStorage;
8792
8746
  exports.useAppStore = useAppStore;
package/dist/library.mjs CHANGED
@@ -608,7 +608,6 @@ const updateSession = () =>{
608
608
  shStorage.setItem('last_activity', timeNow);
609
609
  };
610
610
 
611
- const graphQlEndpoint = 'sh-ql';
612
611
  // eslint-disable-next-line no-undef
613
612
  let axios;
614
613
 
@@ -718,28 +717,14 @@ function doPatch(endPoint, data, extraConfig) {
718
717
 
719
718
  }
720
719
 
721
- function graphQlQuery(query) {
722
- const data = {
723
- query
724
- };
725
- return doGet(graphQlEndpoint, data)
726
- }
727
720
 
728
- function graphQlMutate(mutation) {
729
- const data = {
730
- query: `mutation ${mutation}`
731
- };
732
- return doPost(graphQlEndpoint, data)
733
- }
734
721
 
735
722
  var shApis = {
736
723
  doGet,
737
724
  doPost,
738
- graphQlQuery,
739
725
  doDelete,
740
726
  doPut,
741
- doPatch,
742
- graphQlMutate
727
+ doPatch
743
728
  };
744
729
 
745
730
  const countries = [
@@ -3719,10 +3704,6 @@ var script$q = {
3719
3704
  type: Array,
3720
3705
  required: false
3721
3706
  },
3722
- gqlMutation: {
3723
- type: String,
3724
- required: false
3725
- },
3726
3707
  required: {
3727
3708
  type: Array,
3728
3709
  required: false
@@ -3735,7 +3716,7 @@ var script$q = {
3735
3716
  type: Array,
3736
3717
  required: false
3737
3718
  },
3738
- hideButton: {
3719
+ hideSubmitButton: {
3739
3720
  type: Boolean,
3740
3721
  default: false
3741
3722
  }
@@ -3935,34 +3916,16 @@ const submitForm = async (e) => {
3935
3916
 
3936
3917
  emit('preSubmit', data);
3937
3918
 
3938
- // Handle GraphQL mutation
3939
- if (props.gqlMutation) {
3940
- const selectFields = Object.keys(data);
3941
- let args = selectFields
3942
- .filter(key => data[key])
3943
- .map(key => `${key}: "${data[key]}"`)
3944
- .join(', ');
3945
-
3946
- if (args) {
3947
- args = `(${args})`;
3948
- }
3919
+ // Handle REST API
3920
+ const method = props.method === 'put'
3921
+ ? shApis.doPut
3922
+ : props.method === 'delete'
3923
+ ? shApis.doDelete
3924
+ : shApis.doPost;
3949
3925
 
3950
- const mutation = `{\n${props.gqlMutation}${args} {\n${selectFields.join('\n')}\n}\n}`;
3951
- shApis.graphQlMutate(mutation)
3952
- .then(handleSuccessRequest)
3953
- .catch(handleFailedRequest);
3954
- } else {
3955
- // Handle REST API
3956
- const method = props.method === 'put'
3957
- ? shApis.doPut
3958
- : props.method === 'delete'
3959
- ? shApis.doDelete
3960
- : shApis.doPost;
3961
-
3962
- method(props.action, data)
3963
- .then(handleSuccessRequest)
3964
- .catch(handleFailedRequest);
3965
- }
3926
+ method(props.action, data)
3927
+ .then(handleSuccessRequest)
3928
+ .catch(handleFailedRequest);
3966
3929
 
3967
3930
  return false
3968
3931
  };
@@ -4301,7 +4264,7 @@ return (_ctx, _cache) => {
4301
4264
  ], 10 /* CLASS, PROPS */, _hoisted_21$1)
4302
4265
  ], 2 /* CLASS */))
4303
4266
  : createCommentVNode("v-if", true),
4304
- (isLastStep.value && !__props.hideButton)
4267
+ (isLastStep.value && !__props.hideSubmitButton)
4305
4268
  ? (openBlock(), createElementBlock("div", {
4306
4269
  key: 2,
4307
4270
  class: normalizeClass(getElementClass('formGroup') + ' ms-auto')
@@ -4581,6 +4544,7 @@ const cleanedProp = computed(()=>{
4581
4544
  const p = {...props};
4582
4545
  delete p.class;
4583
4546
  delete p.modalId;
4547
+ delete p.hideButton;
4584
4548
  return p
4585
4549
  });
4586
4550
 
@@ -5601,22 +5565,26 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
5601
5565
  return ($props.paginationStyle !== 'loadMore')
5602
5566
  ? (openBlock(), createElementBlock("div", _hoisted_1$c, [
5603
5567
  createElementVNode("div", _hoisted_2$9, [
5604
- _cache[5] || (_cache[5] = createElementVNode("span", { class: "per_page_show" }, "Showing", -1 /* CACHED */)),
5605
- _cache[6] || (_cache[6] = createTextVNode("  ", -1 /* CACHED */)),
5606
- withDirectives(createElementVNode("select", {
5607
- class: "select_per_page",
5608
- onChange: _cache[0] || (_cache[0] = (...args) => ($options.changePerPage && $options.changePerPage(...args))),
5609
- "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => (($data.per_page) = $event))
5610
- }, [
5611
- (openBlock(true), createElementBlock(Fragment, null, renderList($data.pageOptions, (option) => {
5612
- return (openBlock(), createElementBlock("option", { value: option }, toDisplayString(option), 9 /* TEXT, PROPS */, _hoisted_3$7))
5613
- }), 256 /* UNKEYED_FRAGMENT */))
5614
- ], 544 /* NEED_HYDRATION, NEED_PATCH */), [
5615
- [vModelSelect, $data.per_page]
5616
- ]),
5617
- createElementVNode("span", _hoisted_4$7, " of " + toDisplayString($props.pagination_data.record_count) + " items", 1 /* TEXT */)
5568
+ ($props.pagination_data.end > 1)
5569
+ ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
5570
+ _cache[5] || (_cache[5] = createElementVNode("span", { class: "per_page_show" }, "Showing", -1 /* CACHED */)),
5571
+ _cache[6] || (_cache[6] = createTextVNode("  ", -1 /* CACHED */)),
5572
+ withDirectives(createElementVNode("select", {
5573
+ class: "select_per_page",
5574
+ onChange: _cache[0] || (_cache[0] = (...args) => ($options.changePerPage && $options.changePerPage(...args))),
5575
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => (($data.per_page) = $event))
5576
+ }, [
5577
+ (openBlock(true), createElementBlock(Fragment, null, renderList($data.pageOptions, (option) => {
5578
+ return (openBlock(), createElementBlock("option", { value: option }, toDisplayString(option), 9 /* TEXT, PROPS */, _hoisted_3$7))
5579
+ }), 256 /* UNKEYED_FRAGMENT */))
5580
+ ], 544 /* NEED_HYDRATION, NEED_PATCH */), [
5581
+ [vModelSelect, $data.per_page]
5582
+ ])
5583
+ ], 64 /* STABLE_FRAGMENT */))
5584
+ : createCommentVNode("v-if", true),
5585
+ createElementVNode("span", _hoisted_4$7, " Showing " + toDisplayString($props.pagination_data.record_count) + " items", 1 /* TEXT */)
5618
5586
  ]),
5619
- ($props.pagination_data != null)
5587
+ ($props.pagination_data != null && $props.pagination_data.end > 1)
5620
5588
  ? (openBlock(), createElementBlock("nav", _hoisted_5$5, [
5621
5589
  createElementVNode("ul", _hoisted_6$4, [
5622
5590
  createElementVNode("li", {
@@ -6407,7 +6375,7 @@ return (_ctx, _cache) => {
6407
6375
  ], 8 /* PROPS */, _hoisted_3$6)
6408
6376
  ]))
6409
6377
  : createCommentVNode("v-if", true),
6410
- (!__props.hideSearch && (records.value.length > 0 || !hasEmptySlot.value || filter_value.value.length > 0))
6378
+ (!__props.hideSearch && (pagination_data.value?.end > 1 || filter_value.value.length > 0))
6411
6379
  ? (openBlock(), createElementBlock("div", _hoisted_4$6, [
6412
6380
  createElementVNode("div", _hoisted_5$4, [
6413
6381
  createElementVNode("div", {
@@ -6862,7 +6830,7 @@ return (_ctx, _cache) => {
6862
6830
  ]))
6863
6831
  : createCommentVNode("v-if", true)
6864
6832
  ])),
6865
- (pagination_data.value && (records.value.length > 0 || !hasEmptySlot.value || filter_value.value.length > 0))
6833
+ (pagination_data.value && (records.value.length > 0 || filter_value.value.length > 0))
6866
6834
  ? (openBlock(), createBlock(script$e, {
6867
6835
  key: 7,
6868
6836
  onLoadMoreRecords: loadMoreRecords,
@@ -8678,19 +8646,6 @@ const ShFrontend = {
8678
8646
  }
8679
8647
  };
8680
8648
 
8681
- const query = async qlQuery => {
8682
- const result = await shApis.graphQlQuery(qlQuery);
8683
- return result.data
8684
- };
8685
- const mutate = async mutation => {
8686
- const result = await shApis.graphQlMutate(mutation);
8687
- return result.data
8688
- };
8689
- var shGql = {
8690
- query,
8691
- mutate
8692
- };
8693
-
8694
8649
  /**
8695
8650
  * useShFetch is a custom hook for fetching data from a given URL and caching it.
8696
8651
  * @param {string} url - The URL to fetch data from.
@@ -8751,4 +8706,4 @@ const useShFetch = (url, path, cacheKey) => {
8751
8706
  }
8752
8707
  };
8753
8708
 
8754
- export { countries as Countries, script$8 as ManagePermissions, script$q as ShAutoForm, script$l as ShCanvas, script$9 as ShCanvasBtn, script$4 as ShCardLayout, script$j as ShConfirmAction, script$o as ShDropDownForm, script$b as ShDynamicTabs, script$z as ShForm, ShFrontend, script$p as ShModal, script$a as ShModalBtn, script$n as ShModalForm, script$m as ShModalFormAuto, script$B as ShPhone, script$5 as ShQueryPopups, script$f as ShRange, script$7 as ShRoutePopups, script$i as ShSilentAction, script$A as ShSuggest, script$d as ShTable, script$c as ShTabs, shApis, shGql, shRepo, shStorage, useAppStore, useShFetch, useUserStore };
8709
+ export { countries as Countries, script$8 as ManagePermissions, script$q as ShAutoForm, script$l as ShCanvas, script$9 as ShCanvasBtn, script$4 as ShCardLayout, script$j as ShConfirmAction, script$o as ShDropDownForm, script$b as ShDynamicTabs, script$z as ShForm, ShFrontend, script$p as ShModal, script$a as ShModalBtn, script$n as ShModalForm, script$m as ShModalFormAuto, script$B as ShPhone, script$5 as ShQueryPopups, script$f as ShRange, script$7 as ShRoutePopups, script$i as ShSilentAction, script$A as ShSuggest, script$d as ShTable, script$c as ShTabs, shApis, shRepo, shStorage, useAppStore, useShFetch, useUserStore };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iankibetsh/shframework",
3
- "version": "5.8.8",
3
+ "version": "5.9.2",
4
4
  "description": "Vue library for handling laravel backend",
5
5
  "repository": {
6
6
  "type": "git",