forstok-ui-lib 6.18.1 → 6.18.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forstok-ui-lib",
3
- "version": "6.18.1",
3
+ "version": "6.18.2",
4
4
  "description": "Forstok UI Components Library",
5
5
  "path": "dist",
6
6
  "main": "dist/index.js",
@@ -3,6 +3,7 @@ import { ReactNode } from 'react';
3
3
  import { TMessage, TMessageFunction, TMessageQuestion } from '../../components/message/typed';
4
4
  import { TObject } from '../../typeds/base.typed';
5
5
  import { errorTitle } from './helper';
6
+ import { THeadProps } from '../../typeds';
6
7
 
7
8
  export const getStorage = (name: string, type: string = 'string', defaultVal?: any, loadName: string = 'load') => {
8
9
  let result: any
@@ -695,4 +696,134 @@ export const generateAddress = (address?: TObject | null) => {
695
696
  export const evRemoveActiveButton = () => {
696
697
  const nextButtonEl = document.querySelector('#btn-active-red') as HTMLButtonElement
697
698
  nextButtonEl && nextButtonEl.removeAttribute('id')
699
+ }
700
+
701
+ export const evCheckAllValidationByHeader = (data: any[], headerColumns: THeadProps[]) => {
702
+ let isError = false
703
+ const validByHeader = (key: string, valuex: any, idx?: number, title = null) => {
704
+ const __idx = idx || 0
705
+ const validHeaderKeyFilter = headerColumns.filter(header => (header.key === key && header.validations))
706
+ if (validHeaderKeyFilter.length) {
707
+ const head = validHeaderKeyFilter[__idx]
708
+ const type = head.typeData || 'String'
709
+ const _value = generateValue(type, valuex)
710
+ const valid = validateByApproveJs(head, _value, title || '')
711
+ return valid
712
+ }
713
+ return { approved: true }
714
+ }
715
+
716
+ const newData = []
717
+ for (let x=0; x<data.length; x++) {
718
+ const _data = data[x]
719
+ const keys = Object.keys(_data)
720
+
721
+ for (const key of keys) {
722
+ let _valid: TObject = { approved: true }
723
+ if (Array.isArray(_data[key])) {
724
+ for (let i = 0; i < _data[key].length; i++) {
725
+ const _dataArr = _data[key][i]
726
+ const keysArr = Object.keys(_dataArr)
727
+ for (const keyArr of keysArr) {
728
+ if (Array.isArray(_dataArr[keyArr])) {
729
+ for (let z = 0; z < _dataArr[keyArr].length; z++) {
730
+ const _dataArrArr = _dataArr[keyArr][z]
731
+ const keysArrArr = Object.keys(_dataArrArr)
732
+ for (const keyArrArr of keysArrArr) {
733
+ _valid = validByHeader(keyArrArr, _dataArrArr[keyArrArr])
734
+ if (!_valid.approved) {
735
+ _dataArrArr[`${keyArr}_error`] = _valid.errors[0]
736
+ if (!isError) {
737
+ isError = true
738
+ }
739
+ }
740
+ if (keyArrArr.indexOf('_error') !== -1 && !isError) {
741
+ isError = true
742
+ }
743
+ }
744
+ }
745
+ } else {
746
+ _valid = validByHeader(keyArr, _dataArr[keyArr])
747
+ if (!_valid.approved) {
748
+ _dataArr[`${keyArr}_error`] = _valid.errors[0]
749
+ if (!isError) {
750
+ isError = true
751
+ }
752
+ }
753
+ if (keyArr.indexOf('_error') !== -1 && !isError) {
754
+ isError = true
755
+ }
756
+ }
757
+ }
758
+ }
759
+ } else {
760
+ _valid = validByHeader(key, _data[key])
761
+ if (!_valid.approved) {
762
+ _data[`${key}_error`] = _valid.errors[0]
763
+ if (!isError) {
764
+ isError = true
765
+ }
766
+ }
767
+ if (key.indexOf('_error') !== -1 && !isError) {
768
+ isError = true
769
+ }
770
+ }
771
+ }
772
+ newData.push(_data)
773
+ }
774
+ return { error: isError, data: newData }
775
+ }
776
+
777
+ export const evCheckAllValidationByHeaderWithVariant = (newData: any[], headerColumns: THeadProps[]) => {
778
+ let isError = false
779
+
780
+ const validByHeader = (key: string, valuex: any, idx?: number, content?: any) => {
781
+ const __idx = idx || 0
782
+ const validHeaderKeyFilter = headerColumns.filter(header => (header.key === key && header.validations))
783
+ if (validHeaderKeyFilter.length) {
784
+ const head = validHeaderKeyFilter[__idx]
785
+ const type = head.typeData || 'String'
786
+ const _value = generateValue(type, valuex)
787
+ const valid = validateByApproveJs(head, _value, undefined, evGenerateValueMatch(head.validations, content))
788
+ return valid
789
+ }
790
+ return { approved: true }
791
+ }
792
+
793
+ let _newData = [...newData]
794
+ for (let x=0; x<_newData.length; x++) {
795
+ let _data = _newData[x]
796
+ let keys = Object.keys(_data)
797
+
798
+ for (const key of keys) {
799
+ if (Array.isArray(_data[key]) && _data[key].length && typeof _data[key][0] === 'object') {
800
+ for (let i = 0; i < _data[key].length; i++){
801
+ const _dataArr = _data[key][i]
802
+ const keysArr = Object.keys(_dataArr)
803
+ for (const keyArr of keysArr) {
804
+ if (!Array.isArray(_dataArr[keyArr])) {
805
+ const _key = `${key}-${keyArr}`,
806
+ valid = validByHeader(_key, _dataArr[keyArr], undefined, _dataArr)
807
+ if (!valid.approved) {
808
+ _dataArr[`${keyArr}_error`] = valid.errors[0]
809
+ if (!isError) {
810
+ isError = true
811
+ }
812
+ }
813
+ }
814
+ }
815
+ }
816
+ } else {
817
+ const valid = validByHeader(key, _data[key], undefined, _data)
818
+ if (!valid.approved) {
819
+ _data[`${key}_error`] = valid.errors[0]
820
+ if (!isError) {
821
+ isError = true
822
+ }
823
+ }
824
+ }
825
+ }
826
+ _newData.splice(x, 1, _data)
827
+ }
828
+ return { error: isError, data: _newData }
698
829
  }