procode-vs-template 1.0.0

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 (191) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +188 -0
  3. package/dist/actions.esm.js +53 -0
  4. package/dist/actions.esm.js.map +1 -0
  5. package/dist/actions.js +55 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/assets/delete.png +0 -0
  8. package/dist/assets/info.svg +5 -0
  9. package/dist/assets/react.svg +1 -0
  10. package/dist/assets/styles/_tempalte-base.scss +5 -0
  11. package/dist/factories.esm.js +39149 -0
  12. package/dist/factories.esm.js.map +1 -0
  13. package/dist/factories.js +39169 -0
  14. package/dist/factories.js.map +1 -0
  15. package/dist/index.esm.js +39200 -0
  16. package/dist/index.esm.js.map +1 -0
  17. package/dist/index.js +39224 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/src/assets/styles/_tempalte-base.scss +5 -0
  20. package/dist/types/Action/TemplateActionFactory.d.ts +8 -0
  21. package/dist/types/Action/TemplateActionType.d.ts +8 -0
  22. package/dist/types/Action/TemplateActions/handleMenuNavigation.d.ts +1 -0
  23. package/dist/types/Factory/BaseType.d.ts +16 -0
  24. package/dist/types/Factory/TemplateWidgetFactory.d.ts +14 -0
  25. package/dist/types/Renderer/index.d.ts +2 -0
  26. package/dist/types/Widgets/Block/BlockView.d.ts +3 -0
  27. package/dist/types/Widgets/Block/index.d.ts +3 -0
  28. package/dist/types/Widgets/Block/types.d.ts +12 -0
  29. package/dist/types/Widgets/ConfirmationAlert/ConfirmationAlertView.d.ts +14 -0
  30. package/dist/types/Widgets/ConfirmationAlert/index.d.ts +11 -0
  31. package/dist/types/Widgets/GridToolBar/Components/AdvancedSearch/AdvancedSearch.d.ts +15 -0
  32. package/dist/types/Widgets/GridToolBar/Components/AdvancedSearch/AdvancedSearchView.d.ts +6 -0
  33. package/dist/types/Widgets/GridToolBar/Components/AdvancedSearch/Filter.d.ts +20 -0
  34. package/dist/types/Widgets/GridToolBar/Components/AdvancedSearch/FilterPopup.d.ts +13 -0
  35. package/dist/types/Widgets/GridToolBar/Components/AdvancedSearch/FilterPopupView.d.ts +25 -0
  36. package/dist/types/Widgets/GridToolBar/Components/AdvancedSearch/TypeBasedWidgetFactory.d.ts +8 -0
  37. package/dist/types/Widgets/GridToolBar/Components/AdvancedSearch/constant.d.ts +8 -0
  38. package/dist/types/Widgets/GridToolBar/Components/AdvancedSearch/helper/AdvancedSearchFunctions.d.ts +7 -0
  39. package/dist/types/Widgets/GridToolBar/Components/Export/Export.d.ts +14 -0
  40. package/dist/types/Widgets/GridToolBar/Components/Export/ExportPopup.d.ts +20 -0
  41. package/dist/types/Widgets/GridToolBar/Components/Export/ExportView.d.ts +6 -0
  42. package/dist/types/Widgets/GridToolBar/Components/Export/type.d.ts +4 -0
  43. package/dist/types/Widgets/GridToolBar/Components/GlobalSearch/GlobalSearch.d.ts +11 -0
  44. package/dist/types/Widgets/GridToolBar/Components/GlobalSearch/GlobalSearchView.d.ts +9 -0
  45. package/dist/types/Widgets/GridToolBar/Components/GroupBy/GroupByPopUp.d.ts +17 -0
  46. package/dist/types/Widgets/GridToolBar/Components/GroupBy/GroupByView.d.ts +6 -0
  47. package/dist/types/Widgets/GridToolBar/Components/GroupBy/index.d.ts +15 -0
  48. package/dist/types/Widgets/GridToolBar/Components/QuickFilter/FilterPopup.d.ts +10 -0
  49. package/dist/types/Widgets/GridToolBar/Components/QuickFilter/QuickFilterView.d.ts +6 -0
  50. package/dist/types/Widgets/GridToolBar/Components/QuickFilter/index.d.ts +12 -0
  51. package/dist/types/Widgets/GridToolBar/Components/Reset/ResetView.d.ts +6 -0
  52. package/dist/types/Widgets/GridToolBar/Components/Reset/index.d.ts +11 -0
  53. package/dist/types/Widgets/GridToolBar/Components/ScreenView/CreateScreenPopup.d.ts +6 -0
  54. package/dist/types/Widgets/GridToolBar/Components/ScreenView/UserView.d.ts +26 -0
  55. package/dist/types/Widgets/GridToolBar/Components/ScreenView/UserViewView.d.ts +13 -0
  56. package/dist/types/Widgets/GridToolBar/Components/ScreenView/ViewItem.d.ts +11 -0
  57. package/dist/types/Widgets/GridToolBar/Components/ScreenView/actions/index.d.ts +8 -0
  58. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/deserializedScreenView.d.ts +4 -0
  59. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/getSavedSystemDefault.d.ts +2 -0
  60. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/saveSystemDefaultInSession.d.ts +1 -0
  61. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/advancedSearchHandler.d.ts +1 -0
  62. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/globalSearchHandler.d.ts +1 -0
  63. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/groupByHandler.d.ts +1 -0
  64. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/localSearchHandler.d.ts +1 -0
  65. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/paginationHandler.d.ts +1 -0
  66. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/quickFilterHandler.d.ts +1 -0
  67. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/settingHandler.d.ts +1 -0
  68. package/dist/types/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/sortHandler.d.ts +1 -0
  69. package/dist/types/Widgets/GridToolBar/Components/ScreenView/services/index.d.ts +6 -0
  70. package/dist/types/Widgets/GridToolBar/Components/Setting/ColumnChooser/ColumnChooser.d.ts +15 -0
  71. package/dist/types/Widgets/GridToolBar/Components/Setting/ColumnChooser/ColumnChooserView.d.ts +17 -0
  72. package/dist/types/Widgets/GridToolBar/Components/Setting/ColumnChooser/DragDropContext.d.ts +9 -0
  73. package/dist/types/Widgets/GridToolBar/Components/Setting/Setting.d.ts +19 -0
  74. package/dist/types/Widgets/GridToolBar/Components/Setting/SettingPopup.d.ts +9 -0
  75. package/dist/types/Widgets/GridToolBar/Components/Setting/SettingView.d.ts +6 -0
  76. package/dist/types/Widgets/GridToolBar/GridToolBar.d.ts +8 -0
  77. package/dist/types/Widgets/GridToolBar/GridToolBarView.d.ts +23 -0
  78. package/dist/types/Widgets/GridToolBar/data/advancedSearch/index.d.ts +46 -0
  79. package/dist/types/Widgets/GridToolBar/data/globalSearch/index.d.ts +4 -0
  80. package/dist/types/Widgets/GridToolBar/data/groupBy/index.d.ts +6 -0
  81. package/dist/types/Widgets/GridToolBar/data/index.d.ts +49 -0
  82. package/dist/types/Widgets/GridToolBar/data/quickFilter/index.d.ts +30 -0
  83. package/dist/types/Widgets/GridToolBar/data/setting/index.d.ts +21 -0
  84. package/dist/types/Widgets/GridToolBar/data/userView/index.d.ts +10 -0
  85. package/dist/types/Widgets/GridToolBar/enum/index.d.ts +27 -0
  86. package/dist/types/Widgets/GridToolBar/helper/getUniqueId.d.ts +1 -0
  87. package/dist/types/Widgets/GridToolBar/type.d.ts +58 -0
  88. package/dist/types/Widgets/InformationAlert/InformationAlert.d.ts +8 -0
  89. package/dist/types/Widgets/InformationAlert/InformationAlertView.d.ts +8 -0
  90. package/dist/types/Widgets/Menu/MenuMainHeader.d.ts +3 -0
  91. package/dist/types/Widgets/Menu/MenuSubHeader.d.ts +3 -0
  92. package/dist/types/Widgets/Menu/MenuSubItem.d.ts +3 -0
  93. package/dist/types/Widgets/Menu/MenuView.d.ts +6 -0
  94. package/dist/types/Widgets/Menu/index.d.ts +14 -0
  95. package/dist/types/actions.d.ts +2 -0
  96. package/dist/types/constant.d.ts +8 -0
  97. package/dist/types/factories.d.ts +2 -0
  98. package/dist/types/index.d.ts +4 -0
  99. package/dist/types/utils/getValueFromNestedObject.d.ts +1 -0
  100. package/package.json +98 -0
  101. package/src/Action/TemplateActionFactory.ts +27 -0
  102. package/src/Action/TemplateActionType.ts +8 -0
  103. package/src/Action/TemplateActions/handleMenuNavigation.ts +23 -0
  104. package/src/Factory/BaseType.ts +12 -0
  105. package/src/Factory/TemplateWidgetFactory.tsx +50 -0
  106. package/src/Renderer/index.tsx +14 -0
  107. package/src/Widgets/Block/BlockView.tsx +31 -0
  108. package/src/Widgets/Block/Styles/index.scss +41 -0
  109. package/src/Widgets/Block/index.tsx +8 -0
  110. package/src/Widgets/Block/types.ts +11 -0
  111. package/src/Widgets/ConfirmationAlert/ConfirmationAlertView.tsx +90 -0
  112. package/src/Widgets/ConfirmationAlert/index.tsx +16 -0
  113. package/src/Widgets/ConfirmationAlert/scss/index.scss +66 -0
  114. package/src/Widgets/GridToolBar/Components/AdvancedSearch/AdvancedSearch.tsx +83 -0
  115. package/src/Widgets/GridToolBar/Components/AdvancedSearch/AdvancedSearchView.tsx +25 -0
  116. package/src/Widgets/GridToolBar/Components/AdvancedSearch/Filter.tsx +162 -0
  117. package/src/Widgets/GridToolBar/Components/AdvancedSearch/FilterPopup.tsx +437 -0
  118. package/src/Widgets/GridToolBar/Components/AdvancedSearch/FilterPopupView.tsx +111 -0
  119. package/src/Widgets/GridToolBar/Components/AdvancedSearch/TypeBasedWidgetFactory.tsx +226 -0
  120. package/src/Widgets/GridToolBar/Components/AdvancedSearch/constant.ts +55 -0
  121. package/src/Widgets/GridToolBar/Components/AdvancedSearch/helper/AdvancedSearchFunctions.ts +36 -0
  122. package/src/Widgets/GridToolBar/Components/Export/Export.tsx +57 -0
  123. package/src/Widgets/GridToolBar/Components/Export/ExportPopup.tsx +388 -0
  124. package/src/Widgets/GridToolBar/Components/Export/ExportView.tsx +21 -0
  125. package/src/Widgets/GridToolBar/Components/Export/type.ts +4 -0
  126. package/src/Widgets/GridToolBar/Components/GlobalSearch/GlobalSearch.tsx +95 -0
  127. package/src/Widgets/GridToolBar/Components/GlobalSearch/GlobalSearchView.tsx +65 -0
  128. package/src/Widgets/GridToolBar/Components/GroupBy/GroupByPopUp.tsx +115 -0
  129. package/src/Widgets/GridToolBar/Components/GroupBy/GroupByView.tsx +21 -0
  130. package/src/Widgets/GridToolBar/Components/GroupBy/index.tsx +84 -0
  131. package/src/Widgets/GridToolBar/Components/QuickFilter/FilterPopup.tsx +41 -0
  132. package/src/Widgets/GridToolBar/Components/QuickFilter/QuickFilterView.tsx +23 -0
  133. package/src/Widgets/GridToolBar/Components/QuickFilter/index.tsx +199 -0
  134. package/src/Widgets/GridToolBar/Components/Reset/ResetView.tsx +22 -0
  135. package/src/Widgets/GridToolBar/Components/Reset/index.tsx +41 -0
  136. package/src/Widgets/GridToolBar/Components/ScreenView/CreateScreenPopup.tsx +88 -0
  137. package/src/Widgets/GridToolBar/Components/ScreenView/UserView.tsx +266 -0
  138. package/src/Widgets/GridToolBar/Components/ScreenView/UserViewView.tsx +67 -0
  139. package/src/Widgets/GridToolBar/Components/ScreenView/ViewItem.tsx +94 -0
  140. package/src/Widgets/GridToolBar/Components/ScreenView/actions/index.ts +20 -0
  141. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/deserializedScreenView.ts +19 -0
  142. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/getSavedSystemDefault.ts +18 -0
  143. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/saveSystemDefaultInSession.ts +12 -0
  144. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/advancedSearchHandler.ts +32 -0
  145. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/globalSearchHandler.ts +13 -0
  146. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/groupByHandler.ts +8 -0
  147. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/localSearchHandler.ts +6 -0
  148. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/paginationHandler.ts +6 -0
  149. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/quickFilterHandler.ts +13 -0
  150. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/settingHandler.ts +19 -0
  151. package/src/Widgets/GridToolBar/Components/ScreenView/helpers/uiElementHandler/sortHandler.ts +6 -0
  152. package/src/Widgets/GridToolBar/Components/ScreenView/services/index.ts +63 -0
  153. package/src/Widgets/GridToolBar/Components/Setting/ColumnChooser/ColumnChooser.tsx +274 -0
  154. package/src/Widgets/GridToolBar/Components/Setting/ColumnChooser/ColumnChooserView.tsx +154 -0
  155. package/src/Widgets/GridToolBar/Components/Setting/ColumnChooser/DragDropContext.tsx +76 -0
  156. package/src/Widgets/GridToolBar/Components/Setting/Setting.tsx +116 -0
  157. package/src/Widgets/GridToolBar/Components/Setting/SettingPopup.tsx +23 -0
  158. package/src/Widgets/GridToolBar/Components/Setting/SettingView.tsx +23 -0
  159. package/src/Widgets/GridToolBar/GridToolBar.tsx +111 -0
  160. package/src/Widgets/GridToolBar/GridToolBarView.tsx +138 -0
  161. package/src/Widgets/GridToolBar/data/advancedSearch/index.ts +45 -0
  162. package/src/Widgets/GridToolBar/data/globalSearch/index.ts +4 -0
  163. package/src/Widgets/GridToolBar/data/groupBy/index.ts +3 -0
  164. package/src/Widgets/GridToolBar/data/index.ts +74 -0
  165. package/src/Widgets/GridToolBar/data/quickFilter/index.ts +37 -0
  166. package/src/Widgets/GridToolBar/data/setting/index.ts +23 -0
  167. package/src/Widgets/GridToolBar/data/userView/index.ts +11 -0
  168. package/src/Widgets/GridToolBar/enum/index.ts +29 -0
  169. package/src/Widgets/GridToolBar/helper/getUniqueId.ts +2 -0
  170. package/src/Widgets/GridToolBar/scss/index.scss +834 -0
  171. package/src/Widgets/GridToolBar/type.ts +63 -0
  172. package/src/Widgets/InformationAlert/InformationAlert.tsx +12 -0
  173. package/src/Widgets/InformationAlert/InformationAlertView.tsx +46 -0
  174. package/src/Widgets/InformationAlert/scss/index.scss +73 -0
  175. package/src/Widgets/Menu/MenuMainHeader.tsx +28 -0
  176. package/src/Widgets/Menu/MenuSubHeader.tsx +20 -0
  177. package/src/Widgets/Menu/MenuSubItem.tsx +10 -0
  178. package/src/Widgets/Menu/MenuView.tsx +19 -0
  179. package/src/Widgets/Menu/index.json +245 -0
  180. package/src/Widgets/Menu/index.tsx +32 -0
  181. package/src/Widgets/Menu/scss/index.scss +93 -0
  182. package/src/actions.ts +5 -0
  183. package/src/assets/delete.png +0 -0
  184. package/src/assets/info.svg +5 -0
  185. package/src/assets/react.svg +1 -0
  186. package/src/assets/styles/_tempalte-base.scss +5 -0
  187. package/src/constant.ts +8 -0
  188. package/src/factories.ts +5 -0
  189. package/src/index.ts +12 -0
  190. package/src/utils/getValueFromNestedObject.ts +14 -0
  191. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1,41 @@
