@visns-studio/visns-components 3.0.7 → 3.0.9

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.
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import { Link } from 'react-router-dom';
3
+ import { CircleChevronRight } from 'akar-icons';
4
+
5
+ function Breadcrumb({ data, page }) {
6
+ return (
7
+ <h1>
8
+ <Link to={page && page.previousUrl ? page.previousUrl : null}>
9
+ {page && page.title ? page.title : null}
10
+ </Link>{' '}
11
+ {data && data[page.titleKey] ? (
12
+ <>
13
+ <CircleChevronRight strokeWidth={2} size={18} />{' '}
14
+ {data[page.titleKey]}
15
+ </>
16
+ ) : null}
17
+ </h1>
18
+ );
19
+ }
20
+
21
+ export default Breadcrumb;
@@ -573,8 +573,6 @@ const DataGrid = forwardRef(
573
573
  const sortTrigger = () => {
574
574
  const url = form.url.replace('/ajax', '');
575
575
 
576
- console.info(ajaxSetting, columns, form);
577
-
578
576
  const newState = {
579
577
  form: form,
580
578
  page: {
@@ -979,7 +977,9 @@ const DataGrid = forwardRef(
979
977
  filterEditorProps = (props, { index }) => {
980
978
  return {
981
979
  dateFormat: 'DD-MM-YYYY',
982
- placeholder: 'All Dates',
980
+ placeholder: column.filter.placeholder
981
+ ? column.filter.placeholder
982
+ : 'Select Date',
983
983
  };
984
984
  };
985
985
  break;
@@ -1013,6 +1013,8 @@ const DataGrid = forwardRef(
1013
1013
  return {
1014
1014
  ...commonProps,
1015
1015
  name: `${column.type}.${column.id}`,
1016
+ filterEditor: filterEditor,
1017
+ filterEditorProps: filterEditorProps,
1016
1018
  render: ({ data }) => {
1017
1019
  const addressFields = [
1018
1020
  'address1',
@@ -1853,7 +1855,11 @@ const DataGrid = forwardRef(
1853
1855
  ''
1854
1856
  );
1855
1857
  } else {
1856
- filterName = column.id;
1858
+ if (column.type === 'address') {
1859
+ filterName = `address.${column.id}`;
1860
+ } else {
1861
+ filterName = column.id;
1862
+ }
1857
1863
  }
1858
1864
 
1859
1865
  if (column.nameFrom) {
@@ -1879,99 +1885,79 @@ const DataGrid = forwardRef(
1879
1885
  }
1880
1886
  }, [filterValue]);
1881
1887
 
1888
+ const createFilterName = (column) => {
1889
+ let filterName = Array.isArray(column.id)
1890
+ ? column.id.join('.') + '.'
1891
+ : column.id;
1892
+
1893
+ if (column.nameFrom) {
1894
+ filterName += column.nameFrom;
1895
+ }
1896
+
1897
+ if (column.jsonData) {
1898
+ filterName += column.jsonData;
1899
+ }
1900
+
1901
+ return filterName;
1902
+ };
1903
+
1904
+ const updateFilterDataSource = (filterName, data) => {
1905
+ const filterIndex = filterDataSource.findIndex(
1906
+ (filter) => filter.id === filterName
1907
+ );
1908
+
1909
+ if (filterIndex >= 0) {
1910
+ const updatedFilter = {
1911
+ ...filterDataSource[filterIndex],
1912
+ dataset: data,
1913
+ };
1914
+ setFilterDataSource([
1915
+ ...filterDataSource.slice(0, filterIndex),
1916
+ updatedFilter,
1917
+ ...filterDataSource.slice(filterIndex + 1),
1918
+ ]);
1919
+ } else {
1920
+ const newFilter = {
1921
+ id: filterName,
1922
+ dataset: data,
1923
+ };
1924
+ setFilterDataSource((prevState) => [...prevState, newFilter]);
1925
+ }
1926
+ };
1927
+
1882
1928
  useEffect(() => {
1883
1929
  columns.forEach((column) => {
1884
1930
  if (column.filter && column.filter.url) {
1885
- let filterWhere = {};
1886
-
1887
- if (column.filter.where) {
1888
- filterWhere = {
1889
- ...filterWhere,
1931
+ const filterWhere = {
1932
+ ...(column.filter.where && {
1890
1933
  where: column.filter.where,
1891
- };
1892
- }
1893
-
1894
- if (column.filter.fields) {
1895
- filterWhere = {
1896
- ...filterWhere,
1934
+ }),
1935
+ ...(column.filter.fields && {
1897
1936
  fields: column.filter.fields,
1898
- };
1899
- }
1937
+ }),
1938
+ ...(column.filter.order && {
1939
+ order: column.filter.order,
1940
+ }),
1941
+ ...(column.filter.orderBy && {
1942
+ orderBy: column.filter.orderBy,
1943
+ }),
1944
+ };
1900
1945
 
1901
1946
  CustomFetch(
1902
1947
  column.filter.url,
1903
1948
  'POST',
1904
1949
  filterWhere,
1905
1950
  (res) => {
1906
- let filterName;
1907
- if (Array.isArray(column.id)) {
1908
- const concatenatedIds = column.id.reduce(
1909
- (acc, id) => acc + `${id}.`,
1910
- ''
1911
- );
1912
- filterName = column.nameFrom
1913
- ? concatenatedIds + column.nameFrom
1914
- : concatenatedIds;
1915
- } else {
1916
- filterName = column.nameFrom
1917
- ? column.id + column.nameFrom
1918
- : column.id;
1919
- }
1920
-
1921
- if (column.jsonData) {
1922
- filterName += column.jsonData;
1923
- }
1924
-
1925
- const filterIndex = filterDataSource.findIndex(
1926
- (filter) => filter.id === filterName
1927
- );
1928
- if (filterIndex >= 0) {
1929
- const updatedFilter = {
1930
- ...filterDataSource[filterIndex],
1931
- dataset: res.data,
1932
- };
1933
- const updatedDataSource = [
1934
- ...filterDataSource.slice(0, filterIndex),
1935
- updatedFilter,
1936
- ...filterDataSource.slice(filterIndex + 1),
1937
- ];
1938
- setFilterDataSource(updatedDataSource);
1939
- } else {
1940
- const newFilter = {
1941
- id: filterName,
1942
- dataset: res.data,
1943
- };
1944
- setFilterDataSource((prevState) => [
1945
- ...prevState,
1946
- newFilter,
1947
- ]);
1948
- }
1951
+ const filterName = createFilterName(column);
1952
+ updateFilterDataSource(filterName, res.data);
1949
1953
  }
1950
1954
  );
1951
1955
  } else if (column.filter && column.filter.options) {
1952
- let filterName = Array.isArray(column.id)
1953
- ? column.id.reduce((acc, id) => acc + `${id}.`, '')
1954
- : column.id;
1955
-
1956
- if (column.nameFrom) {
1957
- filterName += column.nameFrom;
1958
- }
1959
-
1960
- if (column.jsonData) {
1961
- filterName += column.jsonData;
1962
- }
1963
-
1964
- const newFilter = {
1965
- id: filterName,
1966
- dataset: column.filter.options,
1967
- };
1968
- setFilterDataSource((prevState) => [
1969
- ...prevState,
1970
- newFilter,
1971
- ]);
1956
+ const filterName = createFilterName(column);
1957
+ updateFilterDataSource(filterName, column.filter.options);
1972
1958
  }
1973
1959
  });
1974
- }, []);
1960
+ }, [columns]);
1975
1961
 
1976
1962
  // Data Grid Styling
1977
1963
  const [windowHeight, setWindowHeight] = useState(window.innerHeight);
@@ -1994,34 +1980,23 @@ const DataGrid = forwardRef(
1994
1980
  };
1995
1981
 
1996
1982
  useEffect(() => {
1997
- setGridStyle((prevState) => ({
1998
- ...prevState,
1999
- minHeight:
2000
- gridHeight && gridHeight > 0
2001
- ? gridHeight
2002
- : dataCount > 5
2003
- ? dataCount > 8
2004
- ? windowHeight * 0.7 > 550
2005
- ? windowHeight * 0.7
2006
- : 550
2007
- : 450
2008
- : 400,
2009
- }));
2010
-
2011
- let dgHeight =
2012
- gridHeight && gridHeight > 0
2013
- ? gridHeight
2014
- : dataCount > 5
2015
- ? dataCount > 8
2016
- ? windowHeight * 0.7 > 550
2017
- ? windowHeight * 0.7
2018
- : 550
2019
- : 450
2020
- : 400;
1983
+ const getMinimumHeight = () => {
1984
+ if (gridHeight > 0) return gridHeight;
1985
+ if (dataCount > 0) {
1986
+ if (dataCount <= 5) return 400;
1987
+ if (dataCount <= 8) return 450;
1988
+ }
1989
+ return Math.max(window.innerHeight * 0.7, 550);
1990
+ };
1991
+
1992
+ const calculateRows = (height) => Math.floor((height - 100) / 40);
1993
+
1994
+ const minHeight = getMinimumHeight();
1995
+ setGridStyle((prevState) => ({ ...prevState, minHeight }));
2021
1996
 
2022
- let rowCount = Math.floor((dgHeight - 100) / 40);
1997
+ const rowCount = calculateRows(minHeight);
2023
1998
  setLimit(rowCount);
2024
- }, [dataCount]);
1999
+ }, [dataCount, gridHeight, window.innerHeight]);
2025
2000
 
2026
2001
  useEffect(() => {
2027
2002
  const handleResize = () => {
@@ -1,7 +1,7 @@
1
1
  import React, { useState, useEffect } from 'react';
2
2
  import { usePromiseTracker } from 'react-promise-tracker';
3
3
 
4
- function VisnsLoader(props) {
4
+ function VisnsLoader({}) {
5
5
  const { promiseInProgress } = usePromiseTracker();
6
6
  const [loaderStyle, setLoaderStyle] = useState({
7
7
  opacity: 0,
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- import { useParams, Link } from 'react-router-dom';
2
+ import { useParams } from 'react-router-dom';
3
3
  import moment from 'moment';
4
4
  import parse from 'html-react-parser';
5
5
  import Popup from 'reactjs-popup';
@@ -8,16 +8,11 @@ import Dropzone from 'react-dropzone';
8
8
  import { confirmAlert } from 'react-confirm-alert';
9
9
  import truncate from 'truncate';
10
10
  import { CopyToClipboard } from 'react-copy-to-clipboard';
11
- import {
12
- CircleCheck,
13
- CircleChevronRight,
14
- Copy,
15
- File,
16
- TrashCan,
17
- } from 'akar-icons';
11
+ import { CircleCheck, Copy, File, TrashCan } from 'akar-icons';
18
12
 
19
13
  import 'react-confirm-alert/src/react-confirm-alert.css';
20
14
 
15
+ import Breadcrumb from '../Breadcrumb';
21
16
  import CustomFetch from '../Fetch';
22
17
  import Form from '../Form';
23
18
  import QrCode from '../QrCode';
@@ -876,26 +871,7 @@ function GenericDetail({ setting, urlParam, userProfile }) {
876
871
  <div className="grid">
877
872
  <div className="grid__row">
878
873
  <div className="grid__full crmtitle">
879
- <h1>
880
- <Link
881
- to={
882
- page && page.previousUrl
883
- ? page.previousUrl
884
- : null
885
- }
886
- >
887
- {page && page.title ? page.title : null}
888
- </Link>{' '}
889
- {data && data[page.titleKey] ? (
890
- <>
891
- <CircleChevronRight
892
- strokeWidth={2}
893
- size={18}
894
- />{' '}
895
- {data[page.titleKey]}
896
- </>
897
- ) : null}
898
- </h1>
874
+ <Breadcrumb data={data} page={page} />
899
875
  {total > 0 && (
900
876
  <div className="titleInfo">
901
877
  <span>
package/index.js CHANGED
@@ -7,6 +7,7 @@ import SortableList from './components/cms/sorting/List';
7
7
  /** CRM Components */
8
8
  import AsyncSelect from './components/crm/AsyncSelect';
9
9
  import Autocomplete from './components/crm/Autocomplete';
10
+ import Breadcrumb from './components/crm/Breadcrumb';
10
11
  import Call from './components/crm/Call';
11
12
  import CustomFetch from './components/crm/Fetch';
12
13
  import Download from './components/crm/Download';
@@ -41,6 +42,7 @@ import NotificationList from './components/crm/generic/NotificationList';
41
42
  export {
42
43
  AsyncSelect,
43
44
  Autocomplete,
45
+ Breadcrumb,
44
46
  Call,
45
47
  CmsDetail,
46
48
  CmsForm,
package/package.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "akar-icons": "^1.9.30",
7
7
  "array-move": "^4.0.0",
8
8
  "awesome-debounce-promise": "^2.1.0",
9
- "axios": "^1.6.3",
10
- "framer-motion": "^10.16.16",
11
- "html-react-parser": "^5.0.11",
9
+ "axios": "^1.6.5",
10
+ "framer-motion": "^10.18.0",
11
+ "html-react-parser": "^5.1.0",
12
12
  "lodash": "^4.17.21",
13
13
  "moment": "^2.30.1",
14
- "motion": "^10.16.4",
14
+ "motion": "^10.17.0",
15
15
  "numeral": "^2.0.6",
16
16
  "quill-image-uploader": "^1.3.0",
17
17
  "react-color": "^2.19.3",
@@ -46,7 +46,7 @@
46
46
  "react-dom": "^17.0.1"
47
47
  },
48
48
  "name": "@visns-studio/visns-components",
49
- "version": "3.0.7",
49
+ "version": "3.0.9",
50
50
  "description": "Various packages to assist in the development of our Custom Applications.",
51
51
  "main": "index.js",
52
52
  "scripts": {