@licklist/design 0.44.476-dev.8 → 0.44.476

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 (91) hide show
  1. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts.map +1 -1
  2. package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.js +1 -1
  3. package/dist/events/event-statistic-modal/EventStatisticModal.js +1 -1
  4. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts +1 -1
  5. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts.map +1 -1
  6. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.js +1 -1
  7. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.d.ts.map +1 -1
  8. package/dist/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.js +1 -1
  9. package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts +1 -2
  10. package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts.map +1 -1
  11. package/dist/iframe/order-process/components/BookingSummary/utils/index.d.ts +4 -0
  12. package/dist/iframe/order-process/components/BookingSummary/utils/index.d.ts.map +1 -1
  13. package/dist/iframe/order-process/components/BookingSummary/utils/index.js +1 -1
  14. package/dist/iframe/payment/order-items-table/OrderItemsTable.js +1 -1
  15. package/dist/iframe/payment/payment-form/PaymentForm.js +1 -1
  16. package/dist/iframe/payment/payment-page/PaymentPage.d.ts.map +1 -1
  17. package/dist/iframe/payment/payment-page/PaymentPage.js +1 -1
  18. package/dist/iframe/ryft/RyftPaymentForm.js +1 -1
  19. package/dist/index.d.ts +0 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
  23. package/dist/product-set/form/ProductCategoriesControl.js +1 -1
  24. package/dist/product-set/form/StepsControl.js +1 -1
  25. package/dist/sales/manual-booking/select-menu/SelectMenu.d.ts.map +1 -1
  26. package/dist/sales/manual-booking/select-menu/SelectMenu.js +1 -1
  27. package/dist/sales/notes/NotesTableRow.js +1 -1
  28. package/dist/sales/notes/note-form/NoteForm.d.ts.map +1 -1
  29. package/dist/sales/notes/note-form/NoteForm.js +1 -1
  30. package/dist/setting/dashboard/snippets/card/SnippetCard.js +1 -1
  31. package/dist/styles/iframe-events/Event.scss +2 -0
  32. package/dist/styles/packages.scss +0 -1
  33. package/dist/table/TableHelperComponent.d.ts +3 -2
  34. package/dist/table/TableHelperComponent.d.ts.map +1 -1
  35. package/dist/table/index.d.ts +0 -1
  36. package/dist/table/index.d.ts.map +1 -1
  37. package/dist/table/utils/index.d.ts +0 -1
  38. package/dist/table/utils/index.d.ts.map +1 -1
  39. package/dist/table/utils/index.js +1 -1
  40. package/package.json +1 -2
  41. package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.stories.tsx +0 -1
  42. package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +5 -6
  43. package/src/iframe/order-process/OrderProcess.stories.tsx +5 -2
  44. package/src/iframe/order-process/components/BookingSummary/BookingSummary.stories.tsx +2 -2
  45. package/src/iframe/order-process/components/BookingSummary/BookingSummary.tsx +13 -6
  46. package/src/iframe/order-process/components/BookingSummary/components/SummaryTotal/SummaryTotal.tsx +12 -4
  47. package/src/iframe/order-process/components/BookingSummary/types/index.ts +1 -2
  48. package/src/iframe/order-process/components/BookingSummary/utils/index.ts +21 -0
  49. package/src/iframe/order-process/components/CalendarStepsForm/CalendarStepsForm.stories.tsx +1 -9
  50. package/src/iframe/payment/payment-page/PaymentPage.tsx +2 -1
  51. package/src/iframe/ryft/RyftPaymentForm.tsx +1 -1
  52. package/src/index.ts +0 -1
  53. package/src/product-set/form/ProductCategoriesControl.tsx +3 -4
  54. package/src/product-set/form/StepsControl.tsx +1 -1
  55. package/src/sales/manual-booking/select-menu/SelectMenu.tsx +1 -3
  56. package/src/sales/notes/note-form/NoteForm.tsx +3 -21
  57. package/src/styles/iframe-events/Event.scss +2 -0
  58. package/src/styles/packages.scss +0 -1
  59. package/src/table/Table.stories.tsx +1 -127
  60. package/src/table/TableHelperComponent.tsx +1 -3
  61. package/src/table/index.ts +0 -1
  62. package/src/table/utils/index.ts +0 -2
  63. package/dist/customers/components/filter/CustomerFilter.d.ts +0 -14
  64. package/dist/customers/components/filter/CustomerFilter.d.ts.map +0 -1
  65. package/dist/customers/components/filter/CustomerFilter.js +0 -1
  66. package/dist/customers/components/filter/index.d.ts +0 -3
  67. package/dist/customers/components/filter/index.d.ts.map +0 -1
  68. package/dist/customers/components/index.d.ts +0 -2
  69. package/dist/customers/components/index.d.ts.map +0 -1
  70. package/dist/customers/index.d.ts +0 -2
  71. package/dist/customers/index.d.ts.map +0 -1
  72. package/dist/styles/customers/Filter.scss +0 -34
  73. package/dist/styles/customers/_index.scss +0 -1
  74. package/dist/table/ReactTableHelperComponent.d.ts +0 -12
  75. package/dist/table/ReactTableHelperComponent.d.ts.map +0 -1
  76. package/dist/table/ReactTableHelperComponent.js +0 -1
  77. package/dist/table/hooks/useTableQueryOptions.d.ts +0 -20
  78. package/dist/table/hooks/useTableQueryOptions.d.ts.map +0 -1
  79. package/dist/table/hooks/useTableQueryOptions.js +0 -1
  80. package/dist/table/types.d.ts +0 -41
  81. package/dist/table/types.d.ts.map +0 -1
  82. package/src/customers/components/filter/CustomerFilter.stories.tsx +0 -19
  83. package/src/customers/components/filter/CustomerFilter.tsx +0 -50
  84. package/src/customers/components/filter/index.ts +0 -2
  85. package/src/customers/components/index.ts +0 -1
  86. package/src/customers/index.ts +0 -1
  87. package/src/styles/customers/Filter.scss +0 -34
  88. package/src/styles/customers/_index.scss +0 -1
  89. package/src/table/ReactTableHelperComponent.tsx +0 -321
  90. package/src/table/hooks/useTableQueryOptions.ts +0 -49
  91. package/src/table/types.ts +0 -47
