@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.
- package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidForgotPassword.js +2 -1
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js +2 -1
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js +2 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidLogin.d.ts.map +1 -1
- package/dist/components/auth/SolidLogin.js +2 -1
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -1
- package/dist/components/auth/SolidOTPVerify.js +2 -1
- package/dist/components/auth/SolidOTPVerify.js.map +1 -1
- package/dist/components/auth/SolidRegister.d.ts.map +1 -1
- package/dist/components/auth/SolidRegister.js +125 -103
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidResetPassword.js +2 -1
- package/dist/components/auth/SolidResetPassword.js.map +1 -1
- package/dist/components/common/DropzonePlaceholder.js +1 -1
- package/dist/components/common/DropzonePlaceholder.js.map +1 -1
- package/dist/components/common/GeneralSettings.d.ts.map +1 -1
- package/dist/components/common/GeneralSettings.js +43 -31
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/core/common/FilterComponent.d.ts +2 -1
- package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
- package/dist/components/core/common/FilterComponent.js +52 -16
- package/dist/components/core/common/FilterComponent.js.map +1 -1
- package/dist/components/core/common/SolidConfigureLayoutElement.d.ts +1 -1
- package/dist/components/core/common/SolidConfigureLayoutElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidConfigureLayoutElement.js +5 -2
- package/dist/components/core/common/SolidConfigureLayoutElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +131 -23
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/filter/SolidManyToOneFilterElement.d.ts.map +1 -1
- package/dist/components/core/filter/SolidManyToOneFilterElement.js +8 -6
- package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js +1 -1
- package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidSelectionStaticFilterElement.js +1 -1
- package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
- package/dist/components/core/filter/SolidVarInputsFilterElement.js +11 -10
- package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +49 -14
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.js +9 -5
- package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDateField.js +12 -8
- package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.js +12 -8
- package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.js +9 -5
- package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.js +9 -5
- package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.js +2 -2
- package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.js +7 -3
- package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +155 -46
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +87 -31
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.js +2 -2
- package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js +4 -4
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.js +18 -9
- package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.js +7 -3
- package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.js +12 -8
- package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +22 -15
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +11 -8
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +2 -2
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +88 -63
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidManyToOneFilterElement.js +7 -5
- package/dist/components/core/list/SolidManyToOneFilterElement.js.map +1 -1
- package/dist/components/core/list/columns/SolidBooleanColumn.js +3 -1
- package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +20 -16
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +67 -54
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldSelector.js +1 -1
- package/dist/components/core/model/FieldSelector.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +12 -17
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +23 -23
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +42 -11
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
- package/dist/components/layout/navbar-two-menu.js +6 -2
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
- package/dist/components/layout/user-profile-menu.js +7 -3
- package/dist/components/layout/user-profile-menu.js.map +1 -1
- package/dist/helpers/AppTitle.d.ts +4 -0
- package/dist/helpers/AppTitle.d.ts.map +1 -0
- package/dist/helpers/AppTitle.js +8 -0
- package/dist/helpers/AppTitle.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/auth/SolidForgotPassword.tsx +2 -6
- package/src/components/auth/SolidInitialLoginOtp.tsx +2 -6
- package/src/components/auth/SolidInitiateRegisterOtp.tsx +2 -6
- package/src/components/auth/SolidLogin.tsx +2 -5
- package/src/components/auth/SolidOTPVerify.tsx +4 -7
- package/src/components/auth/SolidRegister.tsx +207 -178
- package/src/components/auth/SolidResetPassword.tsx +2 -6
- package/src/components/common/DropzonePlaceholder.tsx +1 -1
- package/src/components/common/GeneralSettings.tsx +310 -193
- package/src/components/core/common/FilterComponent.tsx +148 -202
- package/src/components/core/common/SolidConfigureLayoutElement.tsx +6 -4
- package/src/components/core/common/SolidGlobalSearchElement.tsx +193 -50
- package/src/components/core/filter/SolidManyToOneFilterElement.tsx +5 -3
- package/src/components/core/filter/SolidSelectionDynamicFilterElement.tsx +1 -1
- package/src/components/core/filter/SolidSelectionStaticFilterElement.tsx +1 -1
- package/src/components/core/filter/SolidVarInputsFilterElement.tsx +103 -135
- package/src/components/core/form/SolidFormView.tsx +64 -25
- package/src/components/core/form/fields/SolidBooleanField.tsx +12 -5
- package/src/components/core/form/fields/SolidDateField.tsx +9 -4
- package/src/components/core/form/fields/SolidDateTimeField.tsx +27 -21
- package/src/components/core/form/fields/SolidDecimalField.tsx +9 -2
- package/src/components/core/form/fields/SolidIntegerField.tsx +22 -15
- package/src/components/core/form/fields/SolidJsonField.tsx +14 -12
- package/src/components/core/form/fields/SolidLongTextField.tsx +22 -16
- package/src/components/core/form/fields/SolidMediaMultipleField.tsx +257 -79
- package/src/components/core/form/fields/SolidMediaSingleField.tsx +148 -61
- package/src/components/core/form/fields/SolidRichTextField.tsx +6 -4
- package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +6 -5
- package/src/components/core/form/fields/SolidSelectionStaticField.tsx +34 -23
- package/src/components/core/form/fields/SolidShortTextField.tsx +23 -16
- package/src/components/core/form/fields/SolidTimeField.tsx +27 -20
- package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +9 -9
- package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +20 -19
- package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +2 -2
- package/src/components/core/list/SolidListView.tsx +91 -49
- package/src/components/core/list/SolidManyToOneFilterElement.tsx +2 -2
- package/src/components/core/list/columns/SolidBooleanColumn.tsx +2 -2
- package/src/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +1 -1
- package/src/components/core/model/CreateModel.tsx +92 -81
- package/src/components/core/model/FieldMetaDataForm.tsx +166 -87
- package/src/components/core/model/FieldSelector.tsx +1 -1
- package/src/components/core/model/ModelMetaData.tsx +8 -7
- package/src/components/core/module/CreateModule.tsx +181 -183
- package/src/components/layout/AppSidebar.tsx +35 -10
- package/src/components/layout/navbar-two-menu.tsx +6 -1
- package/src/components/layout/user-profile-menu.tsx +20 -8
- package/src/helpers/AppTitle.tsx +14 -0
- 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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
-
|
|
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
|
-
|
|
249
|
-
|
|
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
|
-
|
|
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
|
-
<
|
|
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
|
-
|
|
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
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
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
|
}
|