@solidstarters/solid-core-ui 1.1.10 → 1.1.12

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 (188) hide show
  1. package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
  2. package/dist/components/auth/SolidForgotPassword.js +2 -1
  3. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  4. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  5. package/dist/components/auth/SolidInitialLoginOtp.js +2 -1
  6. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  7. package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
  8. package/dist/components/auth/SolidInitiateRegisterOtp.js +2 -1
  9. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  10. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  11. package/dist/components/auth/SolidLogin.js +2 -1
  12. package/dist/components/auth/SolidLogin.js.map +1 -1
  13. package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -1
  14. package/dist/components/auth/SolidOTPVerify.js +2 -1
  15. package/dist/components/auth/SolidOTPVerify.js.map +1 -1
  16. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  17. package/dist/components/auth/SolidRegister.js +125 -103
  18. package/dist/components/auth/SolidRegister.js.map +1 -1
  19. package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
  20. package/dist/components/auth/SolidResetPassword.js +2 -1
  21. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  22. package/dist/components/common/DropzonePlaceholder.js +1 -1
  23. package/dist/components/common/DropzonePlaceholder.js.map +1 -1
  24. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  25. package/dist/components/common/GeneralSettings.js +43 -31
  26. package/dist/components/common/GeneralSettings.js.map +1 -1
  27. package/dist/components/core/common/FilterComponent.d.ts +2 -1
  28. package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
  29. package/dist/components/core/common/FilterComponent.js +52 -16
  30. package/dist/components/core/common/FilterComponent.js.map +1 -1
  31. package/dist/components/core/common/SolidConfigureLayoutElement.d.ts +1 -1
  32. package/dist/components/core/common/SolidConfigureLayoutElement.d.ts.map +1 -1
  33. package/dist/components/core/common/SolidConfigureLayoutElement.js +5 -2
  34. package/dist/components/core/common/SolidConfigureLayoutElement.js.map +1 -1
  35. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  36. package/dist/components/core/common/SolidGlobalSearchElement.js +131 -23
  37. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  38. package/dist/components/core/filter/SolidManyToOneFilterElement.d.ts.map +1 -1
  39. package/dist/components/core/filter/SolidManyToOneFilterElement.js +8 -6
  40. package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
  41. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js +1 -1
  42. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
  43. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js +1 -1
  44. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
  45. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
  46. package/dist/components/core/filter/SolidVarInputsFilterElement.js +11 -10
  47. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  48. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  49. package/dist/components/core/form/SolidFormView.js +49 -14
  50. package/dist/components/core/form/SolidFormView.js.map +1 -1
  51. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  52. package/dist/components/core/form/fields/SolidBooleanField.js +9 -5
  53. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  54. package/dist/components/core/form/fields/SolidDateField.d.ts.map +1 -1
  55. package/dist/components/core/form/fields/SolidDateField.js +12 -8
  56. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  57. package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
  58. package/dist/components/core/form/fields/SolidDateTimeField.js +12 -8
  59. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  60. package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
  61. package/dist/components/core/form/fields/SolidDecimalField.js +9 -5
  62. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  63. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
  64. package/dist/components/core/form/fields/SolidIntegerField.js +9 -5
  65. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  66. package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
  67. package/dist/components/core/form/fields/SolidJsonField.js +2 -2
  68. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  69. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
  70. package/dist/components/core/form/fields/SolidLongTextField.js +7 -3
  71. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  72. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  73. package/dist/components/core/form/fields/SolidMediaMultipleField.js +155 -46
  74. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  75. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  76. package/dist/components/core/form/fields/SolidMediaSingleField.js +87 -31
  77. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  78. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  79. package/dist/components/core/form/fields/SolidRichTextField.js +2 -2
  80. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  81. package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
  82. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +4 -4
  83. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  84. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
  85. package/dist/components/core/form/fields/SolidSelectionStaticField.js +18 -9
  86. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  87. package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
  88. package/dist/components/core/form/fields/SolidShortTextField.js +7 -3
  89. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  90. package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -1
  91. package/dist/components/core/form/fields/SolidTimeField.js +12 -8
  92. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  93. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +22 -15
  94. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  95. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  96. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +11 -8
  97. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  98. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +2 -2
  99. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  100. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  101. package/dist/components/core/list/SolidListView.js +88 -63
  102. package/dist/components/core/list/SolidListView.js.map +1 -1
  103. package/dist/components/core/list/SolidManyToOneFilterElement.js +7 -5
  104. package/dist/components/core/list/SolidManyToOneFilterElement.js.map +1 -1
  105. package/dist/components/core/list/columns/SolidBooleanColumn.js +3 -1
  106. package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
  107. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
  108. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  109. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  110. package/dist/components/core/model/CreateModel.js +20 -16
  111. package/dist/components/core/model/CreateModel.js.map +1 -1
  112. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  113. package/dist/components/core/model/FieldMetaDataForm.js +67 -54
  114. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  115. package/dist/components/core/model/FieldSelector.js +1 -1
  116. package/dist/components/core/model/FieldSelector.js.map +1 -1
  117. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  118. package/dist/components/core/model/ModelMetaData.js +12 -17
  119. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  120. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  121. package/dist/components/core/module/CreateModule.js +23 -23
  122. package/dist/components/core/module/CreateModule.js.map +1 -1
  123. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  124. package/dist/components/layout/AppSidebar.js +42 -11
  125. package/dist/components/layout/AppSidebar.js.map +1 -1
  126. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  127. package/dist/components/layout/navbar-two-menu.js +6 -2
  128. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  129. package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
  130. package/dist/components/layout/user-profile-menu.js +7 -3
  131. package/dist/components/layout/user-profile-menu.js.map +1 -1
  132. package/dist/helpers/AppTitle.d.ts +4 -0
  133. package/dist/helpers/AppTitle.d.ts.map +1 -0
  134. package/dist/helpers/AppTitle.js +8 -0
  135. package/dist/helpers/AppTitle.js.map +1 -0
  136. package/dist/index.d.ts +1 -0
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +1 -0
  139. package/dist/index.js.map +1 -1
  140. package/package.json +1 -1
  141. package/src/components/auth/SolidForgotPassword.tsx +2 -6
  142. package/src/components/auth/SolidInitialLoginOtp.tsx +2 -6
  143. package/src/components/auth/SolidInitiateRegisterOtp.tsx +2 -6
  144. package/src/components/auth/SolidLogin.tsx +2 -5
  145. package/src/components/auth/SolidOTPVerify.tsx +4 -7
  146. package/src/components/auth/SolidRegister.tsx +207 -178
  147. package/src/components/auth/SolidResetPassword.tsx +2 -6
  148. package/src/components/common/DropzonePlaceholder.tsx +1 -1
  149. package/src/components/common/GeneralSettings.tsx +310 -193
  150. package/src/components/core/common/FilterComponent.tsx +148 -202
  151. package/src/components/core/common/SolidConfigureLayoutElement.tsx +6 -4
  152. package/src/components/core/common/SolidGlobalSearchElement.tsx +193 -50
  153. package/src/components/core/filter/SolidManyToOneFilterElement.tsx +5 -3
  154. package/src/components/core/filter/SolidSelectionDynamicFilterElement.tsx +1 -1
  155. package/src/components/core/filter/SolidSelectionStaticFilterElement.tsx +1 -1
  156. package/src/components/core/filter/SolidVarInputsFilterElement.tsx +103 -135
  157. package/src/components/core/form/SolidFormView.tsx +64 -25
  158. package/src/components/core/form/fields/SolidBooleanField.tsx +12 -5
  159. package/src/components/core/form/fields/SolidDateField.tsx +9 -4
  160. package/src/components/core/form/fields/SolidDateTimeField.tsx +27 -21
  161. package/src/components/core/form/fields/SolidDecimalField.tsx +9 -2
  162. package/src/components/core/form/fields/SolidIntegerField.tsx +22 -15
  163. package/src/components/core/form/fields/SolidJsonField.tsx +14 -12
  164. package/src/components/core/form/fields/SolidLongTextField.tsx +22 -16
  165. package/src/components/core/form/fields/SolidMediaMultipleField.tsx +257 -79
  166. package/src/components/core/form/fields/SolidMediaSingleField.tsx +148 -61
  167. package/src/components/core/form/fields/SolidRichTextField.tsx +6 -4
  168. package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +6 -5
  169. package/src/components/core/form/fields/SolidSelectionStaticField.tsx +34 -23
  170. package/src/components/core/form/fields/SolidShortTextField.tsx +23 -16
  171. package/src/components/core/form/fields/SolidTimeField.tsx +27 -20
  172. package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +9 -9
  173. package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +20 -19
  174. package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +2 -2
  175. package/src/components/core/list/SolidListView.tsx +91 -49
  176. package/src/components/core/list/SolidManyToOneFilterElement.tsx +2 -2
  177. package/src/components/core/list/columns/SolidBooleanColumn.tsx +2 -2
  178. package/src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +1 -1
  179. package/src/components/core/model/CreateModel.tsx +92 -81
  180. package/src/components/core/model/FieldMetaDataForm.tsx +166 -87
  181. package/src/components/core/model/FieldSelector.tsx +1 -1
  182. package/src/components/core/model/ModelMetaData.tsx +8 -7
  183. package/src/components/core/module/CreateModule.tsx +181 -183
  184. package/src/components/layout/AppSidebar.tsx +35 -10
  185. package/src/components/layout/navbar-two-menu.tsx +6 -1
  186. package/src/components/layout/user-profile-menu.tsx +20 -8
  187. package/src/helpers/AppTitle.tsx +14 -0
  188. package/src/index.ts +2 -1
