@solidxai/core-ui 0.1.9-beta.16 → 0.1.9-beta.18
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/SolidLogin.js +2 -2
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +2 -2
- package/dist/components/auth/SolidRegister.js +1 -1
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +1 -1
- package/dist/components/common/SettingsComponent.d.ts.map +1 -1
- package/dist/components/common/SettingsComponent.js +3 -0
- package/dist/components/common/SettingsComponent.js.map +1 -1
- package/dist/components/common/SettingsComponent.tsx +3 -0
- package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
- package/dist/components/common/SocialMediaLogin.js +1 -1
- package/dist/components/common/SocialMediaLogin.js.map +1 -1
- package/dist/components/common/SocialMediaLogin.tsx +4 -0
- package/dist/components/common/SolidFaviconProvider.d.ts +3 -0
- package/dist/components/common/SolidFaviconProvider.d.ts.map +1 -0
- package/dist/components/common/SolidFaviconProvider.js +102 -0
- package/dist/components/common/SolidFaviconProvider.js.map +1 -0
- package/dist/components/common/SolidFaviconProvider.tsx +55 -0
- package/dist/components/core/card/SolidCardView.js +1 -1
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.js +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.tsx +1 -1
- package/dist/components/core/chatter/SolidMessageComposer.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidMessageComposer.js +2 -1
- package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
- package/dist/components/core/chatter/SolidMessageComposer.tsx +2 -0
- package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
- package/dist/components/core/common/FilterComponent.js +4 -2
- package/dist/components/core/common/FilterComponent.js.map +1 -1
- package/dist/components/core/common/FilterComponent.tsx +5 -2
- package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +2 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +2 -0
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +77 -42
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +43 -5
- package/dist/components/core/common/SolidSaveCustomFilterForm.d.ts.map +1 -1
- package/dist/components/core/common/SolidSaveCustomFilterForm.js +1 -1
- package/dist/components/core/common/SolidSaveCustomFilterForm.js.map +1 -1
- package/dist/components/core/common/SolidSaveCustomFilterForm.tsx +0 -1
- package/dist/components/core/form/SolidFormView.js +1 -1
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +1 -1
- package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js +12 -3
- package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
- package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +21 -16
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +15 -5
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +21 -9
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +28 -19
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +25 -15
- package/dist/components/core/list/SolidListViewColumn.d.ts +1 -0
- package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.js +27 -0
- package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.tsx +13 -0
- package/dist/components/core/list/SolidListViewConfigure.js +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
- package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderButton.js +6 -3
- package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderButton.tsx +10 -7
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +16 -7
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +17 -6
- package/dist/components/core/list/SolidListViewRowActionMenuItem.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewRowActionMenuItem.js +14 -5
- package/dist/components/core/list/SolidListViewRowActionMenuItem.js.map +1 -1
- package/dist/components/core/list/SolidListViewRowActionMenuItem.tsx +17 -6
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +11 -24
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +10 -22
- package/dist/components/core/model/FieldMetaDataForm.js +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +1 -1
- package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +6 -18
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +8 -21
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +1 -1
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +2 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js +15 -0
- package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +13 -0
- package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidButton.js +10 -2
- package/dist/components/shad-cn-ui/SolidButton.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidButton.tsx +10 -2
- package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.js +1 -0
- package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.tsx +1 -0
- package/dist/components/shad-cn-ui/SolidPasswordInput.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidPasswordInput.js +1 -1
- package/dist/components/shad-cn-ui/SolidPasswordInput.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidPasswordInput.tsx +1 -0
- package/dist/helpers/buttonPresentation.d.ts +24 -0
- package/dist/helpers/buttonPresentation.d.ts.map +1 -0
- package/dist/helpers/buttonPresentation.js +28 -0
- package/dist/helpers/buttonPresentation.js.map +1 -0
- package/dist/helpers/buttonPresentation.ts +53 -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/dist/index.ts +1 -0
- package/dist/resources/globals.css +9 -7
- package/dist/resources/shadcn-base.css +24 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsComponent.js","sourceRoot":"","sources":["../../../src/components/common/SettingsComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState, type ComponentType } from \"react\";\nimport { Search } from \"lucide-react\";\nimport { useDispatch } from \"react-redux\";\nimport { env } from \"../../adapters/env\";\nimport { ERROR_MESSAGES } from \"../../constants/error-messages\";\nimport { getExtensionComponent } from \"../../helpers/registry\";\nimport {\n extractSettingsList,\n getSettingOptionLabel,\n getSettingsMap,\n humanizeSettingToken,\n type AdminSettingDefinition,\n} from \"../../helpers/settingsPayload\";\nimport type { SolidSettingsWidgetProps } from \"../../types/solid-core\";\nimport { showToast } from \"../../redux/features/toastSlice\";\nimport {\n useBulkUpdateSolidSettingsMutation,\n useGetSolidSettingsQuery,\n} from \"../../redux/api/solidSettingsApi\";\nimport {\n SolidButton,\n SolidDatePicker,\n SolidInput,\n SolidSelect,\n SolidSwitch,\n SolidTabGroup,\n SolidTag,\n SolidTextarea,\n SolidTooltip,\n SolidTooltipContent,\n SolidTooltipTrigger,\n} from \"../shad-cn-ui\";\nimport { SettingDropzoneActivePlaceholder } from \"./SolidSettings/SettingDropzoneActivePlaceholder\";\nimport { SettingsImageRemoveButton } from \"./SolidSettings/SettingsImageRemoveButton\";\nimport { SolidUploadedImage } from \"./SolidSettings/SolidUploadedImage\";\nimport styles from \"./SettingsComponent.module.css\";\n\ntype SettingsFormValue = string | number | boolean | null | File;\ntype SettingsFilterMode = \"all\" | \"read-only\" | \"editable\";\n\nfunction normalizeAssetUrl(src?: string | null) {\n if (!src) return \"\";\n const isBlobOrAbsolute = src.startsWith(\"blob:\") || src.startsWith(\"http\");\n if (isBlobOrAbsolute || src.startsWith(\"/\")) return src;\n return `${env(\"API_URL\")}/${src}`;\n}\n\nfunction toModuleInitials(moduleName: string) {\n return moduleName\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((token) => token[0]?.toUpperCase())\n .join(\"\")\n .slice(0, 2);\n}\n\nfunction serializeValue(value: unknown) {\n if (value === null || value === undefined) return \"\";\n if (typeof value === \"string\") return value;\n return JSON.stringify(value);\n}\n\nfunction areValuesEqual(left: unknown, right: unknown) {\n if (left instanceof File || right instanceof File) return false;\n return serializeValue(left) === serializeValue(right);\n}\n\nfunction formatReadonlyValue(setting: AdminSettingDefinition, value: unknown) {\n if (value === null || value === undefined || value === \"\") {\n return \"Not set\";\n }\n\n if (setting.controlType === \"boolean\") {\n return value ? \"Enabled\" : \"Disabled\";\n }\n\n if (setting.controlType === \"selectionStatic\") {\n return getSettingOptionLabel(setting, value);\n }\n\n if (setting.controlType === \"mediaSingle\") {\n return String(value);\n }\n\n if (typeof value === \"object\") {\n return JSON.stringify(value, null, 2);\n }\n\n return String(value);\n}\n\nfunction getSettingsWidgetName(setting: AdminSettingDefinition) {\n return setting.settingsWidget || \"\";\n}\n\nfunction getCustomWidgetErrorText(setting: AdminSettingDefinition, widgetName: string, settingsWidget: ComponentType<any> | null) {\n if (setting.controlType !== \"custom\") return null;\n if (!widgetName) {\n return `controlType is \"custom\" for setting \"${setting.key}\" but no settingsWidget is specified.`;\n }\n if (!settingsWidget) {\n return `Widget \"${widgetName}\" is not registered for setting \"${setting.key}\".`;\n }\n return null;\n}\n\nexport function SettingsComponent() {\n const dispatch = useDispatch();\n const { data: settingsResponse, refetch } = useGetSolidSettingsQuery(undefined);\n const [bulkUpdateSolidSettings] = useBulkUpdateSolidSettingsMutation();\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [filterMode, setFilterMode] = useState<SettingsFilterMode>(\"all\");\n const [activeModule, setActiveModule] = useState(\"\");\n const [formValues, setFormValues] = useState<Record<string, SettingsFormValue>>({});\n const [filePreviews, setFilePreviews] = useState<Record<string, string>>({});\n\n const settingsList = useMemo(\n () => extractSettingsList(settingsResponse).filter((setting) => setting.level !== \"internal-user\"),\n [settingsResponse],\n );\n const settingsMap = useMemo(() => getSettingsMap(settingsResponse), [settingsResponse]);\n const totalSettingsCount = settingsList.length;\n const editableSettingsCount = useMemo(\n () => settingsList.filter((setting) => setting.editable).length,\n [settingsList],\n );\n\n useEffect(() => {\n if (!settingsList.length) return;\n const nextValues = Object.fromEntries(\n settingsList.map((setting) => [setting.key, settingsMap[setting.key] ?? setting.value ?? null]),\n );\n setFormValues(nextValues);\n }, [settingsList, settingsMap]);\n\n const filteredSettings = useMemo(() => {\n const scopedSettings = settingsList.filter((setting) => {\n if (filterMode === \"read-only\") return !setting.editable;\n if (filterMode === \"editable\") return setting.editable;\n return true;\n });\n const query = searchTerm.trim().toLowerCase();\n if (!query) return scopedSettings;\n\n return scopedSettings.filter((setting) => {\n const haystack = [\n setting.moduleName,\n setting.group,\n setting.key,\n setting.label,\n setting.description,\n setting.options?.map((option) => `${option.label} ${option.value}`).join(\" \"),\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\n return haystack.includes(query);\n });\n }, [filterMode, searchTerm, settingsList]);\n\n const moduleEntries = useMemo(() => {\n const grouped = new Map<string, AdminSettingDefinition[]>();\n filteredSettings.forEach((setting) => {\n const current = grouped.get(setting.moduleName) ?? [];\n current.push(setting);\n grouped.set(setting.moduleName, current);\n });\n\n return Array.from(grouped.entries()).map(([moduleName, moduleSettings]) => ({\n moduleName,\n label: humanizeSettingToken(moduleName),\n badge: toModuleInitials(moduleName) || \"S\",\n settings: moduleSettings,\n }));\n }, [filteredSettings]);\n\n useEffect(() => {\n if (!moduleEntries.length) {\n setActiveModule(\"\");\n return;\n }\n\n if (!moduleEntries.some((entry) => entry.moduleName === activeModule)) {\n setActiveModule(moduleEntries[0].moduleName);\n }\n }, [activeModule, moduleEntries]);\n\n const hasChanges = useMemo(\n () =>\n settingsList.some(\n (setting) =>\n setting.editable &&\n !areValuesEqual(formValues[setting.key], settingsMap[setting.key] ?? setting.value ?? null),\n ),\n [formValues, settingsList, settingsMap],\n );\n\n const groupedModuleSettings = useMemo(() => {\n const currentModule = moduleEntries.find((entry) => entry.moduleName === activeModule);\n if (!currentModule) return [];\n\n const grouped = new Map<string, AdminSettingDefinition[]>();\n currentModule.settings.forEach((setting) => {\n const groupKey = setting.group || \"general\";\n const current = grouped.get(groupKey) ?? [];\n current.push(setting);\n grouped.set(groupKey, current);\n });\n\n return Array.from(grouped.entries()).map(([groupKey, groupSettings]) => ({\n key: groupKey,\n label: humanizeSettingToken(groupKey),\n settings: groupSettings.sort((left, right) => {\n const leftSort = left.sortOrder ?? Number.MAX_SAFE_INTEGER;\n const rightSort = right.sortOrder ?? Number.MAX_SAFE_INTEGER;\n if (leftSort !== rightSort) return leftSort - rightSort;\n return (left.label ?? left.key).localeCompare(right.label ?? right.key);\n }),\n }));\n }, [activeModule, moduleEntries]);\n\n const updateValue = (key: string, value: SettingsFormValue) => {\n setFormValues((current) => ({ ...current, [key]: value }));\n };\n\n const updateFileValue = (key: string, file: File | null) => {\n if (!file) {\n if (filePreviews[key]) {\n URL.revokeObjectURL(filePreviews[key]);\n }\n setFilePreviews((current) => {\n const next = { ...current };\n delete next[key];\n return next;\n });\n updateValue(key, null);\n return;\n }\n\n if (file.size > 2 * 1024 * 1024) {\n dispatch(showToast({ severity: \"error\", summary: \"File too large\", detail: \"Maximum file size is 2MB\" }));\n return;\n }\n\n if (filePreviews[key]) {\n URL.revokeObjectURL(filePreviews[key]);\n }\n\n const preview = URL.createObjectURL(file);\n setFilePreviews((current) => ({ ...current, [key]: preview }));\n updateValue(key, file);\n };\n\n useEffect(\n () => () => {\n Object.values(filePreviews).forEach((preview) => URL.revokeObjectURL(preview));\n },\n [filePreviews],\n );\n\n const handleSave = async () => {\n try {\n const updatedSettingsArray: Array<{ key: string; value: string; type: string }> = [];\n const formData = new FormData();\n\n settingsList.forEach((setting) => {\n if (!setting.editable) return;\n\n const nextValue = formValues[setting.key];\n const currentValue = settingsMap[setting.key] ?? setting.value ?? null;\n\n if (nextValue instanceof File) {\n formData.append(setting.key, nextValue);\n updatedSettingsArray.push({ key: setting.key, value: \"\", type: \"system\" });\n return;\n }\n\n if (!areValuesEqual(nextValue, currentValue)) {\n updatedSettingsArray.push({\n key: setting.key,\n value: serializeValue(nextValue),\n type: \"system\",\n });\n }\n });\n\n if (!updatedSettingsArray.length) {\n dispatch(showToast({ severity: \"success\", summary: \"No Changes\", detail: \"No settings were updated\" }));\n return;\n }\n\n formData.append(\"settings\", JSON.stringify(updatedSettingsArray));\n const response = await bulkUpdateSolidSettings({ data: formData }).unwrap();\n\n if (response?.statusCode === 200) {\n dispatch(showToast({ severity: \"success\", summary: \"Updated\", detail: \"Settings updated\" }));\n } else {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.FAILED, detail: ERROR_MESSAGES.SOMETHING_WRONG }));\n }\n\n await refetch();\n setFilePreviews({});\n } catch (error: any) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.FAILED, detail: error?.data?.message || ERROR_MESSAGES.SOMETHING_WRONG }));\n }\n };\n\n const moduleTabs = moduleEntries.map((entry) => ({\n value: entry.moduleName,\n label: (\n <span className={styles.moduleTab}>\n <span className={styles.moduleTabBadge}>{entry.badge}</span>\n <span className={styles.moduleTabText}>\n <span className={styles.moduleTabLabel}>{entry.label}</span>\n <span className={styles.moduleTabMeta}>{entry.settings.length} settings</span>\n </span>\n </span>\n ),\n content: (\n <div>\n {groupedModuleSettings.length ? (\n groupedModuleSettings.map((group) => (\n <section key={group.key} className={styles.groupSection}>\n <div className={styles.groupCard}>\n <div className={styles.groupHeader}>\n <div>\n <h3 className={styles.groupTitle}>{group.label}</h3>\n <div className={styles.groupMeta}>{group.settings.length} item{group.settings.length === 1 ? \"\" : \"s\"}</div>\n </div>\n </div>\n <div className={styles.groupBody}>\n {group.settings.map((setting) => {\n const value = formValues[setting.key];\n const settingsWidgetName = getSettingsWidgetName(setting);\n const SettingsWidget = settingsWidgetName ? getExtensionComponent(settingsWidgetName) : null;\n const customWidgetErrorText = getCustomWidgetErrorText(setting, settingsWidgetName, SettingsWidget);\n const settingsWidgetProps: SolidSettingsWidgetProps = {\n setting,\n value,\n settingsMap,\n formValues,\n editable: Boolean(setting.editable),\n updateValue,\n updateFileValue,\n };\n return (\n <div key={setting.key} className={styles.settingRow}>\n <div className={styles.settingLabelWrap}>\n <div className={styles.settingLabelLine}>\n <p className={styles.settingLabel}>{setting.label || humanizeSettingToken(setting.key)}</p>\n {!setting.editable ? (\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <span>\n <SolidTag tone=\"warn\">Read only</SolidTag>\n </span>\n </SolidTooltipTrigger>\n <SolidTooltipContent>\n This value comes from system configuration and cannot be changed from the admin UI.\n </SolidTooltipContent>\n </SolidTooltip>\n ) : null}\n </div>\n {setting.description ? <p className={styles.settingDescription}>{setting.description}</p> : null}\n </div>\n\n {!setting.editable ? (\n setting.controlType === \"custom\" ? (\n customWidgetErrorText ? (\n <div className={styles.readonlyValue}>\n <span className={styles.customWidgetError}>{customWidgetErrorText}</span>\n </div>\n ) : SettingsWidget ? (\n (() => {\n const ResolvedSettingsWidget = SettingsWidget as ComponentType<any>;\n return <ResolvedSettingsWidget {...settingsWidgetProps} />;\n })()\n ) : null\n ) : setting.controlType === \"mediaSingle\" && value ? (\n <div className={styles.mediaPreview}>\n <SolidUploadedImage src={normalizeAssetUrl(String(value))} />\n </div>\n ) : (\n <div className={styles.readonlyValue}>\n <span className={value === null || value === undefined || value === \"\" ? styles.emptyValue : undefined}>\n {formatReadonlyValue(setting, value)}\n </span>\n </div>\n )\n ) : (\n <div className={`${styles.controlStack} ${setting.controlType === \"custom\" ? styles.customControlStack : \"\"}`}>\n {setting.controlType === \"boolean\" ? (\n <div className={styles.boolRow}>\n <SolidSwitch checked={Boolean(value)} onChange={(checked) => updateValue(setting.key, checked)} />\n <span className={styles.boolText}>{value ? \"Enabled\" : \"Disabled\"}</span>\n </div>\n ) : null}\n\n {setting.controlType === \"shortText\" ? (\n <SolidInput\n type=\"text\"\n value={value == null ? \"\" : String(value)}\n placeholder={setting.placeholder || setting.label}\n onChange={(event: any) => updateValue(setting.key, event.target.value)}\n />\n ) : null}\n\n {setting.controlType === \"longText\" ? (\n <SolidTextarea\n rows={4}\n value={value == null ? \"\" : typeof value === \"string\" ? value : JSON.stringify(value, null, 2)}\n placeholder={setting.placeholder || setting.label}\n onChange={(event: any) => updateValue(setting.key, event.target.value)}\n />\n ) : null}\n\n {setting.controlType === \"numeric\" ? (\n <SolidInput\n type=\"number\"\n value={value == null ? \"\" : String(value)}\n placeholder={setting.placeholder || setting.label}\n onChange={(event: any) => updateValue(setting.key, event.target.value === \"\" ? null : Number(event.target.value))}\n />\n ) : null}\n\n {setting.controlType === \"selectionStatic\" ? (\n <SolidSelect\n value={value}\n options={setting.options || []}\n placeholder={setting.placeholder || \"Select\"}\n onChange={(event) => updateValue(setting.key, event.value)}\n />\n ) : null}\n\n {setting.controlType === \"date\" || setting.controlType === \"datetime\" ? (\n <SolidDatePicker\n selected={value ? new Date(String(value)) : null}\n showTimeSelect={setting.controlType === \"datetime\"}\n dateFormat={setting.controlType === \"datetime\" ? \"yyyy-MM-dd HH:mm:ss\" : \"yyyy-MM-dd\"}\n onChange={(date: Date | null) => updateValue(setting.key, date instanceof Date ? date.toISOString() : null)}\n />\n ) : null}\n\n {setting.controlType === \"mediaSingle\" ? (\n <div className={styles.mediaField}>\n <div className={styles.mediaComposer}>\n <label className={styles.mediaDropzone}>\n <input\n className={styles.mediaInput}\n type=\"file\"\n accept=\".png,.jpg,.jpeg,.svg,.webp\"\n onChange={(event) => updateFileValue(setting.key, event.target.files?.[0] ?? null)}\n />\n <SettingDropzoneActivePlaceholder note=\"PNG, JPG, JPEG, SVG, WEBP | Max size: 2 MB\" />\n </label>\n {(filePreviews[setting.key] || value) ? (\n <div className={styles.mediaPreview}>\n <SolidUploadedImage src={filePreviews[setting.key] || normalizeAssetUrl(String(value))} />\n </div>\n ) : (\n <div className={styles.mediaEmptyState}>Preview appears here after upload</div>\n )}\n </div>\n {(filePreviews[setting.key] || value) ? (\n <SettingsImageRemoveButton onClick={() => updateFileValue(setting.key, null)} />\n ) : null}\n </div>\n ) : null}\n\n {setting.controlType === \"custom\" ? (\n customWidgetErrorText ? (\n <div className={styles.readonlyValue}>\n <span className={styles.customWidgetError}>{customWidgetErrorText}</span>\n </div>\n ) : SettingsWidget ? (\n (() => {\n const ResolvedSettingsWidget = SettingsWidget as ComponentType<any>;\n return <ResolvedSettingsWidget {...settingsWidgetProps} />;\n })()\n ) : null\n ) : null}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </section>\n ))\n ) : (\n <div className={styles.emptyState}>No settings match the current filter.</div>\n )}\n </div>\n ),\n }));\n\n return (\n <div className={styles.page}>\n <div className={`page-header secondary-border-bottom ${styles.pageHeader}`}>\n <div className={styles.headerIntro}>\n <div className=\"form-wrapper-title\">Settings</div>\n <div className={styles.subtitle}>Manage platform configuration across modules from a single workspace.</div>\n <div className={styles.summaryChips}>\n <span className={styles.summaryChip}>{moduleEntries.length} module{moduleEntries.length === 1 ? \"\" : \"s\"}</span>\n <span className={styles.summaryChip}>{totalSettingsCount} setting{totalSettingsCount === 1 ? \"\" : \"s\"}</span>\n <button\n type=\"button\"\n className={`${styles.summaryChip} ${styles.summaryChipButton} ${filterMode === \"editable\" ? styles.summaryChipActive : \"\"}`}\n aria-pressed={filterMode === \"editable\"}\n onClick={() => setFilterMode((current) => (current === \"editable\" ? \"all\" : \"editable\"))}\n >\n {editableSettingsCount} editable\n </button>\n </div>\n </div>\n <div className={styles.headerSearch}>\n <div className={styles.searchIcon}>\n <Search size={16} />\n <SolidInput\n className={styles.searchInput}\n value={searchTerm}\n placeholder=\"Search settings, groups, or modules\"\n onChange={(event: any) => setSearchTerm(event.target.value)}\n />\n </div>\n {searchTerm ? (\n <span className={styles.resultsMeta}>\n {filteredSettings.length} result{filteredSettings.length === 1 ? \"\" : \"s\"}\n </span>\n ) : null}\n </div>\n <div className={styles.toolbarActions}>\n <div className={styles.legend}>\n <button\n type=\"button\"\n className={`${styles.readonlyFilterButton} ${filterMode === \"read-only\" ? styles.readonlyFilterButtonActive : \"\"}`}\n aria-pressed={filterMode === \"read-only\"}\n aria-label={filterMode === \"read-only\" ? \"Disable read-only filter\" : \"Enable read-only filter\"}\n onClick={() => setFilterMode((current) => (current === \"read-only\" ? \"all\" : \"read-only\"))}\n >\n <SolidTag tone=\"warn\">Read only</SolidTag>\n </button>\n <span className={filterMode === \"read-only\" ? styles.legendLabelActive : undefined}>\n {filterMode === \"read-only\" ? \"Read-only filter active\" : \"System-managed value\"}\n </span>\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <button type=\"button\" className={styles.legendButton} aria-label=\"Read-only legend details\">\n i\n </button>\n </SolidTooltipTrigger>\n <SolidTooltipContent>\n Read-only settings are visible here for context, but can only be changed through environment or backend configuration.\n </SolidTooltipContent>\n </SolidTooltip>\n </div>\n <SolidButton size=\"sm\" type=\"button\" loading={false} onClick={handleSave} disabled={!hasChanges}>\n Save\n </SolidButton>\n </div>\n </div>\n\n <div className={styles.workspace}>\n {moduleTabs.length ? (\n <SolidTabGroup\n tabs={moduleTabs}\n value={activeModule}\n onValueChange={setActiveModule}\n className={styles.tabGroup}\n listClassName={styles.tabList}\n panelClassName={styles.tabPanel}\n orientation=\"vertical\"\n />\n ) : (\n <div className={styles.emptyState}>No settings are available.</div>\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SettingsComponent.js","sourceRoot":"","sources":["../../../src/components/common/SettingsComponent.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState, type ComponentType } from \"react\";\nimport { Search } from \"lucide-react\";\nimport { useDispatch } from \"react-redux\";\nimport { env } from \"../../adapters/env\";\nimport { ERROR_MESSAGES } from \"../../constants/error-messages\";\nimport { getExtensionComponent } from \"../../helpers/registry\";\nimport {\n extractSettingsList,\n getSettingOptionLabel,\n getSettingsMap,\n humanizeSettingToken,\n type AdminSettingDefinition,\n} from \"../../helpers/settingsPayload\";\nimport type { SolidSettingsWidgetProps } from \"../../types/solid-core\";\nimport { showToast } from \"../../redux/features/toastSlice\";\nimport {\n useBulkUpdateSolidSettingsMutation,\n useGetSolidSettingsQuery,\n} from \"../../redux/api/solidSettingsApi\";\nimport {\n SolidButton,\n SolidDatePicker,\n SolidInput,\n SolidSelect,\n SolidSwitch,\n SolidTabGroup,\n SolidTag,\n SolidTextarea,\n SolidTooltip,\n SolidTooltipContent,\n SolidTooltipTrigger,\n} from \"../shad-cn-ui\";\nimport { SettingDropzoneActivePlaceholder } from \"./SolidSettings/SettingDropzoneActivePlaceholder\";\nimport { SettingsImageRemoveButton } from \"./SolidSettings/SettingsImageRemoveButton\";\nimport { SolidUploadedImage } from \"./SolidSettings/SolidUploadedImage\";\nimport styles from \"./SettingsComponent.module.css\";\n\ntype SettingsFormValue = string | number | boolean | null | File;\ntype SettingsFilterMode = \"all\" | \"read-only\" | \"editable\";\n\nfunction normalizeAssetUrl(src?: string | null) {\n if (!src) return \"\";\n const isBlobOrAbsolute = src.startsWith(\"blob:\") || src.startsWith(\"http\");\n if (isBlobOrAbsolute || src.startsWith(\"/\")) return src;\n return `${env(\"API_URL\")}/${src}`;\n}\n\nfunction toModuleInitials(moduleName: string) {\n return moduleName\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((token) => token[0]?.toUpperCase())\n .join(\"\")\n .slice(0, 2);\n}\n\nfunction serializeValue(value: unknown) {\n if (value === null || value === undefined) return \"\";\n if (typeof value === \"string\") return value;\n return JSON.stringify(value);\n}\n\nfunction areValuesEqual(left: unknown, right: unknown) {\n if (left instanceof File || right instanceof File) return false;\n return serializeValue(left) === serializeValue(right);\n}\n\nfunction formatReadonlyValue(setting: AdminSettingDefinition, value: unknown) {\n if (value === null || value === undefined || value === \"\") {\n return \"Not set\";\n }\n\n if (setting.controlType === \"boolean\") {\n return value ? \"Enabled\" : \"Disabled\";\n }\n\n if (setting.controlType === \"selectionStatic\") {\n return getSettingOptionLabel(setting, value);\n }\n\n if (setting.controlType === \"mediaSingle\") {\n return String(value);\n }\n\n if (typeof value === \"object\") {\n return JSON.stringify(value, null, 2);\n }\n\n return String(value);\n}\n\nfunction getSettingsWidgetName(setting: AdminSettingDefinition) {\n return setting.settingsWidget || \"\";\n}\n\nfunction getCustomWidgetErrorText(setting: AdminSettingDefinition, widgetName: string, settingsWidget: ComponentType<any> | null) {\n if (setting.controlType !== \"custom\") return null;\n if (!widgetName) {\n return `controlType is \"custom\" for setting \"${setting.key}\" but no settingsWidget is specified.`;\n }\n if (!settingsWidget) {\n return `Widget \"${widgetName}\" is not registered for setting \"${setting.key}\".`;\n }\n return null;\n}\n\nexport function SettingsComponent() {\n const dispatch = useDispatch();\n const { data: settingsResponse, refetch } = useGetSolidSettingsQuery(undefined);\n const [bulkUpdateSolidSettings] = useBulkUpdateSolidSettingsMutation();\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [filterMode, setFilterMode] = useState<SettingsFilterMode>(\"all\");\n const [activeModule, setActiveModule] = useState(\"\");\n const [formValues, setFormValues] = useState<Record<string, SettingsFormValue>>({});\n const [filePreviews, setFilePreviews] = useState<Record<string, string>>({});\n\n const settingsList = useMemo(\n () => extractSettingsList(settingsResponse).filter((setting) => setting.level !== \"internal-user\"),\n [settingsResponse],\n );\n const settingsMap = useMemo(() => getSettingsMap(settingsResponse), [settingsResponse]);\n const totalSettingsCount = settingsList.length;\n const editableSettingsCount = useMemo(\n () => settingsList.filter((setting) => setting.editable).length,\n [settingsList],\n );\n\n useEffect(() => {\n if (!settingsList.length) return;\n const nextValues = Object.fromEntries(\n settingsList.map((setting) => [setting.key, settingsMap[setting.key] ?? setting.value ?? null]),\n );\n setFormValues(nextValues);\n }, [settingsList, settingsMap]);\n\n const filteredSettings = useMemo(() => {\n const scopedSettings = settingsList.filter((setting) => {\n if (filterMode === \"read-only\") return !setting.editable;\n if (filterMode === \"editable\") return setting.editable;\n return true;\n });\n const query = searchTerm.trim().toLowerCase();\n if (!query) return scopedSettings;\n\n return scopedSettings.filter((setting) => {\n const haystack = [\n setting.moduleName,\n setting.group,\n setting.key,\n setting.label,\n setting.description,\n setting.options?.map((option) => `${option.label} ${option.value}`).join(\" \"),\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\n return haystack.includes(query);\n });\n }, [filterMode, searchTerm, settingsList]);\n\n const moduleEntries = useMemo(() => {\n const grouped = new Map<string, AdminSettingDefinition[]>();\n filteredSettings.forEach((setting) => {\n const current = grouped.get(setting.moduleName) ?? [];\n current.push(setting);\n grouped.set(setting.moduleName, current);\n });\n\n return Array.from(grouped.entries()).map(([moduleName, moduleSettings]) => ({\n moduleName,\n label: humanizeSettingToken(moduleName),\n badge: toModuleInitials(moduleName) || \"S\",\n settings: moduleSettings,\n }));\n }, [filteredSettings]);\n\n useEffect(() => {\n if (!moduleEntries.length) {\n setActiveModule(\"\");\n return;\n }\n\n if (!moduleEntries.some((entry) => entry.moduleName === activeModule)) {\n setActiveModule(moduleEntries[0].moduleName);\n }\n }, [activeModule, moduleEntries]);\n\n const hasChanges = useMemo(\n () =>\n settingsList.some(\n (setting) =>\n setting.editable &&\n !areValuesEqual(formValues[setting.key], settingsMap[setting.key] ?? setting.value ?? null),\n ),\n [formValues, settingsList, settingsMap],\n );\n\n const groupedModuleSettings = useMemo(() => {\n const currentModule = moduleEntries.find((entry) => entry.moduleName === activeModule);\n if (!currentModule) return [];\n\n const grouped = new Map<string, AdminSettingDefinition[]>();\n currentModule.settings.forEach((setting) => {\n const groupKey = setting.group || \"general\";\n const current = grouped.get(groupKey) ?? [];\n current.push(setting);\n grouped.set(groupKey, current);\n });\n\n return Array.from(grouped.entries()).map(([groupKey, groupSettings]) => ({\n key: groupKey,\n label: humanizeSettingToken(groupKey),\n settings: groupSettings.sort((left, right) => {\n const leftSort = left.sortOrder ?? Number.MAX_SAFE_INTEGER;\n const rightSort = right.sortOrder ?? Number.MAX_SAFE_INTEGER;\n if (leftSort !== rightSort) return leftSort - rightSort;\n return (left.label ?? left.key).localeCompare(right.label ?? right.key);\n }),\n }));\n }, [activeModule, moduleEntries]);\n\n const updateValue = (key: string, value: SettingsFormValue) => {\n setFormValues((current) => ({ ...current, [key]: value }));\n };\n\n const updateFileValue = (key: string, file: File | null) => {\n if (!file) {\n if (filePreviews[key]) {\n URL.revokeObjectURL(filePreviews[key]);\n }\n setFilePreviews((current) => {\n const next = { ...current };\n delete next[key];\n return next;\n });\n updateValue(key, null);\n return;\n }\n\n if (file.size > 2 * 1024 * 1024) {\n dispatch(showToast({ severity: \"error\", summary: \"File too large\", detail: \"Maximum file size is 2MB\" }));\n return;\n }\n\n if (filePreviews[key]) {\n URL.revokeObjectURL(filePreviews[key]);\n }\n\n const preview = URL.createObjectURL(file);\n setFilePreviews((current) => ({ ...current, [key]: preview }));\n updateValue(key, file);\n };\n\n useEffect(\n () => () => {\n Object.values(filePreviews).forEach((preview) => URL.revokeObjectURL(preview));\n },\n [filePreviews],\n );\n\n const handleSave = async () => {\n try {\n const updatedSettingsArray: Array<{ key: string; value: string; type: string }> = [];\n const formData = new FormData();\n\n settingsList.forEach((setting) => {\n if (!setting.editable) return;\n\n const nextValue = formValues[setting.key];\n const currentValue = settingsMap[setting.key] ?? setting.value ?? null;\n\n if (nextValue instanceof File) {\n formData.append(setting.key, nextValue);\n updatedSettingsArray.push({ key: setting.key, value: \"\", type: \"system\" });\n return;\n }\n\n if (!areValuesEqual(nextValue, currentValue)) {\n updatedSettingsArray.push({\n key: setting.key,\n value: serializeValue(nextValue),\n type: \"system\",\n });\n }\n });\n\n if (!updatedSettingsArray.length) {\n dispatch(showToast({ severity: \"success\", summary: \"No Changes\", detail: \"No settings were updated\" }));\n return;\n }\n\n formData.append(\"settings\", JSON.stringify(updatedSettingsArray));\n const response = await bulkUpdateSolidSettings({ data: formData }).unwrap();\n\n if (response?.statusCode === 200) {\n dispatch(showToast({ severity: \"success\", summary: \"Updated\", detail: \"Settings updated\" }));\n if (typeof window !== \"undefined\") {\n window.dispatchEvent(new CustomEvent(\"solid:settings-updated\"));\n }\n } else {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.FAILED, detail: ERROR_MESSAGES.SOMETHING_WRONG }));\n }\n\n await refetch();\n setFilePreviews({});\n } catch (error: any) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.FAILED, detail: error?.data?.message || ERROR_MESSAGES.SOMETHING_WRONG }));\n }\n };\n\n const moduleTabs = moduleEntries.map((entry) => ({\n value: entry.moduleName,\n label: (\n <span className={styles.moduleTab}>\n <span className={styles.moduleTabBadge}>{entry.badge}</span>\n <span className={styles.moduleTabText}>\n <span className={styles.moduleTabLabel}>{entry.label}</span>\n <span className={styles.moduleTabMeta}>{entry.settings.length} settings</span>\n </span>\n </span>\n ),\n content: (\n <div>\n {groupedModuleSettings.length ? (\n groupedModuleSettings.map((group) => (\n <section key={group.key} className={styles.groupSection}>\n <div className={styles.groupCard}>\n <div className={styles.groupHeader}>\n <div>\n <h3 className={styles.groupTitle}>{group.label}</h3>\n <div className={styles.groupMeta}>{group.settings.length} item{group.settings.length === 1 ? \"\" : \"s\"}</div>\n </div>\n </div>\n <div className={styles.groupBody}>\n {group.settings.map((setting) => {\n const value = formValues[setting.key];\n const settingsWidgetName = getSettingsWidgetName(setting);\n const SettingsWidget = settingsWidgetName ? getExtensionComponent(settingsWidgetName) : null;\n const customWidgetErrorText = getCustomWidgetErrorText(setting, settingsWidgetName, SettingsWidget);\n const settingsWidgetProps: SolidSettingsWidgetProps = {\n setting,\n value,\n settingsMap,\n formValues,\n editable: Boolean(setting.editable),\n updateValue,\n updateFileValue,\n };\n return (\n <div key={setting.key} className={styles.settingRow}>\n <div className={styles.settingLabelWrap}>\n <div className={styles.settingLabelLine}>\n <p className={styles.settingLabel}>{setting.label || humanizeSettingToken(setting.key)}</p>\n {!setting.editable ? (\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <span>\n <SolidTag tone=\"warn\">Read only</SolidTag>\n </span>\n </SolidTooltipTrigger>\n <SolidTooltipContent>\n This value comes from system configuration and cannot be changed from the admin UI.\n </SolidTooltipContent>\n </SolidTooltip>\n ) : null}\n </div>\n {setting.description ? <p className={styles.settingDescription}>{setting.description}</p> : null}\n </div>\n\n {!setting.editable ? (\n setting.controlType === \"custom\" ? (\n customWidgetErrorText ? (\n <div className={styles.readonlyValue}>\n <span className={styles.customWidgetError}>{customWidgetErrorText}</span>\n </div>\n ) : SettingsWidget ? (\n (() => {\n const ResolvedSettingsWidget = SettingsWidget as ComponentType<any>;\n return <ResolvedSettingsWidget {...settingsWidgetProps} />;\n })()\n ) : null\n ) : setting.controlType === \"mediaSingle\" && value ? (\n <div className={styles.mediaPreview}>\n <SolidUploadedImage src={normalizeAssetUrl(String(value))} />\n </div>\n ) : (\n <div className={styles.readonlyValue}>\n <span className={value === null || value === undefined || value === \"\" ? styles.emptyValue : undefined}>\n {formatReadonlyValue(setting, value)}\n </span>\n </div>\n )\n ) : (\n <div className={`${styles.controlStack} ${setting.controlType === \"custom\" ? styles.customControlStack : \"\"}`}>\n {setting.controlType === \"boolean\" ? (\n <div className={styles.boolRow}>\n <SolidSwitch checked={Boolean(value)} onChange={(checked) => updateValue(setting.key, checked)} />\n <span className={styles.boolText}>{value ? \"Enabled\" : \"Disabled\"}</span>\n </div>\n ) : null}\n\n {setting.controlType === \"shortText\" ? (\n <SolidInput\n type=\"text\"\n value={value == null ? \"\" : String(value)}\n placeholder={setting.placeholder || setting.label}\n onChange={(event: any) => updateValue(setting.key, event.target.value)}\n />\n ) : null}\n\n {setting.controlType === \"longText\" ? (\n <SolidTextarea\n rows={4}\n value={value == null ? \"\" : typeof value === \"string\" ? value : JSON.stringify(value, null, 2)}\n placeholder={setting.placeholder || setting.label}\n onChange={(event: any) => updateValue(setting.key, event.target.value)}\n />\n ) : null}\n\n {setting.controlType === \"numeric\" ? (\n <SolidInput\n type=\"number\"\n value={value == null ? \"\" : String(value)}\n placeholder={setting.placeholder || setting.label}\n onChange={(event: any) => updateValue(setting.key, event.target.value === \"\" ? null : Number(event.target.value))}\n />\n ) : null}\n\n {setting.controlType === \"selectionStatic\" ? (\n <SolidSelect\n value={value}\n options={setting.options || []}\n placeholder={setting.placeholder || \"Select\"}\n onChange={(event) => updateValue(setting.key, event.value)}\n />\n ) : null}\n\n {setting.controlType === \"date\" || setting.controlType === \"datetime\" ? (\n <SolidDatePicker\n selected={value ? new Date(String(value)) : null}\n showTimeSelect={setting.controlType === \"datetime\"}\n dateFormat={setting.controlType === \"datetime\" ? \"yyyy-MM-dd HH:mm:ss\" : \"yyyy-MM-dd\"}\n onChange={(date: Date | null) => updateValue(setting.key, date instanceof Date ? date.toISOString() : null)}\n />\n ) : null}\n\n {setting.controlType === \"mediaSingle\" ? (\n <div className={styles.mediaField}>\n <div className={styles.mediaComposer}>\n <label className={styles.mediaDropzone}>\n <input\n className={styles.mediaInput}\n type=\"file\"\n accept=\".png,.jpg,.jpeg,.svg,.webp\"\n onChange={(event) => updateFileValue(setting.key, event.target.files?.[0] ?? null)}\n />\n <SettingDropzoneActivePlaceholder note=\"PNG, JPG, JPEG, SVG, WEBP | Max size: 2 MB\" />\n </label>\n {(filePreviews[setting.key] || value) ? (\n <div className={styles.mediaPreview}>\n <SolidUploadedImage src={filePreviews[setting.key] || normalizeAssetUrl(String(value))} />\n </div>\n ) : (\n <div className={styles.mediaEmptyState}>Preview appears here after upload</div>\n )}\n </div>\n {(filePreviews[setting.key] || value) ? (\n <SettingsImageRemoveButton onClick={() => updateFileValue(setting.key, null)} />\n ) : null}\n </div>\n ) : null}\n\n {setting.controlType === \"custom\" ? (\n customWidgetErrorText ? (\n <div className={styles.readonlyValue}>\n <span className={styles.customWidgetError}>{customWidgetErrorText}</span>\n </div>\n ) : SettingsWidget ? (\n (() => {\n const ResolvedSettingsWidget = SettingsWidget as ComponentType<any>;\n return <ResolvedSettingsWidget {...settingsWidgetProps} />;\n })()\n ) : null\n ) : null}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </section>\n ))\n ) : (\n <div className={styles.emptyState}>No settings match the current filter.</div>\n )}\n </div>\n ),\n }));\n\n return (\n <div className={styles.page}>\n <div className={`page-header secondary-border-bottom ${styles.pageHeader}`}>\n <div className={styles.headerIntro}>\n <div className=\"form-wrapper-title\">Settings</div>\n <div className={styles.subtitle}>Manage platform configuration across modules from a single workspace.</div>\n <div className={styles.summaryChips}>\n <span className={styles.summaryChip}>{moduleEntries.length} module{moduleEntries.length === 1 ? \"\" : \"s\"}</span>\n <span className={styles.summaryChip}>{totalSettingsCount} setting{totalSettingsCount === 1 ? \"\" : \"s\"}</span>\n <button\n type=\"button\"\n className={`${styles.summaryChip} ${styles.summaryChipButton} ${filterMode === \"editable\" ? styles.summaryChipActive : \"\"}`}\n aria-pressed={filterMode === \"editable\"}\n onClick={() => setFilterMode((current) => (current === \"editable\" ? \"all\" : \"editable\"))}\n >\n {editableSettingsCount} editable\n </button>\n </div>\n </div>\n <div className={styles.headerSearch}>\n <div className={styles.searchIcon}>\n <Search size={16} />\n <SolidInput\n className={styles.searchInput}\n value={searchTerm}\n placeholder=\"Search settings, groups, or modules\"\n onChange={(event: any) => setSearchTerm(event.target.value)}\n />\n </div>\n {searchTerm ? (\n <span className={styles.resultsMeta}>\n {filteredSettings.length} result{filteredSettings.length === 1 ? \"\" : \"s\"}\n </span>\n ) : null}\n </div>\n <div className={styles.toolbarActions}>\n <div className={styles.legend}>\n <button\n type=\"button\"\n className={`${styles.readonlyFilterButton} ${filterMode === \"read-only\" ? styles.readonlyFilterButtonActive : \"\"}`}\n aria-pressed={filterMode === \"read-only\"}\n aria-label={filterMode === \"read-only\" ? \"Disable read-only filter\" : \"Enable read-only filter\"}\n onClick={() => setFilterMode((current) => (current === \"read-only\" ? \"all\" : \"read-only\"))}\n >\n <SolidTag tone=\"warn\">Read only</SolidTag>\n </button>\n <span className={filterMode === \"read-only\" ? styles.legendLabelActive : undefined}>\n {filterMode === \"read-only\" ? \"Read-only filter active\" : \"System-managed value\"}\n </span>\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <button type=\"button\" className={styles.legendButton} aria-label=\"Read-only legend details\">\n i\n </button>\n </SolidTooltipTrigger>\n <SolidTooltipContent>\n Read-only settings are visible here for context, but can only be changed through environment or backend configuration.\n </SolidTooltipContent>\n </SolidTooltip>\n </div>\n <SolidButton size=\"sm\" type=\"button\" loading={false} onClick={handleSave} disabled={!hasChanges}>\n Save\n </SolidButton>\n </div>\n </div>\n\n <div className={styles.workspace}>\n {moduleTabs.length ? (\n <SolidTabGroup\n tabs={moduleTabs}\n value={activeModule}\n onValueChange={setActiveModule}\n className={styles.tabGroup}\n listClassName={styles.tabList}\n panelClassName={styles.tabPanel}\n orientation=\"vertical\"\n />\n ) : (\n <div className={styles.emptyState}>No settings are available.</div>\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -295,6 +295,9 @@ export function SettingsComponent() {
|
|
|
295
295
|
|
|
296
296
|
if (response?.statusCode === 200) {
|
|
297
297
|
dispatch(showToast({ severity: "success", summary: "Updated", detail: "Settings updated" }));
|
|
298
|
+
if (typeof window !== "undefined") {
|
|
299
|
+
window.dispatchEvent(new CustomEvent("solid:settings-updated"));
|
|
300
|
+
}
|
|
298
301
|
} else {
|
|
299
302
|
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.FAILED, detail: ERROR_MESSAGES.SOMETHING_WRONG }));
|
|
300
303
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocialMediaLogin.d.ts","sourceRoot":"","sources":["../../../src/components/common/SocialMediaLogin.tsx"],"names":[],"mappings":"AAIA,KAAK,qBAAqB,GAAG;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,wEAK1B,qBAAqB,
|
|
1
|
+
{"version":3,"file":"SocialMediaLogin.d.ts","sourceRoot":"","sources":["../../../src/components/common/SocialMediaLogin.tsx"],"names":[],"mappings":"AAIA,KAAK,qBAAqB,GAAG;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,wEAK1B,qBAAqB,4CAqHvB,CAAC"}
|
|
@@ -9,6 +9,6 @@ export var SocialMediaLogin = function (_a) {
|
|
|
9
9
|
var facebookApiConnectRedirectUrl = "".concat(env("NEXT_PUBLIC_BACKEND_API_URL"), "/api/iam/facebook/connect");
|
|
10
10
|
var appleApiConnectRedirectUrl = "".concat(env("NEXT_PUBLIC_BACKEND_API_URL"), "/api/iam/apple/connect");
|
|
11
11
|
var microsoftApiConnectRedirectUrl = "".concat(env("NEXT_PUBLIC_BACKEND_API_URL"), "/api/iam/microsoft/connect");
|
|
12
|
-
return (_jsx("div", { className: "mt-4", children: _jsxs("div", { className: "solid-auth-social-grid", children: [appleEnabled && (_jsx(SolidButton, { type: "button", variant: "outline", className: "solid-auth-social-btn", onClick: function () { return router.push(appleApiConnectRedirectUrl); }, "aria-label": "Login with Apple", children: _jsx("svg", { viewBox: "0 0 24 24", width: "18", height: "18", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701" }) }) })), googleEnabled && (_jsx(SolidButton, { type: "button", variant: "outline", className: "solid-auth-social-btn", onClick: function () { return router.push(googleApiConnectRedirectUrl); }, "aria-label": "Login with Google", children: _jsxs("svg", { viewBox: "0 0 24 24", width: "18", height: "18", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M21.8 12.23c0-.74-.07-1.45-.2-2.13H12v4.03h5.5a4.7 4.7 0 0 1-2.04 3.08v2.55h3.3c1.93-1.78 3.04-4.4 3.04-7.53z", fill: "#4285F4" }), _jsx("path", { d: "M12 22c2.75 0 5.05-.91 6.73-2.47l-3.3-2.55c-.92.62-2.1.99-3.43.99-2.64 0-4.88-1.78-5.68-4.18H2.9v2.63A10 10 0 0 0 12 22z", fill: "#34A853" }), _jsx("path", { d: "M6.32 13.79a6 6 0 0 1 0-3.58V7.58H2.9a10 10 0 0 0 0 8.84l3.42-2.63z", fill: "#FBBC05" }), _jsx("path", { d: "M12 6.02c1.49 0 2.82.51 3.87 1.5l2.9-2.9C17.04 2.98 14.74 2 12 2A10 10 0 0 0 2.9 7.58l3.42 2.63c.8-2.4 3.04-4.19 5.68-4.19z", fill: "#EA4335" })] }) })), facebookEnabled && (_jsx(SolidButton, { type: "button", variant: "outline", className: "solid-auth-social-btn", onClick: function () { return router.push(facebookApiConnectRedirectUrl); }, "aria-label": "Login with Meta", children: _jsx("svg", { viewBox: "0 0 24 24", width: "18", height: "18", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M5.4 15.6c0-3.14 1.62-7.09 3.76-7.09 1.43 0 2.56 1.72 2.84 2.25.28-.53 1.41-2.25 2.84-2.25 2.14 0 3.76 3.95 3.76 7.09 0 1.79-.63 2.89-1.82 2.89-2.12 0-3.75-3.02-4.78-4.82-1.03 1.8-2.66 4.82-4.78 4.82-1.19 0-1.82-1.1-1.82-2.89z", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) })), microsoftEnabled && (_jsx(SolidButton, { type: "button", variant: "outline", className: "solid-auth-social-btn", onClick: function () { return router.push(microsoftApiConnectRedirectUrl); }, "aria-label": "Login with Microsoft", children: _jsx("svg", { viewBox: "0 0 24 24", width: "18", height: "18", "aria-hidden": "true", children: _jsxs("g", { transform: "translate(2, 2)", children: [_jsx("rect", { width: "9", height: "9", x: "0", y: "0", fill: "#f25022" }), _jsx("rect", { width: "9", height: "9", x: "11", y: "0", fill: "#7fba00" }), _jsx("rect", { width: "9", height: "9", x: "0", y: "11", fill: "#00a4ef" }), _jsx("rect", { width: "9", height: "9", x: "11", y: "11", fill: "#ffb900" })] }) }) }))] }) }));
|
|
12
|
+
return (_jsx("div", { className: "mt-4", children: _jsxs("div", { className: "solid-auth-social-grid", children: [appleEnabled && (_jsx(SolidButton, { type: "button", variant: "outline", className: "solid-auth-social-btn", tabIndex: -1, onClick: function () { return router.push(appleApiConnectRedirectUrl); }, "aria-label": "Login with Apple", children: _jsx("svg", { viewBox: "0 0 24 24", width: "18", height: "18", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701" }) }) })), googleEnabled && (_jsx(SolidButton, { type: "button", variant: "outline", className: "solid-auth-social-btn", tabIndex: -1, onClick: function () { return router.push(googleApiConnectRedirectUrl); }, "aria-label": "Login with Google", children: _jsxs("svg", { viewBox: "0 0 24 24", width: "18", height: "18", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M21.8 12.23c0-.74-.07-1.45-.2-2.13H12v4.03h5.5a4.7 4.7 0 0 1-2.04 3.08v2.55h3.3c1.93-1.78 3.04-4.4 3.04-7.53z", fill: "#4285F4" }), _jsx("path", { d: "M12 22c2.75 0 5.05-.91 6.73-2.47l-3.3-2.55c-.92.62-2.1.99-3.43.99-2.64 0-4.88-1.78-5.68-4.18H2.9v2.63A10 10 0 0 0 12 22z", fill: "#34A853" }), _jsx("path", { d: "M6.32 13.79a6 6 0 0 1 0-3.58V7.58H2.9a10 10 0 0 0 0 8.84l3.42-2.63z", fill: "#FBBC05" }), _jsx("path", { d: "M12 6.02c1.49 0 2.82.51 3.87 1.5l2.9-2.9C17.04 2.98 14.74 2 12 2A10 10 0 0 0 2.9 7.58l3.42 2.63c.8-2.4 3.04-4.19 5.68-4.19z", fill: "#EA4335" })] }) })), facebookEnabled && (_jsx(SolidButton, { type: "button", variant: "outline", className: "solid-auth-social-btn", tabIndex: -1, onClick: function () { return router.push(facebookApiConnectRedirectUrl); }, "aria-label": "Login with Meta", children: _jsx("svg", { viewBox: "0 0 24 24", width: "18", height: "18", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M5.4 15.6c0-3.14 1.62-7.09 3.76-7.09 1.43 0 2.56 1.72 2.84 2.25.28-.53 1.41-2.25 2.84-2.25 2.14 0 3.76 3.95 3.76 7.09 0 1.79-.63 2.89-1.82 2.89-2.12 0-3.75-3.02-4.78-4.82-1.03 1.8-2.66 4.82-4.78 4.82-1.19 0-1.82-1.1-1.82-2.89z", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }) })), microsoftEnabled && (_jsx(SolidButton, { type: "button", variant: "outline", className: "solid-auth-social-btn", tabIndex: -1, onClick: function () { return router.push(microsoftApiConnectRedirectUrl); }, "aria-label": "Login with Microsoft", children: _jsx("svg", { viewBox: "0 0 24 24", width: "18", height: "18", "aria-hidden": "true", children: _jsxs("g", { transform: "translate(2, 2)", children: [_jsx("rect", { width: "9", height: "9", x: "0", y: "0", fill: "#f25022" }), _jsx("rect", { width: "9", height: "9", x: "11", y: "0", fill: "#7fba00" }), _jsx("rect", { width: "9", height: "9", x: "0", y: "11", fill: "#00a4ef" }), _jsx("rect", { width: "9", height: "9", x: "11", y: "11", fill: "#ffb900" })] }) }) }))] }) }));
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=SocialMediaLogin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocialMediaLogin.js","sourceRoot":"","sources":["../../../src/components/common/SocialMediaLogin.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useRouter } from \"../../hooks/useRouter\";\nimport { env } from \"../../adapters/env\";\nimport { SolidButton } from \"../shad-cn-ui\";\n\ntype SocialMediaLoginProps = {\n googleEnabled?: boolean;\n facebookEnabled?: boolean;\n appleEnabled?: boolean;\n microsoftEnabled?: boolean;\n};\n\nexport const SocialMediaLogin = ({\n googleEnabled = false,\n facebookEnabled = false,\n appleEnabled = false,\n microsoftEnabled = false,\n}: SocialMediaLoginProps) => {\n const router = useRouter();\n\n const googleApiConnectRedirectUrl = `${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/iam/google/connect`;\n const facebookApiConnectRedirectUrl = `${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/iam/facebook/connect`;\n const appleApiConnectRedirectUrl = `${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/iam/apple/connect`;\n const microsoftApiConnectRedirectUrl = `${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/iam/microsoft/connect`;\n\n return (\n <div className=\"mt-4\">\n <div className=\"solid-auth-social-grid\">\n {appleEnabled && (\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n className=\"solid-auth-social-btn\"\n onClick={() => router.push(appleApiConnectRedirectUrl)}\n aria-label=\"Login with Apple\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\" />\n </svg>\n </SolidButton>\n )}\n\n {googleEnabled && (\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n className=\"solid-auth-social-btn\"\n onClick={() => router.push(googleApiConnectRedirectUrl)}\n aria-label=\"Login with Google\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M21.8 12.23c0-.74-.07-1.45-.2-2.13H12v4.03h5.5a4.7 4.7 0 0 1-2.04 3.08v2.55h3.3c1.93-1.78 3.04-4.4 3.04-7.53z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 22c2.75 0 5.05-.91 6.73-2.47l-3.3-2.55c-.92.62-2.1.99-3.43.99-2.64 0-4.88-1.78-5.68-4.18H2.9v2.63A10 10 0 0 0 12 22z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M6.32 13.79a6 6 0 0 1 0-3.58V7.58H2.9a10 10 0 0 0 0 8.84l3.42-2.63z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 6.02c1.49 0 2.82.51 3.87 1.5l2.9-2.9C17.04 2.98 14.74 2 12 2A10 10 0 0 0 2.9 7.58l3.42 2.63c.8-2.4 3.04-4.19 5.68-4.19z\"\n fill=\"#EA4335\"\n />\n </svg>\n </SolidButton>\n )}\n\n {facebookEnabled && (\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n className=\"solid-auth-social-btn\"\n onClick={() => router.push(facebookApiConnectRedirectUrl)}\n aria-label=\"Login with Meta\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5.4 15.6c0-3.14 1.62-7.09 3.76-7.09 1.43 0 2.56 1.72 2.84 2.25.28-.53 1.41-2.25 2.84-2.25 2.14 0 3.76 3.95 3.76 7.09 0 1.79-.63 2.89-1.82 2.89-2.12 0-3.75-3.02-4.78-4.82-1.03 1.8-2.66 4.82-4.78 4.82-1.19 0-1.82-1.1-1.82-2.89z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </SolidButton>\n )}\n\n {microsoftEnabled && (\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n className=\"solid-auth-social-btn\"\n onClick={() => router.push(microsoftApiConnectRedirectUrl)}\n aria-label=\"Login with Microsoft\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <g transform=\"translate(2, 2)\">\n <rect width=\"9\" height=\"9\" x=\"0\" y=\"0\" fill=\"#f25022\" />\n <rect width=\"9\" height=\"9\" x=\"11\" y=\"0\" fill=\"#7fba00\" />\n <rect width=\"9\" height=\"9\" x=\"0\" y=\"11\" fill=\"#00a4ef\" />\n <rect width=\"9\" height=\"9\" x=\"11\" y=\"11\" fill=\"#ffb900\" />\n </g>\n </svg>\n </SolidButton>\n )}\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SocialMediaLogin.js","sourceRoot":"","sources":["../../../src/components/common/SocialMediaLogin.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useRouter } from \"../../hooks/useRouter\";\nimport { env } from \"../../adapters/env\";\nimport { SolidButton } from \"../shad-cn-ui\";\n\ntype SocialMediaLoginProps = {\n googleEnabled?: boolean;\n facebookEnabled?: boolean;\n appleEnabled?: boolean;\n microsoftEnabled?: boolean;\n};\n\nexport const SocialMediaLogin = ({\n googleEnabled = false,\n facebookEnabled = false,\n appleEnabled = false,\n microsoftEnabled = false,\n}: SocialMediaLoginProps) => {\n const router = useRouter();\n\n const googleApiConnectRedirectUrl = `${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/iam/google/connect`;\n const facebookApiConnectRedirectUrl = `${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/iam/facebook/connect`;\n const appleApiConnectRedirectUrl = `${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/iam/apple/connect`;\n const microsoftApiConnectRedirectUrl = `${env(\"NEXT_PUBLIC_BACKEND_API_URL\")}/api/iam/microsoft/connect`;\n\n return (\n <div className=\"mt-4\">\n <div className=\"solid-auth-social-grid\">\n {appleEnabled && (\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n className=\"solid-auth-social-btn\"\n tabIndex={-1}\n onClick={() => router.push(appleApiConnectRedirectUrl)}\n aria-label=\"Login with Apple\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\" />\n </svg>\n </SolidButton>\n )}\n\n {googleEnabled && (\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n className=\"solid-auth-social-btn\"\n tabIndex={-1}\n onClick={() => router.push(googleApiConnectRedirectUrl)}\n aria-label=\"Login with Google\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M21.8 12.23c0-.74-.07-1.45-.2-2.13H12v4.03h5.5a4.7 4.7 0 0 1-2.04 3.08v2.55h3.3c1.93-1.78 3.04-4.4 3.04-7.53z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12 22c2.75 0 5.05-.91 6.73-2.47l-3.3-2.55c-.92.62-2.1.99-3.43.99-2.64 0-4.88-1.78-5.68-4.18H2.9v2.63A10 10 0 0 0 12 22z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M6.32 13.79a6 6 0 0 1 0-3.58V7.58H2.9a10 10 0 0 0 0 8.84l3.42-2.63z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12 6.02c1.49 0 2.82.51 3.87 1.5l2.9-2.9C17.04 2.98 14.74 2 12 2A10 10 0 0 0 2.9 7.58l3.42 2.63c.8-2.4 3.04-4.19 5.68-4.19z\"\n fill=\"#EA4335\"\n />\n </svg>\n </SolidButton>\n )}\n\n {facebookEnabled && (\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n className=\"solid-auth-social-btn\"\n tabIndex={-1}\n onClick={() => router.push(facebookApiConnectRedirectUrl)}\n aria-label=\"Login with Meta\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5.4 15.6c0-3.14 1.62-7.09 3.76-7.09 1.43 0 2.56 1.72 2.84 2.25.28-.53 1.41-2.25 2.84-2.25 2.14 0 3.76 3.95 3.76 7.09 0 1.79-.63 2.89-1.82 2.89-2.12 0-3.75-3.02-4.78-4.82-1.03 1.8-2.66 4.82-4.78 4.82-1.19 0-1.82-1.1-1.82-2.89z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </SolidButton>\n )}\n\n {microsoftEnabled && (\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n className=\"solid-auth-social-btn\"\n tabIndex={-1}\n onClick={() => router.push(microsoftApiConnectRedirectUrl)}\n aria-label=\"Login with Microsoft\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <g transform=\"translate(2, 2)\">\n <rect width=\"9\" height=\"9\" x=\"0\" y=\"0\" fill=\"#f25022\" />\n <rect width=\"9\" height=\"9\" x=\"11\" y=\"0\" fill=\"#7fba00\" />\n <rect width=\"9\" height=\"9\" x=\"0\" y=\"11\" fill=\"#00a4ef\" />\n <rect width=\"9\" height=\"9\" x=\"11\" y=\"11\" fill=\"#ffb900\" />\n </g>\n </svg>\n </SolidButton>\n )}\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -30,6 +30,7 @@ export const SocialMediaLogin = ({
|
|
|
30
30
|
type="button"
|
|
31
31
|
variant="outline"
|
|
32
32
|
className="solid-auth-social-btn"
|
|
33
|
+
tabIndex={-1}
|
|
33
34
|
onClick={() => router.push(appleApiConnectRedirectUrl)}
|
|
34
35
|
aria-label="Login with Apple"
|
|
35
36
|
>
|
|
@@ -50,6 +51,7 @@ export const SocialMediaLogin = ({
|
|
|
50
51
|
type="button"
|
|
51
52
|
variant="outline"
|
|
52
53
|
className="solid-auth-social-btn"
|
|
54
|
+
tabIndex={-1}
|
|
53
55
|
onClick={() => router.push(googleApiConnectRedirectUrl)}
|
|
54
56
|
aria-label="Login with Google"
|
|
55
57
|
>
|
|
@@ -85,6 +87,7 @@ export const SocialMediaLogin = ({
|
|
|
85
87
|
type="button"
|
|
86
88
|
variant="outline"
|
|
87
89
|
className="solid-auth-social-btn"
|
|
90
|
+
tabIndex={-1}
|
|
88
91
|
onClick={() => router.push(facebookApiConnectRedirectUrl)}
|
|
89
92
|
aria-label="Login with Meta"
|
|
90
93
|
>
|
|
@@ -111,6 +114,7 @@ export const SocialMediaLogin = ({
|
|
|
111
114
|
type="button"
|
|
112
115
|
variant="outline"
|
|
113
116
|
className="solid-auth-social-btn"
|
|
117
|
+
tabIndex={-1}
|
|
114
118
|
onClick={() => router.push(microsoftApiConnectRedirectUrl)}
|
|
115
119
|
aria-label="Login with Microsoft"
|
|
116
120
|
>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidFaviconProvider.d.ts","sourceRoot":"","sources":["../../../src/components/common/SolidFaviconProvider.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,4BAA4B,2BAA2B,CAAC;AA2BrE,eAAO,MAAM,oBAAoB,YAqBhC,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { useCallback, useEffect } from "react";
|
|
38
|
+
import { solidGet } from "../../http/solidHttp";
|
|
39
|
+
import { toLegacySettingsShape } from "../../helpers/settingsPayload";
|
|
40
|
+
import { env } from "../../adapters/env";
|
|
41
|
+
var FAVICON_LINK_ID = "solid-dynamic-favicon";
|
|
42
|
+
export var SOLID_SETTINGS_UPDATED_EVENT = "solid:settings-updated";
|
|
43
|
+
var normalizeAssetUrl = function (src) {
|
|
44
|
+
if (!src)
|
|
45
|
+
return "";
|
|
46
|
+
if (src.startsWith("blob:") || src.startsWith("http") || src.startsWith("/"))
|
|
47
|
+
return src;
|
|
48
|
+
return "".concat(env("API_URL"), "/").concat(src);
|
|
49
|
+
};
|
|
50
|
+
var applyFavicon = function (href) {
|
|
51
|
+
if (typeof document === "undefined" || !href)
|
|
52
|
+
return;
|
|
53
|
+
document.head
|
|
54
|
+
.querySelectorAll('link[rel~="icon"], link[rel="shortcut icon"]')
|
|
55
|
+
.forEach(function (link) {
|
|
56
|
+
var _a;
|
|
57
|
+
if (link.id !== FAVICON_LINK_ID)
|
|
58
|
+
(_a = link.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(link);
|
|
59
|
+
});
|
|
60
|
+
var link = document.getElementById(FAVICON_LINK_ID);
|
|
61
|
+
if (!link) {
|
|
62
|
+
link = document.createElement("link");
|
|
63
|
+
link.id = FAVICON_LINK_ID;
|
|
64
|
+
link.rel = "icon";
|
|
65
|
+
document.head.appendChild(link);
|
|
66
|
+
}
|
|
67
|
+
link.href = href;
|
|
68
|
+
};
|
|
69
|
+
export var SolidFaviconProvider = function () {
|
|
70
|
+
var refresh = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
71
|
+
var response, settings, favicon, href, error_1;
|
|
72
|
+
var _a, _b;
|
|
73
|
+
return __generator(this, function (_c) {
|
|
74
|
+
switch (_c.label) {
|
|
75
|
+
case 0:
|
|
76
|
+
_c.trys.push([0, 2, , 3]);
|
|
77
|
+
return [4 /*yield*/, solidGet("/setting/wrapped")];
|
|
78
|
+
case 1:
|
|
79
|
+
response = _c.sent();
|
|
80
|
+
settings = toLegacySettingsShape((_a = response === null || response === void 0 ? void 0 : response.data) !== null && _a !== void 0 ? _a : null);
|
|
81
|
+
favicon = (_b = settings === null || settings === void 0 ? void 0 : settings.data) === null || _b === void 0 ? void 0 : _b.favicon;
|
|
82
|
+
href = normalizeAssetUrl(favicon);
|
|
83
|
+
if (href)
|
|
84
|
+
applyFavicon(href);
|
|
85
|
+
return [3 /*break*/, 3];
|
|
86
|
+
case 2:
|
|
87
|
+
error_1 = _c.sent();
|
|
88
|
+
console.error("[SolidFaviconProvider] Failed to load favicon setting", error_1);
|
|
89
|
+
return [3 /*break*/, 3];
|
|
90
|
+
case 3: return [2 /*return*/];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}); }, []);
|
|
94
|
+
useEffect(function () {
|
|
95
|
+
refresh();
|
|
96
|
+
var handler = function () { return refresh(); };
|
|
97
|
+
window.addEventListener(SOLID_SETTINGS_UPDATED_EVENT, handler);
|
|
98
|
+
return function () { return window.removeEventListener(SOLID_SETTINGS_UPDATED_EVENT, handler); };
|
|
99
|
+
}, [refresh]);
|
|
100
|
+
return null;
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=SolidFaviconProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidFaviconProvider.js","sourceRoot":"","sources":["../../../src/components/common/SolidFaviconProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,IAAM,eAAe,GAAG,uBAAuB,CAAC;AAChD,MAAM,CAAC,IAAM,4BAA4B,GAAG,wBAAwB,CAAC;AAErE,IAAM,iBAAiB,GAAG,UAAC,GAAmB;IAC1C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACzF,OAAO,UAAG,GAAG,CAAC,SAAS,CAAC,cAAI,GAAG,CAAE,CAAC;AACtC,CAAC,CAAC;AAEF,IAAM,YAAY,GAAG,UAAC,IAAY;IAC9B,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,IAAI;QAAE,OAAO;IAErD,QAAQ,CAAC,IAAI;SACR,gBAAgB,CAAkB,8CAA8C,CAAC;SACjF,OAAO,CAAC,UAAC,IAAI;;QACV,IAAI,IAAI,CAAC,EAAE,KAAK,eAAe;YAAE,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEP,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAA2B,CAAC;IAC9E,IAAI,CAAC,IAAI,EAAE;QACP,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACnC;IACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,oBAAoB,GAAG;IAChC,IAAM,OAAO,GAAG,WAAW,CAAC;;;;;;;oBAEH,qBAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAA;;oBAA7C,QAAQ,GAAG,SAAkC;oBAC7C,QAAQ,GAAG,qBAAqB,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,mCAAI,IAAI,CAAC,CAAC;oBACzD,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,OAAO,CAAC;oBAClC,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBACxC,IAAI,IAAI;wBAAE,YAAY,CAAC,IAAI,CAAC,CAAC;;;;oBAE7B,OAAO,CAAC,KAAK,CAAC,uDAAuD,EAAE,OAAK,CAAC,CAAC;;;;;SAErF,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC;QACN,OAAO,EAAE,CAAC;QACV,IAAM,OAAO,GAAG,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC;QAChC,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,cAAM,OAAA,MAAM,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,OAAO,CAAC,EAAjE,CAAiE,CAAC;IACnF,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import { useCallback, useEffect } from \"react\";\nimport { solidGet } from \"../../http/solidHttp\";\nimport { toLegacySettingsShape } from \"../../helpers/settingsPayload\";\nimport { env } from \"../../adapters/env\";\n\nconst FAVICON_LINK_ID = \"solid-dynamic-favicon\";\nexport const SOLID_SETTINGS_UPDATED_EVENT = \"solid:settings-updated\";\n\nconst normalizeAssetUrl = (src?: string | null) => {\n if (!src) return \"\";\n if (src.startsWith(\"blob:\") || src.startsWith(\"http\") || src.startsWith(\"/\")) return src;\n return `${env(\"API_URL\")}/${src}`;\n};\n\nconst applyFavicon = (href: string) => {\n if (typeof document === \"undefined\" || !href) return;\n\n document.head\n .querySelectorAll<HTMLLinkElement>('link[rel~=\"icon\"], link[rel=\"shortcut icon\"]')\n .forEach((link) => {\n if (link.id !== FAVICON_LINK_ID) link.parentNode?.removeChild(link);\n });\n\n let link = document.getElementById(FAVICON_LINK_ID) as HTMLLinkElement | null;\n if (!link) {\n link = document.createElement(\"link\");\n link.id = FAVICON_LINK_ID;\n link.rel = \"icon\";\n document.head.appendChild(link);\n }\n link.href = href;\n};\n\nexport const SolidFaviconProvider = () => {\n const refresh = useCallback(async () => {\n try {\n const response = await solidGet(\"/setting/wrapped\");\n const settings = toLegacySettingsShape(response?.data ?? null);\n const favicon = settings?.data?.favicon;\n const href = normalizeAssetUrl(favicon);\n if (href) applyFavicon(href);\n } catch (error) {\n console.error(\"[SolidFaviconProvider] Failed to load favicon setting\", error);\n }\n }, []);\n\n useEffect(() => {\n refresh();\n const handler = () => refresh();\n window.addEventListener(SOLID_SETTINGS_UPDATED_EVENT, handler);\n return () => window.removeEventListener(SOLID_SETTINGS_UPDATED_EVENT, handler);\n }, [refresh]);\n\n return null;\n};\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useCallback, useEffect } from "react";
|
|
2
|
+
import { solidGet } from "../../http/solidHttp";
|
|
3
|
+
import { toLegacySettingsShape } from "../../helpers/settingsPayload";
|
|
4
|
+
import { env } from "../../adapters/env";
|
|
5
|
+
|
|
6
|
+
const FAVICON_LINK_ID = "solid-dynamic-favicon";
|
|
7
|
+
export const SOLID_SETTINGS_UPDATED_EVENT = "solid:settings-updated";
|
|
8
|
+
|
|
9
|
+
const normalizeAssetUrl = (src?: string | null) => {
|
|
10
|
+
if (!src) return "";
|
|
11
|
+
if (src.startsWith("blob:") || src.startsWith("http") || src.startsWith("/")) return src;
|
|
12
|
+
return `${env("API_URL")}/${src}`;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const applyFavicon = (href: string) => {
|
|
16
|
+
if (typeof document === "undefined" || !href) return;
|
|
17
|
+
|
|
18
|
+
document.head
|
|
19
|
+
.querySelectorAll<HTMLLinkElement>('link[rel~="icon"], link[rel="shortcut icon"]')
|
|
20
|
+
.forEach((link) => {
|
|
21
|
+
if (link.id !== FAVICON_LINK_ID) link.parentNode?.removeChild(link);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
let link = document.getElementById(FAVICON_LINK_ID) as HTMLLinkElement | null;
|
|
25
|
+
if (!link) {
|
|
26
|
+
link = document.createElement("link");
|
|
27
|
+
link.id = FAVICON_LINK_ID;
|
|
28
|
+
link.rel = "icon";
|
|
29
|
+
document.head.appendChild(link);
|
|
30
|
+
}
|
|
31
|
+
link.href = href;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const SolidFaviconProvider = () => {
|
|
35
|
+
const refresh = useCallback(async () => {
|
|
36
|
+
try {
|
|
37
|
+
const response = await solidGet("/setting/wrapped");
|
|
38
|
+
const settings = toLegacySettingsShape(response?.data ?? null);
|
|
39
|
+
const favicon = settings?.data?.favicon;
|
|
40
|
+
const href = normalizeAssetUrl(favicon);
|
|
41
|
+
if (href) applyFavicon(href);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error("[SolidFaviconProvider] Failed to load favicon setting", error);
|
|
44
|
+
}
|
|
45
|
+
}, []);
|
|
46
|
+
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
refresh();
|
|
49
|
+
const handler = () => refresh();
|
|
50
|
+
window.addEventListener(SOLID_SETTINGS_UPDATED_EVENT, handler);
|
|
51
|
+
return () => window.removeEventListener(SOLID_SETTINGS_UPDATED_EVENT, handler);
|
|
52
|
+
}, [refresh]);
|
|
53
|
+
|
|
54
|
+
return null;
|
|
55
|
+
};
|
|
@@ -358,7 +358,7 @@ export var SolidCardView = function (params) {
|
|
|
358
358
|
var cardViewTitle = (_b = (_a = solidCardViewMetaDataResponse === null || solidCardViewMetaDataResponse === void 0 ? void 0 : solidCardViewMetaDataResponse.data) === null || _a === void 0 ? void 0 : _a.solidView) === null || _b === void 0 ? void 0 : _b.displayName;
|
|
359
359
|
var showEmptyState = !loading && cards.length === 0;
|
|
360
360
|
var headerRequestStatusLabel = loading || !queryDataLoaded ? "Loading..." : null;
|
|
361
|
-
return (_jsxs("div", { className: "page-parent-wrapper solid-list-page-wrapper flex h-full min-h-0 overflow-hidden", children: [_jsx("div", { className: "solid-list-content h-full flex
|
|
361
|
+
return (_jsxs("div", { className: "page-parent-wrapper solid-list-page-wrapper flex h-full min-h-0 overflow-hidden", children: [_jsx("div", { className: "solid-list-content h-full flex way to flex-grow-1", children: _jsxs("div", { className: "solid-list-surface solid-card-surface flex flex-column flex-1 min-h-0", children: [_jsxs("div", { className: "page-header solid-list-toolbar solid-card-toolbar flex-column lg:flex-row", children: [_jsxs("div", { className: "flex justify-content-between w-full", children: [_jsxs("div", { className: "flex gap-3 align-items-center w-full solid-list-toolbar-left", children: [params.embeded !== true && (_jsx("div", { className: "apps-icon block md:hidden cursor-pointer", onClick: toggleBothSidebars, children: _jsx(SolidIcon, { name: "si-th-large", "aria-hidden": true }) })), _jsx("p", { className: "m-0 view-title solid-text-wrapper", children: cardViewTitle }), _jsx("div", { className: "hidden lg:flex", children: _jsx(SolidGlobalSearchElement, { viewType: "card", showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidCardViewMetaDataResponse, handleApplyCustomFilter: handleApplyCustomFilter }) })] }), _jsxs("div", { className: "flex align-items-center solid-header-buttons-wrapper solid-list-toolbar-actions", children: [_jsx(SolidHeaderRequestStatus, { label: headerRequestStatusLabel }), _jsx("div", { className: "flex lg:hidden", children: _jsx(SolidButton, { type: "button", variant: "outline", size: "sm", className: "solid-icon-button", onClick: function () { return setShowGlobalSearchElement(!showGlobalSearchElement); }, "aria-label": "Toggle search", leftIcon: _jsx(SolidIcon, { name: "si-search", "aria-hidden": true }) }) }), actionsAllowed.includes("".concat(permissionExpression(params.modelName, "create"))) &&
|
|
362
362
|
((_f = (_e = (_d = (_c = solidCardViewMetaDataResponse === null || solidCardViewMetaDataResponse === void 0 ? void 0 : solidCardViewMetaDataResponse.data) === null || _c === void 0 ? void 0 : _c.solidView) === null || _d === void 0 ? void 0 : _d.layout) === null || _e === void 0 ? void 0 : _e.attrs) === null || _f === void 0 ? void 0 : _f.create) !== false && (_jsx(SolidCreateButton, { createButtonUrl: createButtonUrl, createActionQueryParams: createActionQueryParams, responsiveIconOnly: true })), _jsx(SolidButton, { type: "button", variant: "outline", size: "sm", className: "solid-icon-button", onClick: function () { return handleFetchUpdatedRecords(); }, "aria-label": "Refresh cards", leftIcon: _jsx(SolidIcon, { name: "si-refresh", "aria-hidden": true }) }), _jsx(SolidCardViewConfigure, { solidCardViewMetaData: solidCardViewMetaDataResponse, modelName: params.modelName, actionsAllowed: actionsAllowed, viewModes: viewModes, setLayoutDialogVisible: setLayoutDialogVisible, setShowSaveFilterPopup: setShowSaveFilterPopup, filters: filters, handleRefreshView: handleFetchUpdatedRecords })] })] }), showGlobalSearchElement && (_jsx("div", { className: "flex lg:hidden", children: _jsx(SolidGlobalSearchElement, { viewType: "card", showSaveFilterPopup: showSaveFilterPopup, setShowSaveFilterPopup: setShowSaveFilterPopup, ref: solidGlobalSearchElementRef, viewData: solidCardViewMetaDataResponse, handleApplyCustomFilter: handleApplyCustomFilter }) }))] }), _jsxs("div", { className: "solid-card-view-content", children: [_jsx("div", { className: "solid-card-view-body", children: showEmptyState ? (_jsx(SolidEmptyListViewPlaceholder, { createButtonUrl: createButtonUrl, createActionQueryParams: createActionQueryParams, actionsAllowed: actionsAllowed, params: params, solidListViewMetaData: solidCardViewMetaDataResponse, handleFetchUpdatedRecords: handleFetchUpdatedRecords })) : (_jsx(CardGrid, { records: cards, solidCardViewMetaData: solidCardViewMetaDataResponse === null || solidCardViewMetaDataResponse === void 0 ? void 0 : solidCardViewMetaDataResponse.data, editButtonUrl: editBaseUrl, setLightboxUrls: setLightboxUrls, setOpenLightbox: setOpenLightbox })) }), totalRecords > 0 && (_jsx("div", { className: "solid-card-view-pagination", children: _jsxs("div", { className: "solid-card-view-pagination-bar solid-table-paginator flex items-center justify-center gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", children: [_jsxs("div", { className: "solid-paginator-meta flex items-center gap-2", children: [_jsx("span", { className: "solid-paginator-label", children: "Records" }), _jsx("select", { value: rows, onChange: handleRowsChange, className: "solid-paginator-select", children: rowsOptions.map(function (option) { return (_jsx("option", { value: option, children: option }, option)); }) }), _jsx("span", { className: "solid-paginator-report", children: paginationReport })] }), _jsxs("div", { className: "solid-paginator-actions flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-paginator-btn", onClick: handlePrevPage, disabled: !canGoPrev, children: "Previous" }), _jsx("button", { type: "button", className: "solid-paginator-btn", onClick: handleNextPage, disabled: !canGoNext, children: "Next" })] })] }) }))] })] }) }), openLightbox && (_jsx(SolidLightbox, { open: openLightbox, slides: lightboxSlides, onClose: function () { return setOpenLightbox(false); } })), _jsxs(SolidDialog, { open: isLayoutDialogVisible, onOpenChange: setLayoutDialogVisible, className: "solid-kanban-layout-dialog", style: { width: "min(800px, calc(100vw - 32px))" }, children: [_jsxs(SolidDialogHeader, { children: [_jsx(SolidDialogTitle, { children: "Change Card Layout" }), _jsx(SolidDialogClose, {})] }), _jsx(SolidDialogSeparator, {}), _jsx(SolidDialogBody, { className: "solid-kanban-layout-dialog-body", children: _jsx(CardUserViewLayout, { solidCardViewMetaData: solidCardViewMetaDataResponse, setLayoutDialogVisible: setLayoutDialogVisible }) })] })] }));
|
|
363
363
|
};
|
|
364
364
|
//# sourceMappingURL=SolidCardView.js.map
|