Compare commits
12 commits
5f73586e63
...
5cbe87e6bf
| Author | SHA1 | Date | |
|---|---|---|---|
| 5cbe87e6bf | |||
| 25118c683b | |||
| 353073f996 | |||
| 7d99357ac7 | |||
| b42b2cd1ad | |||
| 6b5a69b9da | |||
|
|
21417c67b1 | ||
|
|
0cf2e3fd41 | ||
|
|
61e5378469 | ||
|
|
a8c429ecbe | ||
|
|
4cc122af48 | ||
|
|
22a8d8dd66 |
34 changed files with 253 additions and 133 deletions
3
.github/workflows/review-po-prs.yml
vendored
3
.github/workflows/review-po-prs.yml
vendored
|
|
@ -3,6 +3,9 @@ name: Review translation PRs
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types: [opened, reopened, synchronize, ready_for_review]
|
types: [opened, reopened, synchronize, ready_for_review]
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
- "version-[0-9][0-9]-hotfix"
|
||||||
paths:
|
paths:
|
||||||
- "**/*.po"
|
- "**/*.po"
|
||||||
|
|
||||||
|
|
|
||||||
8
frappe/contacts/doctype/pronouns/pronouns.js
Normal file
8
frappe/contacts/doctype/pronouns/pronouns.js
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
// Copyright (c) 2026, Frappe Technologies and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
// frappe.ui.form.on("Pronouns", {
|
||||||
|
// refresh(frm) {
|
||||||
|
|
||||||
|
// },
|
||||||
|
// });
|
||||||
57
frappe/contacts/doctype/pronouns/pronouns.json
Normal file
57
frappe/contacts/doctype/pronouns/pronouns.json
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"allow_rename": 1,
|
||||||
|
"autoname": "field:pronouns",
|
||||||
|
"creation": "2026-03-24 20:39:16.401720",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"pronouns"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "pronouns",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Pronouns",
|
||||||
|
"unique": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"grid_page_length": 50,
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2026-03-24 20:58:54.860631",
|
||||||
|
"modified_by": "admin@seitimegames.com",
|
||||||
|
"module": "Contacts",
|
||||||
|
"name": "Pronouns",
|
||||||
|
"naming_rule": "By fieldname",
|
||||||
|
"owner": "admin@seitimegames.com",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "Guest",
|
||||||
|
"share": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"row_format": "Dynamic",
|
||||||
|
"rows_threshold_for_grid_search": 20,
|
||||||
|
"sort_field": "creation",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"states": []
|
||||||
|
}
|
||||||
20
frappe/contacts/doctype/pronouns/pronouns.py
Normal file
20
frappe/contacts/doctype/pronouns/pronouns.py
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Copyright (c) 2026, Frappe Technologies and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
|
||||||
|
class Pronouns(Document):
|
||||||
|
# begin: auto-generated types
|
||||||
|
# This code is auto-generated. Do not modify anything in this block.
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from frappe.types import DF
|
||||||
|
|
||||||
|
pronouns: DF.Data | None
|
||||||
|
# end: auto-generated types
|
||||||
|
|
||||||
|
pass
|
||||||
22
frappe/contacts/doctype/pronouns/test_pronouns.py
Normal file
22
frappe/contacts/doctype/pronouns/test_pronouns.py
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Copyright (c) 2026, Frappe Technologies and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.tests import IntegrationTestCase
|
||||||
|
|
||||||
|
|
||||||
|
# On IntegrationTestCase, the doctype test records and all
|
||||||
|
# link-field test record dependencies are recursively loaded
|
||||||
|
# Use these module variables to add/remove to/from that list
|
||||||
|
EXTRA_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
|
||||||
|
IGNORE_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class IntegrationTestPronouns(IntegrationTestCase):
|
||||||
|
"""
|
||||||
|
Integration tests for Pronouns.
|
||||||
|
Use this class for testing interactions between multiple components.
|
||||||
|
"""
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"actions": [],
|
"actions": [],
|
||||||
"allow_import": 1,
|
"allow_import": 1,
|
||||||
|
"allow_rename": 1,
|
||||||
"autoname": "hash",
|
"autoname": "hash",
|
||||||
"creation": "2017-01-11 04:21:35.217943",
|
"creation": "2017-01-11 04:21:35.217943",
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
|
|
@ -227,7 +228,7 @@
|
||||||
],
|
],
|
||||||
"grid_page_length": 50,
|
"grid_page_length": 50,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2025-05-22 16:59:35.484376",
|
"modified": "2026-03-31 20:37:16.503023",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Core",
|
"module": "Core",
|
||||||
"name": "Custom DocPerm",
|
"name": "Custom DocPerm",
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,9 @@ class CustomDocPerm(Document):
|
||||||
def get_permission_log_options(self, event=None):
|
def get_permission_log_options(self, event=None):
|
||||||
return {"for_doctype": "DocType", "for_document": self.parent}
|
return {"for_doctype": "DocType", "for_document": self.parent}
|
||||||
|
|
||||||
|
# def autoname(self):
|
||||||
|
# self.name = f"{self.parent}-{self.role}-{self.permlevel}"
|
||||||
|
|
||||||
|
|
||||||
def update_custom_docperm(docperm, values):
|
def update_custom_docperm(docperm, values):
|
||||||
custom_docperm = frappe.get_doc("Custom DocPerm", docperm)
|
custom_docperm = frappe.get_doc("Custom DocPerm", docperm)
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,11 @@ frappe.ui.form.on("User", {
|
||||||
frm.roles_editor.show();
|
frm.roles_editor.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!frappe.user.has_role("System Manager") && frm.doc.birth_date == null) {
|
||||||
|
var df = frappe.meta.get_docfield("User", "birth_date", cur_frm.doc.name);
|
||||||
|
df.read_only = 1;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
refresh: function (frm) {
|
refresh: function (frm) {
|
||||||
let doc = frm.doc;
|
let doc = frm.doc;
|
||||||
|
|
@ -376,8 +381,9 @@ frappe.ui.form.on("User", {
|
||||||
},
|
},
|
||||||
setup_impersonation: function (frm) {
|
setup_impersonation: function (frm) {
|
||||||
if (
|
if (
|
||||||
frappe.session.user === "Administrator" &&
|
(frappe.session.user === "Administrator" || frappe.user.has_role("System Manager")) &&
|
||||||
frm.doc.name != "Administrator" &&
|
frm.doc.name != "Administrator" &&
|
||||||
|
frm.doc.name != frappe.session.user &&
|
||||||
!frm.is_new()
|
!frm.is_new()
|
||||||
) {
|
) {
|
||||||
frm.add_custom_button(__("Impersonate"), () => {
|
frm.add_custom_button(__("Impersonate"), () => {
|
||||||
|
|
|
||||||
|
|
@ -35,15 +35,16 @@
|
||||||
"block_modules",
|
"block_modules",
|
||||||
"home_settings",
|
"home_settings",
|
||||||
"short_bio",
|
"short_bio",
|
||||||
"gender",
|
"pronouns",
|
||||||
"birth_date",
|
"birth_date",
|
||||||
|
"discord_username",
|
||||||
"interest",
|
"interest",
|
||||||
|
"gender",
|
||||||
"column_break_26",
|
"column_break_26",
|
||||||
"phone",
|
|
||||||
"location",
|
|
||||||
"bio",
|
"bio",
|
||||||
"column_break_22",
|
"phone",
|
||||||
"mobile_no",
|
"mobile_no",
|
||||||
|
"location",
|
||||||
"settings_tab",
|
"settings_tab",
|
||||||
"desk_settings_section",
|
"desk_settings_section",
|
||||||
"mute_sounds",
|
"mute_sounds",
|
||||||
|
|
@ -144,7 +145,7 @@
|
||||||
{
|
{
|
||||||
"fieldname": "first_name",
|
"fieldname": "first_name",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "First Name",
|
"label": "Preferred Name",
|
||||||
"oldfieldname": "first_name",
|
"oldfieldname": "first_name",
|
||||||
"oldfieldtype": "Data",
|
"oldfieldtype": "Data",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
|
|
@ -152,6 +153,7 @@
|
||||||
{
|
{
|
||||||
"fieldname": "middle_name",
|
"fieldname": "middle_name",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
|
"hidden": 1,
|
||||||
"label": "Middle Name",
|
"label": "Middle Name",
|
||||||
"oldfieldname": "middle_name",
|
"oldfieldname": "middle_name",
|
||||||
"oldfieldtype": "Data"
|
"oldfieldtype": "Data"
|
||||||
|
|
@ -160,6 +162,7 @@
|
||||||
"bold": 1,
|
"bold": 1,
|
||||||
"fieldname": "last_name",
|
"fieldname": "last_name",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
|
"hidden": 1,
|
||||||
"label": "Last Name",
|
"label": "Last Name",
|
||||||
"oldfieldname": "last_name",
|
"oldfieldname": "last_name",
|
||||||
"oldfieldtype": "Data"
|
"oldfieldtype": "Data"
|
||||||
|
|
@ -167,6 +170,7 @@
|
||||||
{
|
{
|
||||||
"fieldname": "full_name",
|
"fieldname": "full_name",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
|
"hidden": 1,
|
||||||
"in_global_search": 1,
|
"in_global_search": 1,
|
||||||
"in_standard_filter": 1,
|
"in_standard_filter": 1,
|
||||||
"label": "Full Name",
|
"label": "Full Name",
|
||||||
|
|
@ -206,6 +210,7 @@
|
||||||
{
|
{
|
||||||
"fieldname": "language",
|
"fieldname": "language",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
|
"hidden": 1,
|
||||||
"label": "Language",
|
"label": "Language",
|
||||||
"options": "Language"
|
"options": "Language"
|
||||||
},
|
},
|
||||||
|
|
@ -265,6 +270,7 @@
|
||||||
{
|
{
|
||||||
"fieldname": "gender",
|
"fieldname": "gender",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
|
"hidden": 1,
|
||||||
"label": "Gender",
|
"label": "Gender",
|
||||||
"oldfieldname": "gender",
|
"oldfieldname": "gender",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
|
|
@ -273,12 +279,14 @@
|
||||||
{
|
{
|
||||||
"fieldname": "phone",
|
"fieldname": "phone",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
|
"hidden": 1,
|
||||||
"label": "Phone",
|
"label": "Phone",
|
||||||
"options": "Phone"
|
"options": "Phone"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "mobile_no",
|
"fieldname": "mobile_no",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
|
"hidden": 1,
|
||||||
"label": "Mobile No",
|
"label": "Mobile No",
|
||||||
"options": "Phone",
|
"options": "Phone",
|
||||||
"unique": 1
|
"unique": 1
|
||||||
|
|
@ -286,24 +294,23 @@
|
||||||
{
|
{
|
||||||
"fieldname": "birth_date",
|
"fieldname": "birth_date",
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
"label": "Birth Date",
|
"label": "Special Day",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "birth_date",
|
"oldfieldname": "birth_date",
|
||||||
"oldfieldtype": "Date"
|
"oldfieldtype": "Date",
|
||||||
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "location",
|
"fieldname": "location",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
|
"hidden": 1,
|
||||||
"label": "Location",
|
"label": "Location",
|
||||||
"no_copy": 1
|
"no_copy": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"fieldname": "column_break_22",
|
|
||||||
"fieldtype": "Column Break"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"fieldname": "interest",
|
"fieldname": "interest",
|
||||||
"fieldtype": "Small Text",
|
"fieldtype": "Small Text",
|
||||||
|
"hidden": 1,
|
||||||
"label": "Interests"
|
"label": "Interests"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -852,6 +859,18 @@
|
||||||
"fieldname": "form_navigation_buttons",
|
"fieldname": "form_navigation_buttons",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Show navigation buttons"
|
"label": "Show navigation buttons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "pronouns",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Pronouns",
|
||||||
|
"options": "Pronouns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "discord_username",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Discord Username",
|
||||||
|
"reqd": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"icon": "fa fa-user",
|
"icon": "fa fa-user",
|
||||||
|
|
@ -905,8 +924,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"make_attachments_public": 1,
|
"make_attachments_public": 1,
|
||||||
"modified": "2026-02-22 13:44:36.317890",
|
"modified": "2026-03-24 21:30:57.199337",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "admin@seitimegames.com",
|
||||||
"module": "Core",
|
"module": "Core",
|
||||||
"name": "User",
|
"name": "User",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ class User(Document):
|
||||||
api_key: DF.Data | None
|
api_key: DF.Data | None
|
||||||
api_secret: DF.Password | None
|
api_secret: DF.Password | None
|
||||||
bio: DF.SmallText | None
|
bio: DF.SmallText | None
|
||||||
birth_date: DF.Date | None
|
birth_date: DF.Date
|
||||||
block_modules: DF.Table[BlockModule]
|
block_modules: DF.Table[BlockModule]
|
||||||
bulk_actions: DF.Check
|
bulk_actions: DF.Check
|
||||||
bypass_restrict_ip_check_if_2fa_enabled: DF.Check
|
bypass_restrict_ip_check_if_2fa_enabled: DF.Check
|
||||||
|
|
@ -86,6 +86,7 @@ class User(Document):
|
||||||
default_workspace: DF.Link | None
|
default_workspace: DF.Link | None
|
||||||
defaults: DF.Table[DefaultValue]
|
defaults: DF.Table[DefaultValue]
|
||||||
desk_theme: DF.Literal["Light", "Dark", "Automatic"]
|
desk_theme: DF.Literal["Light", "Dark", "Automatic"]
|
||||||
|
discord_username: DF.Data
|
||||||
document_follow_frequency: DF.Literal["Hourly", "Daily", "Weekly"]
|
document_follow_frequency: DF.Literal["Hourly", "Daily", "Weekly"]
|
||||||
document_follow_notify: DF.Check
|
document_follow_notify: DF.Check
|
||||||
email: DF.Data
|
email: DF.Data
|
||||||
|
|
@ -124,6 +125,7 @@ class User(Document):
|
||||||
notifications: DF.Check
|
notifications: DF.Check
|
||||||
onboarding_status: DF.SmallText | None
|
onboarding_status: DF.SmallText | None
|
||||||
phone: DF.Data | None
|
phone: DF.Data | None
|
||||||
|
pronouns: DF.Link | None
|
||||||
redirect_url: DF.SmallText | None
|
redirect_url: DF.SmallText | None
|
||||||
reset_password_key: DF.Data | None
|
reset_password_key: DF.Data | None
|
||||||
restrict_ip: DF.SmallText | None
|
restrict_ip: DF.SmallText | None
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@
|
||||||
"print_width",
|
"print_width",
|
||||||
"alignment",
|
"alignment",
|
||||||
"no_copy",
|
"no_copy",
|
||||||
|
"set_only_once",
|
||||||
"allow_on_submit",
|
"allow_on_submit",
|
||||||
"in_list_view",
|
"in_list_view",
|
||||||
"in_standard_filter",
|
"in_standard_filter",
|
||||||
|
|
@ -484,6 +485,12 @@
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Button Color",
|
"label": "Button Color",
|
||||||
"options": "\nDefault\nPrimary\nInfo\nSuccess\nWarning\nDanger"
|
"options": "\nDefault\nPrimary\nInfo\nSuccess\nWarning\nDanger"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "0",
|
||||||
|
"fieldname": "set_only_once",
|
||||||
|
"fieldtype": "Check",
|
||||||
|
"label": "Set only once"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"grid_page_length": 50,
|
"grid_page_length": 50,
|
||||||
|
|
@ -491,7 +498,7 @@
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2025-11-12 01:14:24.753774",
|
"modified": "2026-03-22 10:35:32.555267",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Custom",
|
"module": "Custom",
|
||||||
"name": "Custom Field",
|
"name": "Custom Field",
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,9 @@ class CustomField(Document):
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from frappe.types import DF
|
from frappe.types import DF
|
||||||
|
|
||||||
|
alignment: DF.Literal["", "Left", "Center", "Right"]
|
||||||
allow_in_quick_entry: DF.Check
|
allow_in_quick_entry: DF.Check
|
||||||
allow_on_submit: DF.Check
|
allow_on_submit: DF.Check
|
||||||
alignment: DF.Literal["", "Left", "Center", "Right"]
|
|
||||||
bold: DF.Check
|
bold: DF.Check
|
||||||
button_color: DF.Literal["", "Default", "Primary", "Info", "Success", "Warning", "Danger"]
|
button_color: DF.Literal["", "Default", "Primary", "Info", "Success", "Warning", "Danger"]
|
||||||
collapsible: DF.Check
|
collapsible: DF.Check
|
||||||
|
|
@ -114,6 +114,7 @@ class CustomField(Document):
|
||||||
report_hide: DF.Check
|
report_hide: DF.Check
|
||||||
reqd: DF.Check
|
reqd: DF.Check
|
||||||
search_index: DF.Check
|
search_index: DF.Check
|
||||||
|
set_only_once: DF.Check
|
||||||
show_dashboard: DF.Check
|
show_dashboard: DF.Check
|
||||||
sort_options: DF.Check
|
sort_options: DF.Check
|
||||||
translatable: DF.Check
|
translatable: DF.Check
|
||||||
|
|
|
||||||
|
|
@ -810,6 +810,7 @@ docfield_properties = {
|
||||||
"placeholder": "Data",
|
"placeholder": "Data",
|
||||||
"button_color": "Select",
|
"button_color": "Select",
|
||||||
"mask": "Check",
|
"mask": "Check",
|
||||||
|
"set_only_once": "Check",
|
||||||
}
|
}
|
||||||
|
|
||||||
doctype_link_properties = {
|
doctype_link_properties = {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
"in_preview",
|
"in_preview",
|
||||||
"bold",
|
"bold",
|
||||||
"no_copy",
|
"no_copy",
|
||||||
|
"set_only_once",
|
||||||
"allow_in_quick_entry",
|
"allow_in_quick_entry",
|
||||||
"translatable",
|
"translatable",
|
||||||
"mask",
|
"mask",
|
||||||
|
|
@ -509,6 +510,12 @@
|
||||||
"fieldname": "mask",
|
"fieldname": "mask",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Mask"
|
"label": "Mask"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "0",
|
||||||
|
"fieldname": "set_only_once",
|
||||||
|
"fieldtype": "Check",
|
||||||
|
"label": "Set only once"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"grid_page_length": 50,
|
"grid_page_length": 50,
|
||||||
|
|
@ -516,7 +523,7 @@
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2025-12-23 14:17:10.458916",
|
"modified": "2026-03-22 10:36:12.968197",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Custom",
|
"module": "Custom",
|
||||||
"name": "Customize Form Field",
|
"name": "Customize Form Field",
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@ class CustomizeFormField(Document):
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from frappe.types import DF
|
from frappe.types import DF
|
||||||
|
|
||||||
|
alignment: DF.Literal["", "Left", "Center", "Right"]
|
||||||
allow_bulk_edit: DF.Check
|
allow_bulk_edit: DF.Check
|
||||||
allow_in_quick_entry: DF.Check
|
allow_in_quick_entry: DF.Check
|
||||||
allow_on_submit: DF.Check
|
allow_on_submit: DF.Check
|
||||||
alignment: DF.Literal["", "Left", "Center", "Right"]
|
|
||||||
bold: DF.Check
|
bold: DF.Check
|
||||||
button_color: DF.Literal["", "Default", "Primary", "Info", "Success", "Warning", "Danger"]
|
button_color: DF.Literal["", "Default", "Primary", "Info", "Success", "Warning", "Danger"]
|
||||||
collapsible: DF.Check
|
collapsible: DF.Check
|
||||||
|
|
@ -109,6 +109,7 @@ class CustomizeFormField(Document):
|
||||||
remember_last_selected_value: DF.Check
|
remember_last_selected_value: DF.Check
|
||||||
report_hide: DF.Check
|
report_hide: DF.Check
|
||||||
reqd: DF.Check
|
reqd: DF.Check
|
||||||
|
set_only_once: DF.Check
|
||||||
show_dashboard: DF.Check
|
show_dashboard: DF.Check
|
||||||
sort_options: DF.Check
|
sort_options: DF.Check
|
||||||
translatable: DF.Check
|
translatable: DF.Check
|
||||||
|
|
|
||||||
|
|
@ -502,6 +502,11 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView {
|
||||||
// show chart if saved via report or user settings
|
// show chart if saved via report or user settings
|
||||||
if (!this.chart) {
|
if (!this.chart) {
|
||||||
if (this.chart_args) {
|
if (this.chart_args) {
|
||||||
|
if (!this.chart_axes_valid(this.chart_args)) {
|
||||||
|
this.reset_chart_state();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.build_chart_args(
|
this.build_chart_args(
|
||||||
this.chart_args.x_axis,
|
this.chart_args.x_axis,
|
||||||
this.chart_args.y_axes,
|
this.chart_args.y_axes,
|
||||||
|
|
@ -643,12 +648,30 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView {
|
||||||
|
|
||||||
refresh_charts() {
|
refresh_charts() {
|
||||||
if (!this.chart || !this.chart_args) return;
|
if (!this.chart || !this.chart_args) return;
|
||||||
|
|
||||||
|
if (!this.chart_axes_valid(this.chart_args)) {
|
||||||
|
this.reset_chart_state();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.$charts_wrapper.removeClass("hidden");
|
this.$charts_wrapper.removeClass("hidden");
|
||||||
const { x_axis, y_axes, chart_type } = this.chart_args;
|
const { x_axis, y_axes, chart_type } = this.chart_args;
|
||||||
this.build_chart_args(x_axis, y_axes, chart_type);
|
this.build_chart_args(x_axis, y_axes, chart_type);
|
||||||
this.chart.update(this.chart_args);
|
this.chart.update(this.chart_args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chart_axes_valid(chart_args) {
|
||||||
|
const { x_axis, y_axes } = chart_args;
|
||||||
|
return this.columns_map[x_axis] && y_axes.every((y_axis) => this.columns_map[y_axis]);
|
||||||
|
}
|
||||||
|
|
||||||
|
reset_chart_state() {
|
||||||
|
this.chart = null;
|
||||||
|
this.chart_args = null;
|
||||||
|
this.$charts_wrapper.addClass("hidden");
|
||||||
|
this.save_view_user_settings({ chart_args: null });
|
||||||
|
}
|
||||||
|
|
||||||
get_editing_object(colIndex, rowIndex, value, parent) {
|
get_editing_object(colIndex, rowIndex, value, parent) {
|
||||||
const control = this.render_editing_input(colIndex, value, parent);
|
const control = this.render_editing_input(colIndex, value, parent);
|
||||||
if (!control) return false;
|
if (!control) return false;
|
||||||
|
|
|
||||||
|
|
@ -608,7 +608,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color: var(--primary);
|
/*color: var(--primary);*/
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
border-bottom-color: var(--primary);
|
border-bottom-color: var(--primary);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -529,7 +529,7 @@
|
||||||
&.active {
|
&.active {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
border-bottom: 1px solid var(--text-color);
|
border-bottom: 1px solid var(--text-color);
|
||||||
color: var(--text-neutral);
|
/* color: var(--text-neutral); */
|
||||||
padding-bottom: 9px;
|
padding-bottom: 9px;
|
||||||
}
|
}
|
||||||
&:focus-visible {
|
&:focus-visible {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
.web-footer {
|
.web-footer {
|
||||||
padding: 3rem 0;
|
padding: 3rem 0;
|
||||||
min-height: 140px;
|
|
||||||
background-color: var(--fg-color);
|
background-color: var(--fg-color);
|
||||||
border-top: 1px solid $border-color;
|
|
||||||
margin-top: auto;
|
margin-top: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -21,11 +19,11 @@
|
||||||
.footer-child-item a {
|
.footer-child-item a {
|
||||||
font-size: $font-size-sm;
|
font-size: $font-size-sm;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: $gray-700;
|
color: var(--body-text-color);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: $primary;
|
color: var(--body-text-color);
|
||||||
text-decoration: none;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -81,7 +79,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-info {
|
.footer-info {
|
||||||
color: $text-muted;
|
color: var(--body-text-color);
|
||||||
font-size: $font-size-sm;
|
font-size: $font-size-sm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-light {
|
.navbar-light {
|
||||||
border-bottom: 1px solid $border-color;
|
|
||||||
background: $navbar-bg;
|
background: $navbar-bg;
|
||||||
|
|
||||||
.navbar-toggler .icon {
|
.navbar-toggler .icon {
|
||||||
|
|
@ -128,14 +127,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-light .navbar-nav .nav-link {
|
.navbar-light .navbar-nav .nav-link {
|
||||||
color: $gray-700;
|
color: var(--body-text-color);
|
||||||
font-size: $font-size-sm;
|
font-size: $font-size-sm;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus,
|
&:focus,
|
||||||
&.active {
|
&.active {
|
||||||
color: $primary;
|
color: var(--body-text-color);
|
||||||
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,38 +90,38 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-padding {
|
.section-padding {
|
||||||
padding-top: 3rem;
|
padding-top: 1rem;
|
||||||
padding-bottom: 3rem;
|
padding-bottom: 1rem;
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
@include media-breakpoint-up(sm) {
|
||||||
padding-top: 5rem;
|
padding-top: 2rem;
|
||||||
padding-bottom: 5rem;
|
padding-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@include media-breakpoint-up(xl) {
|
@include media-breakpoint-up(xl) {
|
||||||
padding-top: 8rem;
|
padding-top: 3rem;
|
||||||
padding-bottom: 8rem;
|
padding-bottom: 3rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-padding-top {
|
.section-padding-top {
|
||||||
padding-top: 3rem;
|
padding-top: 1rem;
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
@include media-breakpoint-up(sm) {
|
||||||
padding-top: 5rem;
|
padding-top: 2rem;
|
||||||
}
|
}
|
||||||
@include media-breakpoint-up(xl) {
|
@include media-breakpoint-up(xl) {
|
||||||
padding-top: 8rem;
|
padding-top: 3rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.section-padding-bottom {
|
.section-padding-bottom {
|
||||||
padding-bottom: 3rem;
|
padding-bottom: 1rem;
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
@include media-breakpoint-up(sm) {
|
||||||
padding-bottom: 5rem;
|
padding-bottom: 2rem;
|
||||||
}
|
}
|
||||||
@include media-breakpoint-up(xl) {
|
@include media-breakpoint-up(xl) {
|
||||||
padding-bottom: 8rem;
|
padding-bottom: 3rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -230,22 +230,16 @@
|
||||||
padding-bottom: 1px;
|
padding-bottom: 1px;
|
||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
color: $gray-800;
|
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
border: none;
|
border: none;
|
||||||
padding: 1rem 0.5rem;
|
padding: 1rem 0.5rem;
|
||||||
margin-right: 2rem;
|
margin-right: 2rem;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@include transition();
|
@include transition();
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: $primary;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-link.active,
|
.nav-link.active,
|
||||||
.nav-item.show .nav-link {
|
.nav-item.show .nav-link {
|
||||||
color: darken($primary, 5%);
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-bottom: 2px solid $primary;
|
border-bottom: 2px solid $primary;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
{% include "templates/includes/footer/footer_logo_extension.html" %}
|
{% include "templates/includes/footer/footer_logo_extension.html" %}
|
||||||
|
|
||||||
{% if footer_items -%}
|
<!-- {% if footer_items -%}
|
||||||
{% include "templates/includes/footer/footer_grouped_links.html" %}
|
{% include "templates/includes/footer/footer_grouped_links.html" %}
|
||||||
{% endif %}
|
{% endif %} -->
|
||||||
|
|
||||||
{% include "templates/includes/footer/footer_links.html" %}
|
{% include "templates/includes/footer/footer_links.html" %}
|
||||||
{% include "templates/includes/footer/footer_info.html" %}
|
{% include "templates/includes/footer/footer_info.html" %}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
<div class="footer-info">
|
<div class="footer-info">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="footer-col-left col-sm-6 col-12">
|
<!-- <div class="footer-col-left col-sm-6 col-12"> -->
|
||||||
|
<div class="col-12">
|
||||||
{% if copyright %}
|
{% if copyright %}
|
||||||
© {{ copyright }}
|
© {{ copyright }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
@ -10,6 +11,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{# powered #}
|
{# powered #}
|
||||||
|
<!--
|
||||||
<div class="footer-col-right col-sm-6 col-12 footer-powered">
|
<div class="footer-col-right col-sm-6 col-12 footer-powered">
|
||||||
{% block powered %}
|
{% block powered %}
|
||||||
{%- if footer_powered -%}
|
{%- if footer_powered -%}
|
||||||
|
|
@ -19,5 +21,6 @@
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -9,16 +9,18 @@
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
<div class="footer-links">
|
<div class="footer-links">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="footer-col-left col-sm-6">
|
<!-- <div class="footer-col-left col-sm-6"> -->
|
||||||
|
<div class="col-12">
|
||||||
{%- for item in footer_items if item.label and not (item.parent_label or item.child_items) and not item.right %}
|
{%- for item in footer_items if item.label and not (item.parent_label or item.child_items) and not item.right %}
|
||||||
{{ footer_link(item) }}
|
{{ footer_link(item) }}
|
||||||
|
{{ "|" if not loop.last }}
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-col-right col-sm-6">
|
<!-- <div class="footer-col-right col-sm-6">
|
||||||
{%- for item in footer_items if item.label and not (item.parent_label or item.child_items) and item.right %}
|
{%- for item in footer_items if item.label and not (item.parent_label or item.child_items) and item.right %}
|
||||||
{{ footer_link(item) }}
|
{{ footer_link(item) }}
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -52,19 +52,10 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{% if top_bar_items -%}
|
<ul class="mx-auto navbar-nav">
|
||||||
<ul class="mr-auto navbar-nav">
|
|
||||||
{%- for item in top_bar_items -%}
|
|
||||||
{% if not item.parent_label and not item.right -%}
|
|
||||||
{{ render_item(item, parent=True) }}
|
|
||||||
{%- endif -%}
|
|
||||||
{%- endfor %}
|
|
||||||
</ul>
|
|
||||||
{%- endif %}
|
|
||||||
<ul class="ml-auto navbar-nav">
|
|
||||||
{% include "templates/includes/navbar/navbar_search.html" %}
|
{% include "templates/includes/navbar/navbar_search.html" %}
|
||||||
{%- for item in top_bar_items -%}
|
{%- for item in top_bar_items -%}
|
||||||
{% if not item.parent_label and item.right -%}
|
{% if not item.parent_label -%}
|
||||||
{{ render_item(item, parent=True) }}
|
{{ render_item(item, parent=True) }}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
|
|
@ -98,9 +89,12 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% include "templates/includes/navbar/navbar_login.html" %}
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
{% include "templates/includes/navbar/navbar_login.html" %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
{%- if call_to_action -%}
|
{%- if call_to_action -%}
|
||||||
<a class="btn btn-primary navbar-cta" href="{{ call_to_action_url | abs_url }}">
|
<a class="btn btn-primary navbar-cta" href="{{ call_to_action_url | abs_url }}">
|
||||||
{{ call_to_action }}
|
{{ call_to_action }}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ $font-family-sans-serif: "{{ google_font }}", "InterVariable", "Inter", -apple-s
|
||||||
{% if primary_color %}$primary: {{ frappe.db.get_value('Color', primary_color, 'color') }};{% endif -%}
|
{% if primary_color %}$primary: {{ frappe.db.get_value('Color', primary_color, 'color') }};{% endif -%}
|
||||||
{% if dark_color %}$dark: {{ frappe.db.get_value('Color', dark_color, 'color') }};{% endif -%}
|
{% if dark_color %}$dark: {{ frappe.db.get_value('Color', dark_color, 'color') }};{% endif -%}
|
||||||
{% if text_color %}$body-text-color: {{ frappe.db.get_value('Color', text_color, 'color') }};{% endif -%}
|
{% if text_color %}$body-text-color: {{ frappe.db.get_value('Color', text_color, 'color') }};{% endif -%}
|
||||||
|
{% if light_color %}$light: {{ frappe.db.get_value('Color', light_color, 'color') }};{% endif -%}
|
||||||
{% if background_color %}$body-bg: {{ frappe.db.get_value('Color', background_color, 'color') }};{% endif -%}
|
{% if background_color %}$body-bg: {{ frappe.db.get_value('Color', background_color, 'color') }};{% endif -%}
|
||||||
|
|
||||||
$enable-shadows: {{ button_shadows and "true" or "false" }};
|
$enable-shadows: {{ button_shadows and "true" or "false" }};
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
<nav class="navbar navbar-primary navbar-expand-lg">
|
|
||||||
<div class="container">
|
|
||||||
<a class="navbar-brand" href="{{ url_prefix }}{{ home_page or "/" }}">
|
|
||||||
{%- if brand_html -%}
|
|
||||||
{{ brand_html }}
|
|
||||||
{%- elif banner_image -%}
|
|
||||||
<img src='{{ banner_image }}'>
|
|
||||||
{%- else -%}
|
|
||||||
<span>{{ (frappe.get_hooks("brand_html") or [_("Home")])[0] }}</span>
|
|
||||||
{%- endif -%}
|
|
||||||
</a>
|
|
||||||
<button class="navbar-toggler" type="button"
|
|
||||||
data-toggle="collapse"
|
|
||||||
data-target="#navbarSupportedContent"
|
|
||||||
aria-controls="navbarSupportedContent"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-label="Toggle navigation">
|
|
||||||
<span>
|
|
||||||
<svg class="icon icon-lg">
|
|
||||||
<use href="#icon-menu"></use>
|
|
||||||
</svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
{% include "templates/includes/navbar/navbar_items.html" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
"__islocal": true,
|
|
||||||
"__unsaved": 1,
|
|
||||||
"creation": "2021-01-20 13:20:46.147656",
|
|
||||||
"docstatus": 0,
|
|
||||||
"doctype": "Web Template",
|
|
||||||
"fields": [],
|
|
||||||
"idx": 0,
|
|
||||||
"modified": "2021-01-20 13:20:46.147656",
|
|
||||||
"modified_by": "Administrator",
|
|
||||||
"module": "Website",
|
|
||||||
"name": "Primary Navbar",
|
|
||||||
"owner": "Administrator",
|
|
||||||
"standard": 1,
|
|
||||||
"template": "",
|
|
||||||
"type": "Navbar"
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{% include "templates/includes/navbar/navbar.html" %}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
"creation": "2020-08-19 17:49:37.288380",
|
|
||||||
"docstatus": 0,
|
|
||||||
"doctype": "Web Template",
|
|
||||||
"fields": [],
|
|
||||||
"idx": 0,
|
|
||||||
"modified": "2020-08-19 17:50:44.342765",
|
|
||||||
"modified_by": "Administrator",
|
|
||||||
"name": "Standard Navbar",
|
|
||||||
"owner": "Administrator",
|
|
||||||
"standard": 1,
|
|
||||||
"type": "Navbar"
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +1,27 @@
|
||||||
{
|
{
|
||||||
|
"background_color": "Background",
|
||||||
"button_gradients": 0,
|
"button_gradients": 0,
|
||||||
"button_rounded_corners": 1,
|
"button_rounded_corners": 1,
|
||||||
"button_shadows": 0,
|
"button_shadows": 0,
|
||||||
"creation": "2015-02-19 13:37:33.925909",
|
"creation": "2015-02-19 13:37:33.925909",
|
||||||
"custom": 0,
|
"custom": 0,
|
||||||
"custom_overrides": "",
|
"custom_overrides": "",
|
||||||
|
"dark_color": "Primary",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"doctype": "Website Theme",
|
"doctype": "Website Theme",
|
||||||
"font_properties": "wght:400;500;600;700;800",
|
"font_properties": "wght:400;500;600;700;800",
|
||||||
|
"google_font": "Ethnocentric",
|
||||||
"idx": 28,
|
"idx": 28,
|
||||||
"modified": "2020-06-15 13:10:16.618476",
|
"ignored_apps": [],
|
||||||
|
"light_color": "Gold Text",
|
||||||
|
"modified": "2026-03-17 20:45:47.424219",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Website",
|
"module": "Website",
|
||||||
"name": "Standard",
|
"name": "Standard",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
|
"primary_color": "Primary",
|
||||||
|
"text_color": "Gold Text",
|
||||||
"theme": "Standard",
|
"theme": "Standard",
|
||||||
"theme_scss": "$enable-shadows: false;\n$enable-gradients: false;\n$enable-rounded: true;\n\n// Bootstrap Variable Overrides\n\n\n@import \"frappe/public/scss/website\";\n\n\n\n// Custom Theme\n",
|
"theme_scss": "\n@import url(\"https://fonts.googleapis.com/css2?family=Ethnocentric:wght:400;500;600;700;800&display=swap\");\n// backward compatibility. deprecated in v15\n$font-family-sans-serif: \"Ethnocentric\", \"InterVariable\", \"Inter\", -apple-system, BlinkMacSystemFont,\n\t\"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\",\n\t\"Droid Sans\", \"Helvetica Neue\", sans-serif;\n\n// override font stack if custom font is set in website theme\n:root {\n\t--font-stack: \"Ethnocentric\", \"InterVariable\", \"Inter\", -apple-system, BlinkMacSystemFont,\n\t\"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\",\n\t\"Droid Sans\", \"Helvetica Neue\", sans-serif !important;\n}\n$primary: #8139c4;$dark: #8139c4;$body-text-color: #e6c96c;$body-bg: #4e3269;$enable-shadows: false;\n$enable-gradients: false;\n$enable-rounded: true;\n\n// Bootstrap Variable Overrides\n\n\n// Import themes from installed apps\n@import \"frappe/public/scss/website.bundle\";\n\n\n\n// Custom Theme\n\n\n:root {\n\t\n\t--primary: #{$primary};\n\t--primary-color: #{$primary};\n\t\n\t--bg-color: #{$body-bg};\n\t\n\t--text-color: #{$body-text-color};\n\t--text-light: #{$body-text-color};\n\t}\n",
|
||||||
"theme_url": "/assets/css/standard_style.css"
|
"theme_url": "/files/website_theme/standard_style.css"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,5 @@
|
||||||
max-width: 100vw;
|
max-width: 100vw;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: var(--bg-light-gray);
|
/* background: var(--bg-light-gray); */
|
||||||
}
|
}
|
||||||
Loading…
Add table
Reference in a new issue