@@ -6,10 +6,11 @@ import { Dropdown } from 'primereact/dropdown';
6
6
  import { InputNumber } from 'primereact/inputnumber';
7
7
  import { InputText } from 'primereact/inputtext';
8
8
  import { Tooltip } from 'primereact/tooltip';
9
- import React, { useEffect, useState } from 'react';
9
+ import React, { useEffect, useRef, useState } from 'react';
10
10
  import { SolidFilterFields } from '../filter/SolidFilterFields';
11
11
  import { Button } from 'primereact/button';
12
-
12
+ import { Fieldset } from 'primereact/fieldset';
13
+ import { OverlayPanel } from 'primereact/overlaypanel';
13
14
  export enum FilterRuleType {
14
15
  RULE = 'rule',
15
16
  RULE_GROUP = 'rule_group'
@@ -91,218 +92,147 @@ const FilterRuleComponent = ({ viewData, fields, rule, onChange, onAddRule, onAd
91
92
 
92
93
  return (
93
94
  // <div style={{ marginLeft: (level - 1) * 10 + 'px' }} className="filter-rule">
94
- <div className="filter-rule">
95
- <div className="filter-individual-rule">
96
- <div className='filter-individual-rule-form'>
97
- <div className=" flex align-items-center">
98
- <div className=" p-0" style={{ flex: "10" }}>
99
- {/* <div className="filter-component-fields"> */}
100
- <div className='filter-component-fields'>
101
- <div className='filter-component-fields-section-one' >
102
- <Dropdown
103
- key={rule.id}
104
- value={fieldName.name}
105
- onChange={e => {
106
- setFieldName({ name: e.value, value: e.value })
107
- onChange(rule.id, 'fieldName', e.value)
108
- }}
109
- options={fields}
110
- optionLabel='name'
111
- optionValue='name'
112
- style={{ marginLeft: (level - 1) * 5 + 'px', width: "100%", maxWidth: "-webkit-fill-available" }}
113
- placeholder="Select Field" className="w-full md:w-14rem" />
114
- </div>
115
- {/* <Dropdown
116
- value={matchMode}
117
- onChange={e => {
118
- setMatchMode({ name: e.value.name })
119
- onChange(rule.id, 'matchMode', e.value.name)
120
- }}
121
- disabled={!rule.fieldName}
122
- options={applicableOperators}
123
- optionLabel='name'
124
- placeholder="Select Field" className="w-full filter-small-input md:w-14rem" /> */}
125
-
126
- <div className='filter-component-fields-section-two'>
127
- {!rule.fieldName &&
128
- <>
129
- <InputText
130
- disabled
131
- value={rule.value || ''}
132
- placeholder="operator"
133
- className='filter-small-input'
134
- />
135
- <InputText
136
- disabled
137
- value={rule.value || ''}
138
- placeholder="value"
139
- className='filter-small-input'
140
- />
141
- </>
142
- }
143
- {rule.fieldName &&
144
- <SolidFilterFields viewData={viewData} fieldMetadata={viewData.data.solidFieldsMetadata[rule.fieldName]} onChange={onChange} index={rule.id} rule={rule}></SolidFilterFields>
145
- }
146
- </div>
147
-
148
-
149
- {/* <div className="col-4">
150
- {applicableInputField === 'number' && (
151
- <InputNumber
152
- value={rule.value || ''}
153
- placeholder="Value"
154
- className='filter-small-input'
155
- onChange={(e) => onChange(rule.id, 'value', e.value)}
156
- />
157
- )
158
- }
159
- {applicableInputField === 'string' && (
160
- <InputText
161
- value={rule.value || ''}
162
- placeholder="Value"
163
- className='filter-small-input'
164
- onChange={(e) => onChange(rule.id, 'value', e.target.value)}
165
- />
166
- )
167
- }
168
- {applicableInputField === 'date' && (
169
- <Calendar value={rule.value || ''} onChange={(e) => onChange(rule.id, 'value', new Date(e.value))} dateFormat="dd/mm/yy" showIcon />
170
- )
171
- }
172
- </div> */}
173
-
174
-
175
- </div>
176
- </div>
177
- <div className="col-2 flex justify-content-end" style={{ flex: "2" }}>
178
- <button onClick={() => onAddRule(rule.parentRule)}>
179
- <div className="card flex justify-content-center">
180
- {/* <Tooltip target=".custom-target-icon" /> */}
181
-
182
- <i className="custom-target-icon pi pi-plus-circle p-text-secondary p-overlay-badge"
183
- data-pr-tooltip="Add Rule"
184
- data-pr-position="right"
185
- data-pr-at="right+5 top"
186
- data-pr-my="left center-2"
187
- style={{ fontSize: '1.2rem', cursor: 'pointer' }}>
188
- </i>
189
- </div>
190
-
191
95
 
192
- </button>
193
-
194
- {/* < Button
195
- icon="pi pi-plus"
196
- onClick={() => onAddGroup(rule.id)}
197
- size="small"
198
- className="small-button"
199
- type="button"
200
- />
201
- <Button
202
- icon="pi pi-trash"
203
- onClick={() => onDelete(rule.id)}
204
- size="small"
205
- className="small-button"
206
- severity="danger"
207
- type="button"
208
- /> */}
209
- <button onClick={() => onAddGroup(rule.id)}>
210
- <div className="card flex justify-content-center">
211
-
212
- <i className="custom-target-icon pi pi-sitemap p-text-secondary p-overlay-badge"
213
- data-pr-tooltip="Add Group"
214
- data-pr-position="right"
215
- data-pr-at="right+5 top"
216
- data-pr-my="left center-2"
217
- style={{ fontSize: '1.2rem', cursor: 'pointer' }}>
218
- </i>
96
+ <div className='mt-2'>
97
+ <div className='formgrid grid'>
98
+ <div className='col-3'>
99
+ <Dropdown
100
+ key={rule.id}
101
+ value={fieldName.name}
102
+ onChange={e => {
103
+ setFieldName({ name: e.value, value: e.value })
104
+ onChange(rule.id, 'fieldName', e.value)
105
+ }}
106
+ options={fields}
107
+ optionLabel='name'
108
+ optionValue='name'
109
+ placeholder="Select Field"
110
+ className='w-full'
111
+ />
112
+ </div>
113
+ <div className='col-7'>
114
+ <div className='formgrid grid'>
115
+ {rule.fieldName ?
116
+ <SolidFilterFields viewData={viewData} fieldMetadata={viewData.data.solidFieldsMetadata[rule.fieldName]} onChange={onChange} index={rule.id} rule={rule}></SolidFilterFields>
117
+ : <>
118
+ <div className='col-6'>
119
+ <InputText
120
+ disabled
121
+ value={rule.value || ''}
122
+ placeholder="operator"
123
+ className='w-full'
124
+ />
219
125
  </div>
220
-
221
- </button>
222
-
223
- <button onClick={() => onDelete(rule.id)}>
224
- <div className="card flex justify-content-center">
225
-
226
- <i className="custom-target-icon pi pi-trash p-text-secondary p-overlay-badge"
227
- data-pr-tooltip="Delete Rule"
228
- data-pr-position="right"
229
- data-pr-at="right+5 top"
230
- data-pr-my="left center-2"
231
- style={{ fontSize: '1.2rem', cursor: 'pointer' }}>
232
- </i>
126
+ <div className='col-6'>
127
+ <InputText
128
+ disabled
129
+ value={rule.value || ''}
130
+ placeholder="value"
131
+ className='w-full'
132
+ />
233
133
  </div>
234
- </button>
235
-
134
+ </>
135
+ }
136
+ </div>
137
+ </div>
138
+ <div className='col-2'>
139
+ <div className='formgrid grid'>
140
+ <div className='col-4 flex align-items-center'>
141
+ <Button text severity='secondary' icon="pi pi-plus" size='small' onClick={() => onAddRule(rule.parentRule)} className='solid-filter-action-btn' />
142
+ </div>
143
+ <div className='col-4 flex align-items-center'>
144
+ <Button text severity='secondary' icon={
145
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
146
+ <path d="M11.6665 13.334H13.3332V11.6673H14.9998V10.0007H13.3332V8.33398H11.6665V10.0007H9.99984V11.6673H11.6665V13.334ZM3.33317 16.6673C2.87484 16.6673 2.48248 16.5041 2.15609 16.1777C1.8297 15.8513 1.6665 15.459 1.6665 15.0007V5.00065C1.6665 4.54232 1.8297 4.14996 2.15609 3.82357C2.48248 3.49718 2.87484 3.33398 3.33317 3.33398H8.33317L9.99984 5.00065H16.6665C17.1248 5.00065 17.5172 5.16385 17.8436 5.49023C18.17 5.81662 18.3332 6.20898 18.3332 6.66732V15.0007C18.3332 15.459 18.17 15.8513 17.8436 16.1777C17.5172 16.5041 17.1248 16.6673 16.6665 16.6673H3.33317ZM3.33317 15.0007H16.6665V6.66732H9.31234L7.64567 5.00065H3.33317V15.0007Z" fill="#4B4D52" />
147
+ </svg>
148
+ } size='small' onClick={() => onAddGroup(rule.id)} className='solid-filter-action-btn p-0' />
149
+ </div>
150
+ <div className='col-4 flex align-items-center'>
151
+ <Button text severity='secondary' icon="pi pi-trash" size='small' onClick={() => onDelete(rule.id)} className='solid-filter-action-btn' />
236
152
  </div>
237
-
238
153
  </div>
239
-
240
-
241
-
242
-
243
-
244
154
  </div>
245
-
246
155
  </div>
247
156
 
248
- <div className="nested-rules">
249
- {rule.children && rule.children.map(nestedRule => (
250
- nestedRule.type === FilterRuleType.RULE
157
+ {rule.children && rule.children.map(nestedRule => (
158
+ <div className='p-3 nested-custom-filter' key={nestedRule.id}>
159
+ {nestedRule.type === FilterRuleType.RULE
251
160
  ? <FilterRuleComponent key={nestedRule.id} viewData={viewData} fields={fields} rule={nestedRule} onChange={onChange} onAddRule={onAddRule} onAddGroup={onAddGroup} onDelete={onDelete} level={level + 1} />
252
161
  : <FilterGroupComponent key={nestedRule.id} viewData={viewData} fields={fields} group={nestedRule} onChange={onChange} onAddRule={onAddRule} onAddGroup={onAddGroup} onDelete={onDelete} level={level + 1} />
253
- ))}
254
- </div>
162
+ }
163
+ </div>
164
+ ))}
165
+ {/* <Button text label='Add Condition' icon="pi pi-plus" size='small' onClick={() => onAddRule(rule.parentRule)} /> */}
255
166
  </div>
256
167
  );
257
168
  };
258
169
 
259
170
  // Component to render a group of filter rules
260
171
  const FilterGroupComponent = ({ viewData, fields, group, onChange, onAddRule, onAddGroup, onDelete, level }) => {
172
+ const op = useRef(null);
173
+ const legendTemplate = (
174
+ <>
175
+ <Button
176
+ size='small'
177
+ label={group.matchOperator}
178
+ className='small-button'
179
+ icon="pi pi-angle-down"
180
+ iconPos='right'
181
+ onClick={(e) => op.current.toggle(e)}
182
+ style={{
183
+ textTransform: "uppercase"
184
+ }}
185
+ />
186
+ <OverlayPanel ref={op} className='m-0'>
187
+ <div className='flex flex-column'>
188
+ <Button
189
+ size="small"
190
+ label="AND"
191
+ text
192
+ className='small-button'
193
+ onClick={(e) => { onChange(group.id, 'matchOperator', FilterOperator.AND); op.current.hide(e) }}
194
+ />
195
+ <Button
196
+ size="small"
197
+ label="OR"
198
+ text
199
+ className='small-button'
200
+ onClick={(e) => { onChange(group.id, 'matchOperator', FilterOperator.OR); op.current.hide(e) }}
201
+ />
202
+ </div>
203
+ </OverlayPanel>
204
+ </>
205
+ // <select className='filter-select'
206
+ // value={group.matchOperator}
207
+ // onChange={e => onChange(group.id, 'matchOperator', e.target.value)}
208
+ // >
209
+ // <option value={FilterOperator.AND}>AND</option>
210
+ // <option value={FilterOperator.OR}>OR</option>
211
+ // </select>
212
+ )
261
213
  return (
262
- <div className="filter-group">
263
- {/* <div style={{ marginLeft: (level - 1) * 10 + 'px' }} className="filter-group"> */}
264
-
265
- <div className='flex justify-content-between align-items-center'>
266
- <p className='mb-1 mt-1 filter-text'
267
- style={{ marginLeft: (level - 1) * 5 + 'px' }}
268
- > Match
269
- <select className='filter-select'
270
- value={group.matchOperator}
271
- onChange={e => onChange(group.id, 'matchOperator', e.target.value)}
272
- >
273
- <option value={FilterOperator.AND}>AND</option>
274
- <option value={FilterOperator.OR}>OR</option>
275
- </select>
276
- of the following rules:</p>
277
-
278
- {/* <button onClick={() => onAddRule(group.id)}>Add Rule to Group</button> */}
279
- {/* <button onClick={() => onAddGroup(group.id)}>Add Group to Group</button> */}
280
-
281
- {/* Add Delete Button for non-root groups */}
282
- {level > 0 && <button style={{ marginRight: "8px" }} onClick={() => onDelete(group.id)}>
283
- <div className="card flex justify-content-center">
284
- <Tooltip target=".custom-target-icon" />
285
-
286
- <i className="custom-target-icon pi pi-trash p-text-secondary p-overlay-badge"
287
- data-pr-tooltip="Delete Group"
288
- data-pr-position="right"
289
- data-pr-at="right+5 top"
290
- data-pr-my="left center-2"
291
- style={{ fontSize: '1.2rem', cursor: 'pointer' }}>
292
- </i>
293
- </div></button>}
294
- </div>
214
+ <Fieldset legend={legendTemplate} className='primary-filter-fieldset'>
295
215
  {group.children && group.children.map(rule => (
296
216
  rule.type === FilterRuleType.RULE
297
217
  ? <FilterRuleComponent key={rule.id} viewData={viewData} fields={fields} rule={rule} onChange={onChange} onAddRule={onAddRule} onAddGroup={onAddGroup} onDelete={onDelete} level={level + 1} />
298
218
  : <FilterGroupComponent key={rule.id} viewData={viewData} fields={fields} group={rule} onChange={onChange} onAddRule={onAddRule} onAddGroup={onAddGroup} onDelete={onDelete} level={level + 1} />
299
219
  ))}
300
- </div>
220
+ {/* {level > 0 &&
221
+ <div className='mt-2'>
222
+ <Button size="small" severity='danger' icon="pi pi-trash " onClick={() => onDelete(group.id)} />
223
+ </div>
224
+ } */}
225
+
226
+ {/* Add Condition Button to add parent rule */}
227
+ {level === 0 &&
228
+ <Button text label='Add Condition' icon="pi pi-plus" size='small' onClick={() => onAddRule(group.id)} className='px-0 mt-2' />
229
+ }
230
+ </Fieldset>
301
231
  );
302
232
  };
303
233
 
304
234
  // Main Filter component
305
- const FilterComponent = ({ viewData, fields, filterRules, setFilterRules, transformFilterRules }) => {
235
+ const FilterComponent = ({ viewData, fields, filterRules, setFilterRules, transformFilterRules, closeDialog }) => {
306
236
  // const initialState: FilterRule[] = [
307
237
  // {
308
238
  // id: 1,
@@ -404,18 +334,39 @@ const FilterComponent = ({ viewData, fields, filterRules, setFilterRules, transf
404
334
  setFilterRules(prev => addChild(prev, parentRuleId, newGroup));
405
335
  };
406
336
 
337
+ // const handleDeleteRule = (id) => {
338
+ // const deleteRecursively = (rules, id) => {
339
+ // return rules.filter(rule => rule.id !== id).map(rule => {
340
+ // if (rule.children) {
341
+ // return {
342
+ // ...rule,
343
+ // children: deleteRecursively(rule.children, id)
344
+ // };
345
+ // }
346
+ // return rule;
347
+ // });
348
+ // };
349
+ // setFilterRules(prev => deleteRecursively(prev, id));
350
+ // };
351
+
407
352
  const handleDeleteRule = (id) => {
408
353
  const deleteRecursively = (rules, id) => {
409
- return rules.filter(rule => rule.id !== id).map(rule => {
410
- if (rule.children) {
411
- return {
412
- ...rule,
413
- children: deleteRecursively(rule.children, id)
414
- };
415
- }
416
- return rule;
417
- });
354
+ return rules
355
+ .filter(rule => rule.id !== id) // Remove the target rule
356
+ .map(rule => {
357
+ if (rule.children) {
358
+ const updatedChildren = deleteRecursively(rule.children, id);
359
+ // If the rule had only one child and it's now empty, remove the parent
360
+ if (rule.children.length === 1 && updatedChildren.length === 0) {
361
+ return null;
362
+ }
363
+ return { ...rule, children: updatedChildren };
364
+ }
365
+ return rule;
366
+ })
367
+ .filter(Boolean); // Remove null values
418
368
  };
369
+
419
370
  setFilterRules(prev => deleteRecursively(prev, id));
420
371
  };
421
372
 
@@ -429,8 +380,6 @@ const FilterComponent = ({ viewData, fields, filterRules, setFilterRules, transf
429
380
 
430
381
  return (
431
382
  <div className=''>
432
- <div className="filter-builder">
433
-
434
383
  {filterRules.map(rule => (
435
384
  <FilterGroupComponent
436
385
  key={rule.id}
@@ -444,9 +393,6 @@ const FilterComponent = ({ viewData, fields, filterRules, setFilterRules, transf
444
393
  level={0} // Top-level group
445
394
  />
446
395
  ))}
447
-
448
- </div>
449
-
450
396
  <div className='text-center'>
451
397
  <Button label="Apply" size="small" onClick={() => transformFilterRules(filterRules)} type="submit" className="small-button" />
452
398
 
@@ -9,7 +9,7 @@ interface FilterColumns {
9
9
  name: string;
10
10
  key: string;
11
11
  }
12
- export const SolidConfigureLayoutElement = ({ }: any) => {
12
+ export const SolidConfigureLayoutElement = ({ setShowArchived, showArchived, viewData }: any) => {
13
13
 
14
14
  // const [visible, setVisible] = useState<boolean>(false);
15
15
  const op = useRef(null);
@@ -54,7 +54,10 @@ export const SolidConfigureLayoutElement = ({ }: any) => {
54
54
  </div>
55
55
  </div>
56
56
  <Divider className="m-0" />
57
- <div className="p-2 position-relative">
57
+ <div className="p-2 position-relative flex flex-column gap-1">
58
+ {viewData?.data?.solidView?.model?.enableSoftDelete &&
59
+ <Button text size="small" className="text-left w-13rem" label={showArchived ? "Hide Archived Records" : "Show Archived Records"} iconPos="left" onClick={() => { setShowArchived(!showArchived); }} />
60
+ }
58
61
  <Button
59
62
  icon='pi pi-sliders-h'
60
63
  label="Customize Layout"
@@ -65,7 +68,7 @@ export const SolidConfigureLayoutElement = ({ }: any) => {
65
68
  // onMouseEnter={(e) => customizeLayout.current.show(e)}
66
69
  />
67
70
  <p className="mt-3 mb-1 font-medium" style={{ color: 'var(--gray-400)' }}>Saved Layouts</p>
68
- <Button text severity="secondary" label="Diet Tracking" icon="pi pi-plus" size="small"/>
71
+ <Button text severity="secondary" label="Diet Tracking" icon="pi pi-plus" size="small" />
69
72
  <OverlayPanel ref={customizeLayout} className="customize-layout-panel" style={{ minWidth: 250 }}>
70
73
  <div className="pl-3 pt-2 flex align-items-center justify-content-between">
71
74
  <p className="m-0 font-bold">Columns</p>
@@ -99,5 +102,4 @@ export const SolidConfigureLayoutElement = ({ }: any) => {
99
102
  </OverlayPanel>
100
103
  </div>
101
104
  )
102
-
103
105
  }