1
+
2
+ $header-border-color: #bfbfbf;
3
+ $header-color: gray;
4
+ $value-color: #464646;
5
+ $font-family: "IBM Plex Sans";
6
+ $header-font-size: 11px;
7
+ $value-font-size: 14px;
8
+ $header-line-height: 14px;
9
+ $value-line-height: 18px;
10
+
11
+ .tmpl-block-container {
12
+ padding: 10px;
13
+ background-color: $background-light;
14
+
15
+ .tmpl-block__item {
16
+ &.tmpl-border {
17
+ border-right: $border-width-sm solid $border-light;
18
+ }
19
+ .tmpl-block__header {
20
+ color: $header-color;
21
+ font-family: $font-family;
22
+ font-size: $header-font-size;
23
+ font-weight: 400;
24
+ line-height: $header-line-height;
25
+ &.tmpl-border-header {
26
+ border-bottom: $border-width-sm solid $border-light;
27
+ padding-bottom: 10px;
28
+ margin-bottom: 10px;
29
+ }
30
+ }
31
+
32
+ .tmpl-block__value {
33
+ color: $value-color;
34
+ font-family: $font-family;
35
+ font-size: $value-font-size;
36
+ font-weight: 500;
37
+ line-height: $value-line-height;
38
+ opacity: 0.8;
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,8 @@
1
+ import BlockView from "./BlockView";
2
+ import { BlockProps } from "./types";
3
+
4
+ const Block = (props: BlockProps) => {
5
+ return <BlockView {...props} />;
6
+ };
7
+
8
+ export default Block;
@@ -0,0 +1,11 @@
1
+ export interface BlockProps {
2
+ title?: string;
3
+ value?: string;
4
+ enableBorder?: boolean;
5
+ enableHeaderBorder?: boolean;
6
+ widgetStyle?: {
7
+ id?: string;
8
+ className?: string;
9
+ inline?: React.CSSProperties;
10
+ };
11
+ }
@@ -0,0 +1,90 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { BaseProps } from "../../Factory/BaseType";
3
+ import { Dialog } from "@progress/kendo-react-dialogs";
4
+ //import DeleteLogo from "../assets/delete.png";
5
+ //import DeleteLogo from "qorder-tvtemplate/dist/assets/delete.png";
6
+ import FactoryRenderer from "../../Renderer";
7
+ type ConfirmationAlertViewProps = BaseProps & {
8
+ value: any;
9
+ title: string;
10
+ messageHeader?: string;
11
+ messageBody?: string;
12
+ handleHeader?: (header: string, viewModel?: Record<string, any>) => string;
13
+ handleBody?: (body: string, value?: any) => string;
14
+ onConfirm?: () => void;
15
+ onCancel?: () => void;
16
+ onModelUpdate?: (
17
+ callBack: ((args: any) => void) | null,
18
+ fieldName: string,
19
+ value: any
20
+ ) => void;
21
+ };
22
+ const ConfirmationAlertView = (props: ConfirmationAlertViewProps) => {
23
+ const onCancel = () => {
24
+ try {
25
+ if (props.onCancel) {
26
+ props.onCancel();
27
+ } else if (props?.value?.onCancel) {
28
+ props.value.onCancel();
29
+ }
30
+ } finally {
31
+ props.onModelUpdate?.(null, props.screenDataField ?? "", null);
32
+ }
33
+ };
34
+ const onConfirm = async () => {
35
+ try {
36
+ if (props.onConfirm) {
37
+ await props.onConfirm();
38
+ } else if (props?.value?.onConfirm) {
39
+ await props.value.onConfirm();
40
+ }
41
+ } finally {
42
+ props.onModelUpdate?.(null, props.screenDataField ?? "", null);
43
+ }
44
+ };
45
+ return (
46
+ <Dialog
47
+ id={props.widgetStyle?.id || ""}
48
+ className={props.widgetStyle?.className || ""}
49
+ style={props.widgetStyle?.inline || {}}
50
+ onClose={onCancel}
51
+ >
52
+ <div className="tmpl-dialog-box-container">
53
+ <div className="tmpl-dialog-box__header">{props.title}</div>
54
+ <div className="tmpl-dialog-box__logo">
55
+ {/* <img src={DeleteLogo} alt="delete icon" height="112" width="150" /> */}
56
+ </div>
57
+ <div className="tmpl-dialog-box__body">
58
+ <h4>
59
+ {props?.handleHeader
60
+ ? props?.handleHeader(props.messageHeader ?? "", props.viewModel)
61
+ : props.messageHeader}
62
+ </h4>
63
+
64
+ <p>
65
+ {props?.handleBody
66
+ ? props?.handleBody(props.messageBody ?? "", props.value)
67
+ : props.messageBody}
68
+ </p>
69
+ </div>
70
+ <div className="tmpl-dialog-box__footer">
71
+ <FactoryRenderer
72
+ themeColor="primary"
73
+ onClick={onConfirm}
74
+ title="Yes"
75
+ uiElementType="WIDGET"
76
+ widgetType="BUTTON"
77
+ />
78
+ <FactoryRenderer
79
+ themeColor="primary"
80
+ onClick={onCancel}
81
+ title="No"
82
+ uiElementType="WIDGET"
83
+ widgetType="BUTTON"
84
+ />
85
+ </div>
86
+ </div>
87
+ </Dialog>
88
+ );
89
+ };
90
+ export default ConfirmationAlertView;
@@ -0,0 +1,16 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { BaseProps } from "../../Factory/BaseType";
3
+ import ConfirmationAlertView from "./ConfirmationAlertView";
4
+
5
+ export type ConfirmationAlertProps = BaseProps & {
6
+ value: any;
7
+ title: string;
8
+ messageHeader?: string;
9
+ messageBody?: string;
10
+ handleHeader?: (header: string) => string;
11
+ handleBody?: (body: string) => string;
12
+ };
13
+ const ConfirmationAlert = (props: ConfirmationAlertProps) => {
14
+ return <ConfirmationAlertView {...props} />;
15
+ };
16
+ export default ConfirmationAlert;
@@ -0,0 +1,66 @@
1
+ .tmpl-dialog-box-container {
2
+ max-width: 500px;
3
+
4
+ .tmpl-dialog-box__logo {
5
+ img {
6
+ margin-left: auto;
7
+ margin-right: auto;
8
+ }
9
+ }
10
+
11
+ .tmpl-dialog-box__body {
12
+ h4 {
13
+ color: #464646;
14
+ font-size: 18px;
15
+ font-weight: 400;
16
+ line-height: 26px;
17
+ padding: 20px 0 10px 0;
18
+ text-align: center;
19
+ }
20
+
21
+ p {
22
+ color: #464646;
23
+ font-size: 14px;
24
+ font-weight: 400;
25
+ line-height: 16px;
26
+ text-align: center;
27
+ padding: 0 0 20px 0;
28
+ }
29
+ }
30
+
31
+ .tmpl-dialog-box__footer {
32
+ display: flex;
33
+ justify-content: center;
34
+ align-items: center;
35
+ gap: 10px;
36
+
37
+ .k-button-solid-primary {
38
+ color: #fff;
39
+ font-family: IBM Plex Sans;
40
+ font-size: 11px;
41
+ font-weight: 500;
42
+ line-height: 14px;
43
+ padding: 5px 30px;
44
+ }
45
+
46
+ .k-button-solid-base {
47
+ color: #333;
48
+ font-family: IBM Plex Sans;
49
+ font-size: 11px;
50
+ font-weight: 500;
51
+ line-height: 14px;
52
+ padding: 5px 30px;
53
+ }
54
+ }
55
+
56
+ .tmpl-dialog-box__header {
57
+ text-align: center;
58
+ padding: 10px 0;
59
+ font-size: 20px;
60
+ font-weight: 600;
61
+ }
62
+ }
63
+
64
+ .k-dialog {
65
+ border-radius: 20px !important;
66
+ }
@@ -0,0 +1,83 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { useState, useEffect, useRef } from "react";
3
+ import AdvancedSearchView from "./AdvancedSearchView";
4
+ import FilterPopup from "./FilterPopup";
5
+ import { FilterTarget } from "../../data/advancedSearch";
6
+
7
+ type AdvancedSearchProps = {
8
+ visible: boolean;
9
+ disabled: boolean;
10
+ filterableFields: FilterTarget[];
11
+ uiElementGroupData: Record<string, any>;
12
+ config: { uiElementGroupId: string };
13
+ onModelUpdate: (
14
+ callBack: ((args: any) => void) | null,
15
+ fieldName: string,
16
+ value: any
17
+ ) => void;
18
+ loadTemplateSupportiveData?: (
19
+ callBack: (args: any) => void,
20
+ supportiveKeys: any
21
+ ) => Promise<any>;
22
+ };
23
+
24
+ const AdvancedSearch: React.FC<AdvancedSearchProps> = (props) => {
25
+ const [togglePopup, setTogglePopup] = useState(false);
26
+ const popupRef = useRef<HTMLDivElement>(null);
27
+
28
+ const handlePopupShow = () => {
29
+ setTogglePopup(!togglePopup);
30
+ };
31
+
32
+ const handleClickOutside = (event: MouseEvent) => {
33
+ const target = event.target as HTMLElement;
34
+ const isInsideMyPopup = target.closest(`.tmpl-prvent-outside-click-close`);
35
+
36
+ if (
37
+ popupRef.current &&
38
+ !popupRef.current.contains(event.target as Node) &&
39
+ !isInsideMyPopup
40
+ ) {
41
+ setTogglePopup(false);
42
+ }
43
+ };
44
+
45
+ useEffect(() => {
46
+ if (togglePopup) {
47
+ document.addEventListener("mousedown", handleClickOutside);
48
+ } else {
49
+ document.removeEventListener("mousedown", handleClickOutside);
50
+ }
51
+ return () => {
52
+ document.removeEventListener("mousedown", handleClickOutside);
53
+ };
54
+ }, [togglePopup]);
55
+
56
+ return props.visible ? (
57
+ <div className="tmpl-advanced-search-container" ref={popupRef}>
58
+ <AdvancedSearchView
59
+ handlePopupShow={handlePopupShow}
60
+ disabled={props.disabled}
61
+ />
62
+ {togglePopup && !props.disabled && (
63
+ <div
64
+ className="tmpl-advanced-popup"
65
+ onClick={(e) => e.stopPropagation()}
66
+ >
67
+ <FilterPopup
68
+ uiElementGroupData={props.uiElementGroupData}
69
+ filterableFields={props.filterableFields}
70
+ config={props.config}
71
+ onModelUpdate={props.onModelUpdate}
72
+ loadTemplateSupportiveData={props.loadTemplateSupportiveData}
73
+ handlePopupShow={handlePopupShow}
74
+ />
75
+ </div>
76
+ )}
77
+ </div>
78
+ ) : (
79
+ <></>
80
+ );
81
+ };
82
+
83
+ export default AdvancedSearch;
@@ -0,0 +1,25 @@
1
+ import FactoryRenderer from "../../../../Renderer";
2
+
3
+ type AdvancedSearchViewProps = {
4
+ handlePopupShow: () => void;
5
+ disabled: boolean;
6
+ };
7
+
8
+ const AdvancedSearchView = ({
9
+ handlePopupShow,
10
+ disabled,
11
+ }: AdvancedSearchViewProps) => {
12
+ return (
13
+ <FactoryRenderer
14
+ onClick={handlePopupShow}
15
+ title="Advanced Search"
16
+ rootStyle={{ className: "tmpl-advanced-search" }}
17
+ widgetStyle={{ className: "tmpl-button" }}
18
+ uiElementType="WIDGET"
19
+ widgetType="BUTTON"
20
+ disabled={disabled}
21
+ />
22
+ );
23
+ };
24
+
25
+ export default AdvancedSearchView;
@@ -0,0 +1,162 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import TypeBasedWidgetFactory from "./TypeBasedWidgetFactory";
3
+ import FactoryRenderer from "../../../../Renderer";
4
+ import { FilterTargetType, Operator } from "../../enum";
5
+ import { useEffect, useMemo } from "react";
6
+ import { getTypeBasedOperators } from "./helper/AdvancedSearchFunctions";
7
+ import { ValueLoadType } from "../../type";
8
+ import {
9
+ FilterExpressionViewModel,
10
+ FilterTarget,
11
+ FilterValue,
12
+ } from "../../data/advancedSearch";
13
+
14
+ interface FilterProps {
15
+ uiElementGroupId: string;
16
+ filterRow: FilterExpressionViewModel;
17
+ appliedfilterCount: number;
18
+ loadTemplateSupportiveData?: (
19
+ callBack: (args: any) => void,
20
+ supportiveKeys: string[]
21
+ ) => Promise<any>;
22
+
23
+ onFilterTargetChange: (value: FilterTarget, id: string) => void;
24
+ onOperatorChange: (
25
+ value: { label: string; value: Operator | null },
26
+ id: string
27
+ ) => void;
28
+ onFilterValueChange: (value: FilterValue[] | FilterValue, id: string) => void;
29
+ onCriteriaToggle: (id: string) => void;
30
+ onAddFilter: (id: string) => void;
31
+ onDeleteFilter: (id: string) => void;
32
+ handleFilterAllValues: (result: any, id: string) => void;
33
+ }
34
+
35
+ const Filter = (props: FilterProps) => {
36
+ const callBack = (result: Record<string, any[]>) => {
37
+ props.handleFilterAllValues(
38
+ result[
39
+ props.filterRow.selectedFilter.propertyToFilter.dataProvider?.key ?? ""
40
+ ],
41
+ props.filterRow.id
42
+ );
43
+ };
44
+
45
+ useEffect(() => {
46
+ if (
47
+ props.filterRow?.selectedFilter?.propertyToFilter?.type ===
48
+ FilterTargetType.LIST
49
+ ) {
50
+ if (
51
+ props.filterRow.selectedFilter.propertyToFilter.dataProvider
52
+ ?.valueLoadType === ValueLoadType.API
53
+ ) {
54
+ props.loadTemplateSupportiveData?.(callBack, [
55
+ props.filterRow.selectedFilter.propertyToFilter.dataProvider?.key ??
56
+ "",
57
+ ]);
58
+ } else if (
59
+ props.filterRow.selectedFilter.propertyToFilter.dataProvider
60
+ ?.valueLoadType === ValueLoadType.SELF
61
+ ) {
62
+ props.handleFilterAllValues(
63
+ props.filterRow.selectedFilter.propertyToFilter.dataProvider
64
+ ?.value as FilterValue[],
65
+ props.filterRow.id
66
+ );
67
+ }
68
+ }
69
+ }, [props.filterRow?.selectedFilter?.propertyToFilter?.value]);
70
+
71
+ const operators = useMemo(
72
+ () =>
73
+ getTypeBasedOperators(
74
+ props.filterRow?.selectedFilter?.propertyToFilter?.type
75
+ ),
76
+ [props.filterRow?.selectedFilter?.propertyToFilter?.type]
77
+ );
78
+
79
+ return (
80
+ <>
81
+ <div className="tmpl-filter tmpl-filter-border">
82
+ <span className="tmpl-filter-id">{props.filterRow.idLabel}</span>
83
+ <FactoryRenderer
84
+ value={props.filterRow.selectedFilter.propertyToFilter}
85
+ textField="label"
86
+ listData={props.filterRow.allPropertieseToFilter}
87
+ title="Filter"
88
+ defaultItem={{
89
+ label: "Select Filter...",
90
+ apiPropertyName: "",
91
+ type: FilterTargetType.TEXT,
92
+ value: null,
93
+ }}
94
+ widgetStyle={{ className: "tmpl-dropdown" }}
95
+ rootStyle={{ className: "tmpl-dropdown-container" }}
96
+ popupSettings={{ className: `tmpl-prvent-outside-click-close` }}
97
+ onChange={(callBack: any, fieldName: string, e: any) => {
98
+ props.onFilterTargetChange(e, props.filterRow.id);
99
+ }}
100
+ uiElementType="WIDGET"
101
+ widgetType="DROPDOWN"
102
+ />
103
+
104
+ <FactoryRenderer
105
+ value={props.filterRow.selectedFilter.operator}
106
+ textField="label"
107
+ listData={operators}
108
+ title="Operator"
109
+ defaultItem={{ label: "Select Operator...", value: null }}
110
+ widgetStyle={{ className: "tmpl-dropdown" }}
111
+ rootStyle={{ className: "tmpl-dropdown-container" }}
112
+ popupSettings={{ className: `tmpl-prvent-outside-click-close` }}
113
+ disabled={!props.filterRow?.selectedFilter?.propertyToFilter?.value}
114
+ onChange={(callBack: any, fieldName: string, e: any) =>
115
+ props.onOperatorChange(e, props.filterRow.id)
116
+ }
117
+ uiElementType="WIDGET"
118
+ widgetType="DROPDOWN"
119
+ />
120
+
121
+ <TypeBasedWidgetFactory
122
+ filterRow={props.filterRow}
123
+ onFilterValueChange={props.onFilterValueChange}
124
+ />
125
+
126
+ <FactoryRenderer
127
+ widgetStyle={{
128
+ className: "tmpl-button-sm",
129
+ }}
130
+ name="plus"
131
+ fillMode="clear"
132
+ onClick={() => props.onAddFilter(props.filterRow.id)}
133
+ uiElementType="WIDGET"
134
+ widgetType="ICON"
135
+ title="Add"
136
+ />
137
+
138
+ <FactoryRenderer
139
+ name="delete"
140
+ onClick={() => props.onDeleteFilter(props.filterRow.id)}
141
+ uiElementType="WIDGET"
142
+ widgetType="ICON"
143
+ fillMode="clear"
144
+ title="Remove"
145
+ widgetStyle={{
146
+ className: "tmpl-button-sm",
147
+ inline: {
148
+ visibility: props.appliedfilterCount === 1 ? "hidden" : "visible",
149
+ },
150
+ }}
151
+ />
152
+ </div>
153
+ <span
154
+ onClick={() => props.onCriteriaToggle(props.filterRow.id)}
155
+ className="tmpl-criteria"
156
+ >
157
+ {props.filterRow.selectedFilter.selectedCriteria?.toString()}
158
+ </span>
159
+ </>
160
+ );
161
+ };
162
+ export default Filter;