@@ -1 +0,0 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),r=e(require("react")),a=require("react-i18next"),s=require("../../../static/TextField.js"),i=e(require("clsx")),n={first_name:"firstName",last_name:"lastName",email:"email",phone:"phone"};exports.CustomerFilter=function(e){var l=e.values,u=e.onChange,c=a.useTranslation(["Design"]).t;return r.createElement("div",{className:"customers-filter d-flex"},r.createElement("div",{className:"d-flex customers-filter-items"},Object.keys(n).map((function(e){var a=c(n[e]);return r.createElement(s.TextField,{key:e,className:i("mb-0"),type:"text",label:a,value:l[e],onChange:function(r){var a;return u(t.__assign(t.__assign({},l),((a={})[e]=r.target.value,a)))}})}))))};
@@ -1,3 +0,0 @@
1
- export { CustomerFilter } from "./CustomerFilter";
2
- export type { CustomerFilterProps } from "./CustomerFilter";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/customers/components/filter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./filter";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/customers/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./components";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/customers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -1,34 +0,0 @@
1
- .customers-filter {
2
- gap: 0.5rem;
3
-
4
- @include media-breakpoint-down(sm) {
5
- label {
6
- font-size: 0.8rem;
7
- }
8
- }
9
-
10
- @include media-breakpoint-up(md) {
11
- label {
12
- font-size: 0.9rem;
13
- }
14
- }
15
-
16
- @include media-breakpoint-up(lg) {
17
- label {
18
- font-size: 1rem;
19
- }
20
- }
21
-
22
- @include media-breakpoint-down(lg) {
23
- flex-direction: column;
24
- }
25
-
26
- .customers-filter-items {
27
- gap: 0.5rem;
28
-
29
- @include media-breakpoint-down(xs) {
30
- flex-direction: column;
31
- gap: 0rem;
32
- }
33
- }
34
- }
@@ -1 +0,0 @@
1
- @import "./Filter.scss";
@@ -1,12 +0,0 @@
1
- import { Ref, ReactElement } from "react";
2
- import { TableComponentProps, TableComponentPropsWithOldTableData, TableComponentPropsWithReactTableData, ExtendedTableOptions } from "./types";
3
- export type { ReactTableHelperRow } from "./types";
4
- export declare type ReactTableHelperComponentProps<T extends object> = TableComponentProps<T> & (TableComponentPropsWithOldTableData<T> | TableComponentPropsWithReactTableData<T>);
5
- export declare type ReactTableHelperComponentRef = {
6
- options: ExtendedTableOptions | null;
7
- };
8
- declare const ReactTableHelperComponent: <T extends object>(props: ReactTableHelperComponentProps<T> & {
9
- ref?: Ref<ReactTableHelperComponentRef>;
10
- }) => ReactElement;
11
- export { ReactTableHelperComponent };
12
- //# sourceMappingURL=ReactTableHelperComponent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReactTableHelperComponent.d.ts","sourceRoot":"","sources":["../../src/table/ReactTableHelperComponent.tsx"],"names":[],"mappings":"AAAA,OAAc,EAKZ,GAAG,EACH,YAAY,EACb,MAAM,OAAO,CAAC;AAiBf,OAAO,EACL,mBAAmB,EACnB,mCAAmC,EACnC,qCAAqC,EAErC,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,oBAAY,8BAA8B,CAAC,CAAC,SAAS,MAAM,IACzD,mBAAmB,CAAC,CAAC,CAAC,GACpB,CACI,mCAAmC,CAAC,CAAC,CAAC,GACtC,qCAAqC,CAAC,CAAC,CAAC,CAC3C,CAAC;AAEN,oBAAY,4BAA4B,GAAG;IACzC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACtC,CAAC;AA4QF,QAAA,MAAM,yBAAyB;UAIrB,IAAI,4BAA4B,CAAC;MAEtC,YAAY,CAAC;AAElB,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),r=require("react"),n=e(r),i=require("react-router-dom"),a=e(require("@licklist/plugins/dist/services/Route/RouteService")),o=require("../static/loader/LoaderIndicator.js"),s=require("react-bootstrap"),l=e(require("clsx")),u=require("lodash"),c=require("./FilterHelperComponent.js"),d=require("./PaginationHelperComponent.js"),p=e(require("@licklist/plugins/dist/services/Table/TableService")),m=require("./PerPageHelperComponent.js"),g=require("@tanstack/react-table");require("./utils/index.js");var f=require("./hooks/useTableQueryOptions.js");var _=r.forwardRef((function(e,_){var v,C,y=e.paginator,h=e.headers,E=e.renderItemFn,b=e.isLoading,S=e.striped,q=void 0===S||S,w=e.bordered,R=void 0===w||w,P=e.displaySearchBar,k=void 0===P||P,F=e.displayPerPageSelect,H=void 0===F||F,T=e.displayShowingSection,x=void 0===T||T,L=e.externalFilters,D=void 0===L?{}:L,O=e.initialOptions,j=void 0===O?{}:O,N=e.columns,I=e.sortableColumns,K=void 0===I?[]:I,M=e.renderRow,A=t.__rest(e,["paginator","headers","renderItemFn","isLoading","striped","bordered","displaySearchBar","displayPerPageSelect","displayShowingSection","externalFilters","initialOptions","columns","sortableColumns","renderRow"]),U=i.useLocation().pathname,B=f.useTableQueryOptions({initialOptions:j,externalFilters:D}),G=B.sortKey,Q=B.sortDirection,V=B.options,z=B.setOptions,J=B.optionsCache,W=B.setOptionsCache,X=B.cachedExternalFilters,Y=B.setCachedExternalFilters,Z=r.useMemo((function(){return N||h?N&&!h?N.map((function(e){var r=e.accessorKey,n=K.includes(r);return t.__assign(t.__assign({},e),{meta:{className:p.getHeaderClasses({isSortable:n,key:r,title:r},G,Q),onClick:n?function(){return re(r)}:void 0}})})):h.map((function(e){return"string"==typeof e?{accessorKey:e.toLowerCase(),header:function(){return e},meta:{className:p.getHeaderClasses(e,G,Q)}}:{accessorKey:(null==e?void 0:e.key)||e.title.toLowerCase(),header:function(){return e.title},meta:{onClick:function(){return e.isSortable&&re(e.key)},className:p.getHeaderClasses(e,G,Q),style:{width:(null==e?void 0:e.width)||"auto"}}}})):[]}),[h,N,G,Q,K]),$=g.useReactTable(t.__assign({data:y.data,columns:Z,getCoreRowModel:g.getCoreRowModel()},A)),ee=$.getHeaderGroups,te=$.getRowModel;r.useImperativeHandle(_,(function(){return{options:V}})),r.useEffect((function(){if(!u.isEqual(J,V)||!u.isEqual(X,D)){W(V),Y(D);var e=new URLSearchParams(t.__assign(t.__assign({},V),D));a.redirectTo([U,e.toString()].join("?"))}}),[U,V,D]);var re=function(e){var r=p.DEFAULT_SORT_DIRECTION;z(G===e?function(n){return r=p.getSortDirection(n.sortDirection,r),t.__assign(t.__assign({},n),{sortKey:e,sortDirection:r})}:function(n){return t.__assign(t.__assign({},n),{sortKey:e,sortDirection:r})})};return n.createElement("div",{className:l("table-helper",b?"py-5":"py-1")},n.createElement(o.LoaderIndicator,{isLoaded:!b},n.createElement(s.Row,null,n.createElement(s.Col,null,H&&n.createElement(m.PerPageHelperComponent,{onChangeFn:function(e){z((function(r){return t.__assign(t.__assign({},r),{perPage:e})}))},defaultValue:null!==(v=null==y?void 0:y.per_page)&&void 0!==v?v:p.DEFAULT_PER_PAGE})),n.createElement(s.Col,null,k&&n.createElement(c.FilterHelperComponent,{onClickFn:function(e){z((function(r){var n=r.page,i=t.__rest(r,["page"]),a=n;return(!e&&i.filter||e&&!i.filter)&&(a=1),t.__assign(t.__assign({},i),{page:a,filter:e})}))},defaultValue:null!==(C=V.filter)&&void 0!==C?C:""}))),n.createElement(s.Row,null,n.createElement(s.Col,null,n.createElement("div",{className:"table-responsive"},n.createElement(s.Table,{striped:q,bordered:R,hover:!0},n.createElement("thead",null,ee().map((function(e){return n.createElement("tr",{key:e.id},e.headers.map((function(e){var t=e.column.columnDef.meta;return n.createElement("th",{key:e.id,className:null==t?void 0:t.className,onClick:null==t?void 0:t.onClick,style:null==t?void 0:t.style},g.flexRender(e.column.columnDef.header,e.getContext()))})))}))),n.createElement("tbody",null,te().rows.map((function(e,t){return E?E(e.original,t):M(e)}))))))),n.createElement(d.PaginationHelperComponent,{displayShowingSection:x,paginator:y,onPageChangeFn:function(e){z((function(r){return t.__assign(t.__assign({},r),{page:e})}))}})))}));exports.ReactTableHelperComponent=_;
@@ -1,20 +0,0 @@
1
- /// <reference types="react" />
2
- import { TableComponentProps, ExtendedTableOptions } from "../types";
3
- export declare const useTableQueryOptions: <T extends object>({ initialOptions, externalFilters, }: Pick<TableComponentProps<T>, "initialOptions" | "externalFilters">) => {
4
- page: number;
5
- perPage: number;
6
- sortKey: string;
7
- sortDirection: string;
8
- filter: string;
9
- optionsCache: ExtendedTableOptions;
10
- setOptionsCache: import("react").Dispatch<import("react").SetStateAction<ExtendedTableOptions>>;
11
- options: ExtendedTableOptions;
12
- setOptions: import("react").Dispatch<import("react").SetStateAction<ExtendedTableOptions>>;
13
- cachedExternalFilters: {
14
- [key: string]: any;
15
- };
16
- setCachedExternalFilters: import("react").Dispatch<import("react").SetStateAction<{
17
- [key: string]: any;
18
- }>>;
19
- };
20
- //# sourceMappingURL=useTableQueryOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTableQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/table/hooks/useTableQueryOptions.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CA2ChC,CAAC"}
@@ -1 +0,0 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("tslib"),r=require("react"),i=(e(r),e(require("@licklist/plugins/dist/hooks/Query/useQuery"))),s=require("../utils/index.js");exports.useTableQueryOptions=function(e){var o=e.initialOptions,a=void 0===o?{}:o,n=e.externalFilters,l=void 0===n?{}:n,u=i(),p=Number(s.getFilterOptionsValue(u,a,"page")),c=Number(s.getFilterOptionsValue(u,a,"perPage")),g=String(s.getFilterOptionsValue(u,a,"sortKey")),d=String(s.getFilterOptionsValue(u,a,"sortDirection")),O=String(s.getFilterOptionsValue(u,a,"filter")),f=t.__read(r.useState(),2),y=f[0],F=f[1],_=t.__read(r.useState({page:p,perPage:c,sortKey:g,sortDirection:d,filter:O}),2),b=_[0],x=_[1],S=t.__read(r.useState(l),2);return{page:p,perPage:c,sortKey:g,sortDirection:d,filter:O,optionsCache:y,setOptionsCache:F,options:b,setOptions:x,cachedExternalFilters:S[0],setCachedExternalFilters:S[1]}};
@@ -1,41 +0,0 @@
1
- import { ReactNode, CSSProperties } from "react";
2
- import { TableOptions, ColumnDef, Row as TableRow } from "@tanstack/react-table";
3
- import ILengthAwarePaginator from "@licklist/plugins/dist/types/services/Table/ILengthAwarePaginator";
4
- import ITableHeader from "@licklist/plugins/dist/types/services/Table/ITableHeader";
5
- import ITableProps from "@licklist/plugins/dist/types/services/Table/ITableProps";
6
- export declare type ReactTableHelperRow<T extends object> = TableRow<T>;
7
- export declare type ExtendedTableOptions = ITableProps & {
8
- [key: string]: any;
9
- };
10
- export interface TableComponentProps<T extends object> extends Omit<TableOptions<T>, "columns" | "data" | "getCoreRowModel"> {
11
- paginator?: ILengthAwarePaginator<T>;
12
- isLoading?: boolean;
13
- striped?: boolean;
14
- bordered?: boolean;
15
- displaySearchBar?: boolean;
16
- displayPerPageSelect?: boolean;
17
- displayShowingSection?: boolean;
18
- externalFilters?: {
19
- [key: string]: any;
20
- };
21
- initialOptions?: Partial<ITableProps>;
22
- sortableColumns?: string[];
23
- }
24
- export declare type TableColumnMeta = {
25
- onClick?: () => void;
26
- className?: string;
27
- style?: CSSProperties;
28
- };
29
- export declare type TableComponentPropsWithOldTableData<T extends object> = {
30
- headers: ITableHeader[];
31
- renderItemFn: (row: T, index: number) => void;
32
- columns?: never;
33
- renderRow?: never;
34
- };
35
- export declare type TableComponentPropsWithReactTableData<T extends object> = {
36
- headers?: never;
37
- renderItemFn?: never;
38
- columns: ColumnDef<T, any>[];
39
- renderRow: (row: ReactTableHelperRow<T>) => ReactNode;
40
- };
41
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/table/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,SAAS,EACT,GAAG,IAAI,QAAQ,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,MAAM,mEAAmE,CAAC;AACtG,OAAO,YAAY,MAAM,0DAA0D,CAAC;AACpF,OAAO,WAAW,MAAM,yDAAyD,CAAC;AAElF,oBAAY,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEhE,oBAAY,oBAAoB,GAAG,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAExE,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CACnD,SAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,iBAAiB,CAAC;IACrE,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,oBAAY,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,oBAAY,mCAAmC,CAAC,CAAC,SAAS,MAAM,IAAI;IAClE,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF,oBAAY,qCAAqC,CAAC,CAAC,SAAS,MAAM,IAAI;IACpE,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7B,SAAS,EAAE,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;CACvD,CAAC"}
@@ -1,19 +0,0 @@
1
- import React, { useState } from "react";
2
- import { Meta, Story } from "@storybook/react";
3
- import { CustomerFilter, CustomerFilterProps } from "./CustomerFilter";
4
-
5
- export default {
6
- title: "Customers/Filter",
7
- component: CustomerFilter,
8
- } as Meta;
9
-
10
- export const Default: Story<CustomerFilterProps> = () => {
11
- const [values, setValues] = useState({
12
- first_name: "",
13
- last_name: "",
14
- email: "",
15
- phone: "",
16
- });
17
-
18
- return <CustomerFilter values={values} onChange={setValues} />;
19
- };
@@ -1,50 +0,0 @@
1
- import React from "react";
2
- import { useTranslation } from "react-i18next";
3
- import clsx from "clsx";
4
- import { TextField } from "../../../static/TextField";
5
-
6
- type CustomerFilterValues = {
7
- first_name: string;
8
- last_name: string;
9
- email: string;
10
- phone: string;
11
- };
12
-
13
- const FILTER_FIELDS = {
14
- first_name: "firstName",
15
- last_name: "lastName",
16
- email: "email",
17
- phone: "phone",
18
- };
19
-
20
- export interface CustomerFilterProps {
21
- values: CustomerFilterValues;
22
- onChange: (values: CustomerFilterValues) => void;
23
- }
24
-
25
- export const CustomerFilter = ({ values, onChange }: CustomerFilterProps) => {
26
- const { t } = useTranslation(["Design"]);
27
-
28
- return (
29
- <div className="customers-filter d-flex">
30
- <div className="d-flex customers-filter-items">
31
- {Object.keys(FILTER_FIELDS).map((filterKeyName) => {
32
- const label = t(FILTER_FIELDS[filterKeyName]);
33
-
34
- return (
35
- <TextField
36
- key={filterKeyName}
37
- className={clsx("mb-0")}
38
- type="text"
39
- label={label}
40
- value={values[filterKeyName]}
41
- onChange={(event) =>
42
- onChange({ ...values, [filterKeyName]: event.target.value })
43
- }
44
- />
45
- );
46
- })}
47
- </div>
48
- </div>
49
- );
50
- };
@@ -1,2 +0,0 @@
1
- export { CustomerFilter } from "./CustomerFilter";
2
- export type { CustomerFilterProps } from "./CustomerFilter";
@@ -1 +0,0 @@
1
- export * from "./filter";
@@ -1 +0,0 @@
1
- export * from "./components";
@@ -1,34 +0,0 @@
1
- .customers-filter {
2
- gap: 0.5rem;
3
-
4
- @include media-breakpoint-down(sm) {
5
- label {
6
- font-size: 0.8rem;
7
- }
8
- }
9
-
10
- @include media-breakpoint-up(md) {
11
- label {
12
- font-size: 0.9rem;
13
- }
14
- }
15
-
16
- @include media-breakpoint-up(lg) {
17
- label {
18
- font-size: 1rem;
19
- }
20
- }
21
-
22
- @include media-breakpoint-down(lg) {
23
- flex-direction: column;
24
- }
25
-
26
- .customers-filter-items {
27
- gap: 0.5rem;
28
-
29
- @include media-breakpoint-down(xs) {
30
- flex-direction: column;
31
- gap: 0rem;
32
- }
33
- }
34
- }
@@ -1 +0,0 @@
1
- @import "./Filter.scss";
@@ -1,321 +0,0 @@
1
- import React, {
2
- useEffect,
3
- useMemo,
4
- forwardRef,
5
- useImperativeHandle,
6
- Ref,
7
- ReactElement,
8
- } from "react";
9
- import { Col, Row, Table } from "react-bootstrap";
10
- import { useLocation } from "react-router-dom";
11
- import { isEqual } from "lodash";
12
- import clsx from "clsx";
13
- import {
14
- useReactTable,
15
- ColumnDefResolved,
16
- getCoreRowModel,
17
- } from "@tanstack/react-table";
18
- import RouteService from "@licklist/plugins/dist/services/Route/RouteService";
19
- import TableService from "@licklist/plugins/dist/services/Table/TableService";
20
- import { LoaderIndicator } from "../static/loader/LoaderIndicator";
21
- import { FilterHelperComponent } from "./FilterHelperComponent";
22
- import { PaginationHelperComponent } from "./PaginationHelperComponent";
23
- import { PerPageHelperComponent } from "./PerPageHelperComponent";
24
- import { flexRender } from "./utils";
25
- import {
26
- TableComponentProps,
27
- TableComponentPropsWithOldTableData,
28
- TableComponentPropsWithReactTableData,
29
- TableColumnMeta,
30
- ExtendedTableOptions,
31
- } from "./types";
32
- import { useTableQueryOptions } from "./hooks/useTableQueryOptions";
33
-
34
- export type { ReactTableHelperRow } from "./types";
35
-
36
- export type ReactTableHelperComponentProps<T extends object> =
37
- TableComponentProps<T> &
38
- (
39
- | TableComponentPropsWithOldTableData<T>
40
- | TableComponentPropsWithReactTableData<T>
41
- );
42
-
43
- export type ReactTableHelperComponentRef = {
44
- options: ExtendedTableOptions | null;
45
- };
46
-
47
- /**
48
- * ReactTableHelperComponent
49
- * simple table with our backend realization
50
- * and pagination.
51
- * @param props
52
- * @constructor
53
- */
54
- function WrappedReactTableHelperComponent<T extends object>(
55
- props: ReactTableHelperComponentProps<T>,
56
- ref: Ref<ReactTableHelperComponentRef>
57
- ) {
58
- const {
59
- paginator,
60
- headers,
61
- renderItemFn,
62
- isLoading,
63
- striped = true,
64
- bordered = true,
65
- displaySearchBar = true,
66
- displayPerPageSelect = true,
67
- displayShowingSection = true,
68
- externalFilters = {},
69
- initialOptions = {},
70
- columns,
71
- sortableColumns = [],
72
- renderRow,
73
- ...tableProps
74
- } = props;
75
-
76
- const { pathname } = useLocation();
77
-
78
- const {
79
- sortKey,
80
- sortDirection,
81
- options,
82
- setOptions,
83
- optionsCache,
84
- setOptionsCache,
85
- cachedExternalFilters,
86
- setCachedExternalFilters,
87
- } = useTableQueryOptions({ initialOptions, externalFilters });
88
-
89
- const tableColumns = useMemo(() => {
90
- if (!columns && !headers) return [];
91
-
92
- if (columns && !headers) {
93
- return columns.map((column) => {
94
- const { accessorKey } = column as ColumnDefResolved<T>;
95
- const isSortable = sortableColumns.includes(accessorKey);
96
-
97
- return {
98
- ...column,
99
- meta: {
100
- className: TableService.getHeaderClasses(
101
- { isSortable, key: accessorKey, title: accessorKey },
102
- sortKey,
103
- sortDirection
104
- ),
105
- onClick: isSortable ? () => onSort(accessorKey!) : undefined,
106
- },
107
- };
108
- });
109
- }
110
-
111
- return headers.map((header) => {
112
- if (typeof header === "string") {
113
- return {
114
- accessorKey: header.toLowerCase(),
115
- header: () => header,
116
- meta: {
117
- className: TableService.getHeaderClasses(
118
- header,
119
- sortKey,
120
- sortDirection
121
- ),
122
- },
123
- };
124
- }
125
-
126
- return {
127
- accessorKey: header?.key || header.title.toLowerCase(),
128
- header: () => header.title,
129
- meta: {
130
- onClick: () => header.isSortable && onSort(header.key!),
131
- className: TableService.getHeaderClasses(
132
- header,
133
- sortKey,
134
- sortDirection
135
- ),
136
- style: { width: header?.width || "auto" },
137
- },
138
- };
139
- });
140
- // eslint-disable-next-line react-hooks/exhaustive-deps
141
- }, [headers, columns, sortKey, sortDirection, sortableColumns]);
142
-
143
- const { getHeaderGroups, getRowModel } = useReactTable<T>({
144
- data: paginator.data,
145
- columns: tableColumns,
146
- getCoreRowModel: getCoreRowModel<T>(),
147
- ...tableProps,
148
- });
149
-
150
- useImperativeHandle(ref, () => {
151
- return { options };
152
- });
153
-
154
- // Redirect to the URL with a new parameters
155
- // ONLY: if any option or external filters has changed
156
- useEffect(
157
- () => {
158
- if (
159
- isEqual(optionsCache, options) &&
160
- isEqual(cachedExternalFilters, externalFilters)
161
- )
162
- return;
163
-
164
- setOptionsCache(options);
165
- setCachedExternalFilters(externalFilters);
166
-
167
- const nextUrlSearchParams = new URLSearchParams({
168
- ...options,
169
- ...externalFilters,
170
- });
171
-
172
- RouteService.redirectTo(
173
- [pathname, nextUrlSearchParams.toString()].join("?")
174
- );
175
- },
176
- // eslint-disable-next-line react-hooks/exhaustive-deps
177
- [pathname, options, externalFilters]
178
- );
179
-
180
- const onSort = (key: string) => {
181
- let nextDirection = TableService.DEFAULT_SORT_DIRECTION;
182
-
183
- if (sortKey === key) {
184
- setOptions((prevOptions) => {
185
- nextDirection = TableService.getSortDirection(
186
- prevOptions.sortDirection,
187
- nextDirection
188
- );
189
-
190
- return {
191
- ...prevOptions,
192
- sortKey: key,
193
- sortDirection: nextDirection,
194
- };
195
- });
196
- } else {
197
- setOptions((prevOptions) => ({
198
- ...prevOptions,
199
- sortKey: key,
200
- sortDirection: nextDirection,
201
- }));
202
- }
203
- };
204
-
205
- const onPerPageChange = (nextPerPage: number) => {
206
- setOptions((prevOptions) => ({
207
- ...prevOptions,
208
- perPage: nextPerPage,
209
- }));
210
- };
211
-
212
- const onPageChange = (nextPage: number) => {
213
- setOptions((prevOptions) => ({
214
- ...prevOptions,
215
- page: nextPage,
216
- }));
217
- };
218
-
219
- const onFilterChange = (nextFilter: string) => {
220
- setOptions(({ page: prevPage, ...prevOptions }) => {
221
- let nextPage = prevPage;
222
-
223
- if (
224
- (!nextFilter && prevOptions.filter) ||
225
- (nextFilter && !prevOptions.filter)
226
- ) {
227
- nextPage = 1;
228
- }
229
-
230
- return {
231
- ...prevOptions,
232
- page: nextPage,
233
- filter: nextFilter,
234
- };
235
- });
236
- };
237
-
238
- return (
239
- <div className={clsx("table-helper", isLoading ? "py-5" : "py-1")}>
240
- <LoaderIndicator isLoaded={!isLoading}>
241
- <Row>
242
- <Col>
243
- {displayPerPageSelect && (
244
- <PerPageHelperComponent
245
- onChangeFn={onPerPageChange}
246
- defaultValue={
247
- paginator?.per_page ?? TableService.DEFAULT_PER_PAGE
248
- }
249
- />
250
- )}
251
- </Col>
252
- <Col>
253
- {displaySearchBar && (
254
- <FilterHelperComponent
255
- onClickFn={onFilterChange}
256
- defaultValue={options.filter ?? ""}
257
- />
258
- )}
259
- </Col>
260
- </Row>
261
- <Row>
262
- <Col>
263
- <div className="table-responsive">
264
- <Table striped={striped} bordered={bordered} hover>
265
- <thead>
266
- {getHeaderGroups().map((headerGroup) => (
267
- <tr key={headerGroup.id}>
268
- {headerGroup.headers.map((header) => {
269
- const headerMeta = header.column.columnDef
270
- .meta as TableColumnMeta;
271
-
272
- return (
273
- <th
274
- key={header.id}
275
- className={headerMeta?.className}
276
- onClick={headerMeta?.onClick}
277
- style={headerMeta?.style}
278
- >
279
- {flexRender(
280
- header.column.columnDef.header,
281
- header.getContext()
282
- )}
283
- </th>
284
- );
285
- })}
286
- </tr>
287
- ))}
288
- </thead>
289
- <tbody>
290
- {getRowModel().rows.map((row, index) => {
291
- if (renderItemFn) {
292
- return renderItemFn(row.original, index);
293
- }
294
-
295
- return renderRow(row);
296
- })}
297
- </tbody>
298
- </Table>
299
- </div>
300
- </Col>
301
- </Row>
302
-
303
- <PaginationHelperComponent
304
- displayShowingSection={displayShowingSection}
305
- paginator={paginator}
306
- onPageChangeFn={onPageChange}
307
- />
308
- </LoaderIndicator>
309
- </div>
310
- );
311
- }
312
-
313
- const ReactTableHelperComponent = forwardRef(
314
- WrappedReactTableHelperComponent
315
- ) as <T extends object>(
316
- props: ReactTableHelperComponentProps<T> & {
317
- ref?: Ref<ReactTableHelperComponentRef>;
318
- }
319
- ) => ReactElement;
320
-
321
- export { ReactTableHelperComponent };
@@ -1,49 +0,0 @@
1
- import { useState } from "react";
2
- import useQuery from "@licklist/plugins/dist/hooks/Query/useQuery";
3
- import { getFilterOptionsValue } from "../utils";
4
- import { TableComponentProps, ExtendedTableOptions } from "../types";
5
-
6
- export const useTableQueryOptions = <T extends object>({
7
- initialOptions = {},
8
- externalFilters = {},
9
- }: Pick<TableComponentProps<T>, "initialOptions" | "externalFilters">) => {
10
- const query = useQuery();
11
-
12
- const page = Number(getFilterOptionsValue(query, initialOptions, "page"));
13
- const perPage = Number(
14
- getFilterOptionsValue(query, initialOptions, "perPage")
15
- );
16
- const sortKey = String(
17
- getFilterOptionsValue(query, initialOptions, "sortKey")
18
- );
19
- const sortDirection = String(
20
- getFilterOptionsValue(query, initialOptions, "sortDirection")
21
- );
22
-
23
- const filter = String(getFilterOptionsValue(query, initialOptions, "filter"));
24
-
25
- const [optionsCache, setOptionsCache] = useState<ExtendedTableOptions>();
26
- const [options, setOptions] = useState<ExtendedTableOptions>({
27
- page,
28
- perPage,
29
- sortKey,
30
- sortDirection,
31
- filter,
32
- });
33
- const [cachedExternalFilters, setCachedExternalFilters] =
34
- useState<{ [key: string]: any }>(externalFilters);
35
-
36
- return {
37
- page,
38
- perPage,
39
- sortKey,
40
- sortDirection,
41
- filter,
42
- optionsCache,
43
- setOptionsCache,
44
- options,
45
- setOptions,
46
- cachedExternalFilters,
47
- setCachedExternalFilters,
48
- };
49
- };