mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 15:34:12 +01:00
Compare commits
314 Commits
3.2.0-2
...
feature/58
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1eaeeb502b | ||
|
|
e7a3e7de90 | ||
|
|
d16757f8f0 | ||
|
|
b9ad9dcded | ||
|
|
44fa08278d | ||
|
|
585072a478 | ||
|
|
dc2064450b | ||
|
|
0d8a20c35e | ||
|
|
596e26a96f | ||
|
|
1f3780f338 | ||
|
|
85f6195a51 | ||
|
|
7e1b1779a9 | ||
|
|
ef42a49009 | ||
|
|
51e5f1e7de | ||
|
|
9cffd17e19 | ||
|
|
d95e7168aa | ||
|
|
e9f16935b6 | ||
|
|
e7488b2c89 | ||
|
|
8ac4086e71 | ||
|
|
6b5273fa1c | ||
|
|
a7c22c06af | ||
|
|
9b1e854bf7 | ||
|
|
a72d1ca1b3 | ||
|
|
926700856d | ||
|
|
be5e4458ba | ||
|
|
317cd585b2 | ||
|
|
ab93d59a77 | ||
|
|
c70d62a51e | ||
|
|
5d8db176f4 | ||
|
|
82bc2f33f2 | ||
|
|
0d5ff261fe | ||
|
|
374b35f78a | ||
|
|
f5c29edee4 | ||
|
|
8fb450a6d4 | ||
|
|
311c5d0d51 | ||
|
|
c6039f4b51 | ||
|
|
f90bd81e15 | ||
|
|
a10e547420 | ||
|
|
d0f9e57bf1 | ||
|
|
2519456c98 | ||
|
|
9371bc6d7b | ||
|
|
58e964fb8c | ||
|
|
57760528c9 | ||
|
|
385c60e993 | ||
|
|
561baf5771 | ||
|
|
f281fa7b14 | ||
|
|
58c68bade9 | ||
|
|
6ae8a72a35 | ||
|
|
eb992c7b45 | ||
|
|
0688405f86 | ||
|
|
694711b3f4 | ||
|
|
01d3f707e4 | ||
|
|
4e28856015 | ||
|
|
dd34fda42e | ||
|
|
8bb456df53 | ||
|
|
4886e2a7dc | ||
|
|
674dfebb0d | ||
|
|
e8ecc85828 | ||
|
|
04bd8cc5ce | ||
|
|
6becd73ac2 | ||
|
|
72d6e251b8 | ||
|
|
9491c9102c | ||
|
|
a728cf312d | ||
|
|
e321e27899 | ||
|
|
96e8467e13 | ||
|
|
508918a684 | ||
|
|
8adef26d18 | ||
|
|
2d45abd12b | ||
|
|
bd5e55aad9 | ||
|
|
764eddd9f8 | ||
|
|
015ff8f179 | ||
|
|
9b651c2451 | ||
|
|
bb16f4ad57 | ||
|
|
7b3023ccce | ||
|
|
e6a3a95ff9 | ||
|
|
80e413c370 | ||
|
|
69fd9048fd | ||
|
|
7254bb7a2f | ||
|
|
7a4d29d561 | ||
|
|
c54909f2a3 | ||
|
|
b57e4fce07 | ||
|
|
23af649d7f | ||
|
|
88756a443a | ||
|
|
4a78f8fb43 | ||
|
|
6c8388ea5e | ||
|
|
75520bfaf9 | ||
|
|
3a4d9e64f8 | ||
|
|
209e30f7ef | ||
|
|
052e2a1a42 | ||
|
|
b460705831 | ||
|
|
3aadccc2e8 | ||
|
|
5ae2fdee94 | ||
|
|
380512dcbe | ||
|
|
58c47f4c0a | ||
|
|
8e2a68887c | ||
|
|
eb1ecff7d8 | ||
|
|
8141723869 | ||
|
|
8cb701bda3 | ||
|
|
a8f3c3054b | ||
|
|
c5fb4227bf | ||
|
|
1b29746806 | ||
|
|
f98ad6ccab | ||
|
|
fb9c317256 | ||
|
|
0f1f2875ff | ||
|
|
a88b4ad06b | ||
|
|
f3a6b064c8 | ||
|
|
5e6fb33ed7 | ||
|
|
172fda2157 | ||
|
|
5e7137e0c4 | ||
|
|
4f0c45004a | ||
|
|
4cf5e47ec3 | ||
|
|
143a59a19d | ||
|
|
60de41e6fd | ||
|
|
cbbb4cdb8c | ||
|
|
8c5b919e72 | ||
|
|
61b247b156 | ||
|
|
47c05b75d0 | ||
|
|
c1aa013053 | ||
|
|
4a99afae3b | ||
|
|
119dcf9c97 | ||
|
|
b7d14ca48e | ||
|
|
37cd12fb21 | ||
|
|
a3f9eed6e2 | ||
|
|
ffb61503dc | ||
|
|
fbda0e38e1 | ||
|
|
bfd8fb1c23 | ||
|
|
c6760371ba | ||
|
|
8c704951e1 | ||
|
|
018f7808db | ||
|
|
24c23628d6 | ||
|
|
1d3c71fd10 | ||
|
|
e8d059fa77 | ||
|
|
3b4a9dc368 | ||
|
|
244ae33ad6 | ||
|
|
21c9332a7f | ||
|
|
c1eb605195 | ||
|
|
ae6e0a08ea | ||
|
|
31758cbe2b | ||
|
|
d9d2e851f4 | ||
|
|
c32e186133 | ||
|
|
91c63cb12e | ||
|
|
22141aba7b | ||
|
|
7ea7f5a967 | ||
|
|
4ff354dd41 | ||
|
|
bd8c325306 | ||
|
|
9902cedc06 | ||
|
|
b64ee96636 | ||
|
|
8c1ff2dc1c | ||
|
|
f2ab409c9c | ||
|
|
db46763e13 | ||
|
|
7ee1af3cc8 | ||
|
|
32b371eac1 | ||
|
|
f65cadd24c | ||
|
|
40551b36e5 | ||
|
|
c0056e75d0 | ||
|
|
e5825b5fcd | ||
|
|
d3dc59c5da | ||
|
|
642a097b4b | ||
|
|
1c615c42b6 | ||
|
|
b1f708dcad | ||
|
|
55f202b7cb | ||
|
|
247f1045fe | ||
|
|
42e78ad3a3 | ||
|
|
113826b2e7 | ||
|
|
7fe8da8590 | ||
|
|
821251a53f | ||
|
|
5334bbb303 | ||
|
|
012d5e7ae0 | ||
|
|
03f4e9f621 | ||
|
|
055968bea9 | ||
|
|
d0457b73ec | ||
|
|
7e8ff50886 | ||
|
|
36a6ee4fc9 | ||
|
|
db8b00e8df | ||
|
|
5d31c372fa | ||
|
|
0497122e25 | ||
|
|
645d68d5d0 | ||
|
|
f04b8368aa | ||
|
|
f9fd4f1e2a | ||
|
|
55ed552ba7 | ||
|
|
7bfa23fab7 | ||
|
|
7bd427b4e7 | ||
|
|
a9a9fb1da2 | ||
|
|
6653b13144 | ||
|
|
8bea29f0e7 | ||
|
|
d556564ee1 | ||
|
|
2286a9e2a4 | ||
|
|
30c10cb67f | ||
|
|
74a42a4d4f | ||
|
|
c31443cb79 | ||
|
|
a698aec7a5 | ||
|
|
04d2aaf05c | ||
|
|
5103f898e1 | ||
|
|
68ee3231f4 | ||
|
|
62a7850a0b | ||
|
|
20f1ec42b1 | ||
|
|
e51e55b634 | ||
|
|
bc7db973ad | ||
|
|
0489103e11 | ||
|
|
b99249d2d2 | ||
|
|
23aed5415c | ||
|
|
2adbcf5e6f | ||
|
|
6a99e3c1c9 | ||
|
|
8e1de5bf2d | ||
|
|
f6808ee522 | ||
|
|
4f650d3c5b | ||
|
|
ba641d96d5 | ||
|
|
3dc514c67d | ||
|
|
5df7c58b1b | ||
|
|
bb680ac514 | ||
|
|
e18018cacd | ||
|
|
5d91c8832b | ||
|
|
c96c8ac30d | ||
|
|
f930533d8b | ||
|
|
29bfb8a8bf | ||
|
|
f04359f398 | ||
|
|
c24052e976 | ||
|
|
5f8e43fc67 | ||
|
|
5427b146cf | ||
|
|
6f231ce800 | ||
|
|
d66d1c8739 | ||
|
|
50b4388b8d | ||
|
|
9cc8b75ffb | ||
|
|
e715342f7a | ||
|
|
c86ac4f9a7 | ||
|
|
b79fe06be4 | ||
|
|
e5764ac495 | ||
|
|
2ff7cb8956 | ||
|
|
3064ab4b25 | ||
|
|
d2f8d2e903 | ||
|
|
036c7796e5 | ||
|
|
356dd46537 | ||
|
|
bb30e1abb8 | ||
|
|
84d225e389 | ||
|
|
dcf2780cac | ||
|
|
3e421c770b | ||
|
|
19cb0e873a | ||
|
|
ed81dbc4a2 | ||
|
|
a93d5b87e1 | ||
|
|
d40a52e403 | ||
|
|
a4a3797cc1 | ||
|
|
bd29e5f13a | ||
|
|
ce13ee8a55 | ||
|
|
e5ed5fbc6a | ||
|
|
ff7eca2f08 | ||
|
|
06be217030 | ||
|
|
4880052559 | ||
|
|
147043857b | ||
|
|
1bfa1a7746 | ||
|
|
3747a6a454 | ||
|
|
f1e6246962 | ||
|
|
d2c6190b59 | ||
|
|
0f8247ce69 | ||
|
|
dae3be99ce | ||
|
|
6e625e0cc9 | ||
|
|
a602101695 | ||
|
|
48d86fdbf5 | ||
|
|
d6cfde0f94 | ||
|
|
1b9b4fdd39 | ||
|
|
8bb551eb10 | ||
|
|
6177035f84 | ||
|
|
e6d3ce5918 | ||
|
|
9e08143981 | ||
|
|
2014a48d22 | ||
|
|
b7e1202cf1 | ||
|
|
44b994414d | ||
|
|
a7265c2493 | ||
|
|
261ec270c5 | ||
|
|
356be511a8 | ||
|
|
f896e72013 | ||
|
|
187a895265 | ||
|
|
6224f8ca51 | ||
|
|
3b27e6e466 | ||
|
|
4e53deec9d | ||
|
|
2cafa78339 | ||
|
|
f3f86017b6 | ||
|
|
5479080eb2 | ||
|
|
3cb3e8a7f9 | ||
|
|
6a907f1fed | ||
|
|
241f845c08 | ||
|
|
623f63abb3 | ||
|
|
293adc3a99 | ||
|
|
dee9f90a0b | ||
|
|
a7348f0eb9 | ||
|
|
7457735c04 | ||
|
|
0f389b2a48 | ||
|
|
bfe01899a4 | ||
|
|
9531762c44 | ||
|
|
e59a35e804 | ||
|
|
21f5f5fe5e | ||
|
|
e6483fed98 | ||
|
|
98bc04697e | ||
|
|
38e9b59b89 | ||
|
|
118b22fe56 | ||
|
|
8062694331 | ||
|
|
e576235307 | ||
|
|
e87502e7bf | ||
|
|
400ed9e999 | ||
|
|
5b01ad23c4 | ||
|
|
9a06fa4704 | ||
|
|
c5555ad365 | ||
|
|
9c6db1d730 | ||
|
|
30cfe69e26 | ||
|
|
e45049a602 | ||
|
|
82129ff3bd | ||
|
|
593b603295 | ||
|
|
54b2e41afd | ||
|
|
ede6e6dd87 | ||
|
|
e18ea88735 | ||
|
|
750dfe746e | ||
|
|
53404f1002 | ||
|
|
5623784c59 | ||
|
|
d122de04e4 | ||
|
|
2fa9774955 |
@@ -79,6 +79,8 @@ Then, **for a method** of an eligible class:
|
||||
|
||||
## Installation
|
||||
|
||||
Note : PHP7 is required. Migrating to PHP8 requires some additional work which is questionable as an alternative way to generate a documentation is being considered.
|
||||
|
||||
```
|
||||
cd .doc
|
||||
composer require phpdocumentor/phpdocumentor:~2 --dev
|
||||
|
||||
@@ -79,12 +79,20 @@ gitGraph
|
||||
commit id: "2023-08-10" tag: "2.7.9"
|
||||
checkout support/3.1
|
||||
commit id: "2023-12-20" tag: "3.1.1"
|
||||
checkout support/2.7
|
||||
commit id: "2024-01-17" tag: "2.7.10"
|
||||
checkout develop
|
||||
commit id: "2024-06-25" tag: "3.2.0-beta1" type: HIGHLIGHT
|
||||
commit id: "2024-01-15" tag: "Start 3.2" type: HIGHLIGHT
|
||||
branch support/3.2 order: 830
|
||||
checkout support/2.7
|
||||
commit id: "2024-01-17a" tag: "2.7.10"
|
||||
checkout support/3.0
|
||||
commit id: "2024-01-17b" tag: "3.0.4"
|
||||
checkout support/2.7
|
||||
commit id: "2024-09-28" tag: "2.7.11"
|
||||
checkout support/3.1
|
||||
commit id: "2024-09-27" tag: "3.1.2"
|
||||
checkout support/3.2
|
||||
commit id: "2024-06-25" tag: "3.2.0-beta1" type: REVERSE
|
||||
commit id: "2024-08-07" tag: "3.2.0"
|
||||
```
|
||||
|
||||
To learn more, check the [iTop community versions history on the official wiki](https://www.itophub.io/wiki/page?id=latest:release:start).
|
||||
|
||||
43
.github/workflows/action.yml
vendored
Normal file
43
.github/workflows/action.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
name: Add PRs to Combodo PRs Dashboard
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
|
||||
jobs:
|
||||
add-to-project:
|
||||
name: Add PR to Combodo Project
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check if author is a member of the organization
|
||||
id: check-membership
|
||||
run: |
|
||||
ORG="Combodo"
|
||||
AUTHOR=$(jq -r .pull_request.user.login "$GITHUB_EVENT_PATH")
|
||||
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token ${{ secrets.PR_AUTOMATICALLY_ADD_TO_PROJECT }}" \
|
||||
"https://api.github.com/orgs/$ORG/members/$AUTHOR")
|
||||
if [ "$RESPONSE" == "404" ]; then
|
||||
echo "project_url=https://github.com/orgs/Combodo/projects/5" >> $GITHUB_ENV
|
||||
echo "is_member=false" >> $GITHUB_ENV
|
||||
else
|
||||
echo "project_url=https://github.com/orgs/Combodo/projects/4" >> $GITHUB_ENV
|
||||
echo "is_member=true" >> $GITHUB_ENV
|
||||
|
||||
fi
|
||||
|
||||
- name: Add internal tag if member
|
||||
if: env.is_member == 'true'
|
||||
run: |
|
||||
curl -X POST -H "Authorization: token ${{ secrets.PR_AUTOMATICALLY_ADD_TO_PROJECT }}" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
https://api.github.com/repos/Combodo/iTop/issues/${{ github.event.pull_request.number }}/labels \
|
||||
-d '{"labels":["internal"]}'
|
||||
env:
|
||||
is_member: ${{ env.is_member }}
|
||||
|
||||
- name: Add PR to the appropriate project
|
||||
uses: actions/add-to-project@v1.0.2
|
||||
with:
|
||||
project-url: ${{ env.project_url }}
|
||||
github-token: ${{ secrets.PR_AUTOMATICALLY_ADD_TO_PROJECT }}
|
||||
@@ -25,12 +25,34 @@
|
||||
|
||||
|
||||
if (count($argv) === 1) {
|
||||
echo '⚠ You must pass the base tag/sha1 as parameter';
|
||||
echo "⚠ You must pass the base tag/sha1 as parameter\n";
|
||||
exit(1);
|
||||
}
|
||||
$sBaseReference = $argv[1];
|
||||
|
||||
|
||||
/**
|
||||
* Replace the Github emojis codes by their UTF-8 character equivalent
|
||||
*/
|
||||
function ReplaceGitmojis(string $sLine)
|
||||
{
|
||||
static $aGitmojis = null;
|
||||
|
||||
if ($aGitmojis === null) {
|
||||
$aRawGitmojis = json_decode(trim(file_get_contents(__DIR__.'/gitmojis.json')), true);
|
||||
if ($aRawGitmojis === false) {
|
||||
echo "\nFailed to parse ".__DIR__."/gitmojis.json, emoji codes will not be replaced by their unicode equivalent.\n";
|
||||
} else {
|
||||
foreach($aRawGitmojis["gitmojis"] as $aGitmoji) {
|
||||
$aGitmojis[$aGitmoji['code']] = $aGitmoji['emoji'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (is_array($aGitmojis)) {
|
||||
return str_replace(array_keys($aGitmojis), array_values($aGitmojis), $sLine);
|
||||
}
|
||||
}
|
||||
|
||||
//--- Get log
|
||||
$sGitLogCommand = 'git log --decorate --pretty="%h;%s" --date-order --no-merges '.$sBaseReference.'..HEAD';
|
||||
$sGitLogRaw = shell_exec($sGitLogCommand);
|
||||
@@ -73,5 +95,5 @@ echo "\n";
|
||||
echo "# Logs line without bug referenced\n";
|
||||
echo "sha1;subject\n";
|
||||
foreach ($aLogLineNoBug as $sLogLine) {
|
||||
echo "$sLogLine\n";
|
||||
}
|
||||
echo ReplaceGitmojis($sLogLine)."\n";
|
||||
}
|
||||
|
||||
589
.make/release/gitmojis.json
Normal file
589
.make/release/gitmojis.json
Normal file
@@ -0,0 +1,589 @@
|
||||
{
|
||||
"$schema": "https://gitmoji.dev/api/gitmojis/schema",
|
||||
"gitmojis": [
|
||||
{
|
||||
"emoji": "🎨",
|
||||
"entity": "🎨",
|
||||
"code": ":art:",
|
||||
"description": "Improve structure / format of the code.",
|
||||
"name": "art",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "⚡️",
|
||||
"entity": "⚡",
|
||||
"code": ":zap:",
|
||||
"description": "Improve performance.",
|
||||
"name": "zap",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🔥",
|
||||
"entity": "🔥",
|
||||
"code": ":fire:",
|
||||
"description": "Remove code or files.",
|
||||
"name": "fire",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🐛",
|
||||
"entity": "🐛",
|
||||
"code": ":bug:",
|
||||
"description": "Fix a bug.",
|
||||
"name": "bug",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🚑️",
|
||||
"entity": "🚑",
|
||||
"code": ":ambulance:",
|
||||
"description": "Critical hotfix.",
|
||||
"name": "ambulance",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "✨",
|
||||
"entity": "✨",
|
||||
"code": ":sparkles:",
|
||||
"description": "Introduce new features.",
|
||||
"name": "sparkles",
|
||||
"semver": "minor"
|
||||
},
|
||||
{
|
||||
"emoji": "📝",
|
||||
"entity": "📝",
|
||||
"code": ":memo:",
|
||||
"description": "Add or update documentation.",
|
||||
"name": "memo",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🚀",
|
||||
"entity": "🚀",
|
||||
"code": ":rocket:",
|
||||
"description": "Deploy stuff.",
|
||||
"name": "rocket",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "💄",
|
||||
"entity": "&#ff99cc;",
|
||||
"code": ":lipstick:",
|
||||
"description": "Add or update the UI and style files.",
|
||||
"name": "lipstick",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🎉",
|
||||
"entity": "🎉",
|
||||
"code": ":tada:",
|
||||
"description": "Begin a project.",
|
||||
"name": "tada",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "✅",
|
||||
"entity": "✅",
|
||||
"code": ":white_check_mark:",
|
||||
"description": "Add, update, or pass tests.",
|
||||
"name": "white-check-mark",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🔒️",
|
||||
"entity": "🔒",
|
||||
"code": ":lock:",
|
||||
"description": "Fix security or privacy issues.",
|
||||
"name": "lock",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🔐",
|
||||
"entity": "🔐",
|
||||
"code": ":closed_lock_with_key:",
|
||||
"description": "Add or update secrets.",
|
||||
"name": "closed-lock-with-key",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🔖",
|
||||
"entity": "🔖",
|
||||
"code": ":bookmark:",
|
||||
"description": "Release / Version tags.",
|
||||
"name": "bookmark",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🚨",
|
||||
"entity": "🚨",
|
||||
"code": ":rotating_light:",
|
||||
"description": "Fix compiler / linter warnings.",
|
||||
"name": "rotating-light",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🚧",
|
||||
"entity": "🚧",
|
||||
"code": ":construction:",
|
||||
"description": "Work in progress.",
|
||||
"name": "construction",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "💚",
|
||||
"entity": "💚",
|
||||
"code": ":green_heart:",
|
||||
"description": "Fix CI Build.",
|
||||
"name": "green-heart",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "⬇️",
|
||||
"entity": "⬇️",
|
||||
"code": ":arrow_down:",
|
||||
"description": "Downgrade dependencies.",
|
||||
"name": "arrow-down",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "⬆️",
|
||||
"entity": "⬆️",
|
||||
"code": ":arrow_up:",
|
||||
"description": "Upgrade dependencies.",
|
||||
"name": "arrow-up",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "📌",
|
||||
"entity": "📌",
|
||||
"code": ":pushpin:",
|
||||
"description": "Pin dependencies to specific versions.",
|
||||
"name": "pushpin",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "👷",
|
||||
"entity": "👷",
|
||||
"code": ":construction_worker:",
|
||||
"description": "Add or update CI build system.",
|
||||
"name": "construction-worker",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "📈",
|
||||
"entity": "📈",
|
||||
"code": ":chart_with_upwards_trend:",
|
||||
"description": "Add or update analytics or track code.",
|
||||
"name": "chart-with-upwards-trend",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "♻️",
|
||||
"entity": "♻",
|
||||
"code": ":recycle:",
|
||||
"description": "Refactor code.",
|
||||
"name": "recycle",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "➕",
|
||||
"entity": "➕",
|
||||
"code": ":heavy_plus_sign:",
|
||||
"description": "Add a dependency.",
|
||||
"name": "heavy-plus-sign",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "➖",
|
||||
"entity": "➖",
|
||||
"code": ":heavy_minus_sign:",
|
||||
"description": "Remove a dependency.",
|
||||
"name": "heavy-minus-sign",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🔧",
|
||||
"entity": "🔧",
|
||||
"code": ":wrench:",
|
||||
"description": "Add or update configuration files.",
|
||||
"name": "wrench",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🔨",
|
||||
"entity": "🔨",
|
||||
"code": ":hammer:",
|
||||
"description": "Add or update development scripts.",
|
||||
"name": "hammer",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🌐",
|
||||
"entity": "🌐",
|
||||
"code": ":globe_with_meridians:",
|
||||
"description": "Internationalization and localization.",
|
||||
"name": "globe-with-meridians",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "✏️",
|
||||
"entity": "",
|
||||
"code": ":pencil2:",
|
||||
"description": "Fix typos.",
|
||||
"name": "pencil2",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "💩",
|
||||
"entity": "",
|
||||
"code": ":poop:",
|
||||
"description": "Write bad code that needs to be improved.",
|
||||
"name": "poop",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "⏪️",
|
||||
"entity": "⏪",
|
||||
"code": ":rewind:",
|
||||
"description": "Revert changes.",
|
||||
"name": "rewind",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🔀",
|
||||
"entity": "🔀",
|
||||
"code": ":twisted_rightwards_arrows:",
|
||||
"description": "Merge branches.",
|
||||
"name": "twisted-rightwards-arrows",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "📦️",
|
||||
"entity": "F4E6;",
|
||||
"code": ":package:",
|
||||
"description": "Add or update compiled files or packages.",
|
||||
"name": "package",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "👽️",
|
||||
"entity": "F47D;",
|
||||
"code": ":alien:",
|
||||
"description": "Update code due to external API changes.",
|
||||
"name": "alien",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🚚",
|
||||
"entity": "F69A;",
|
||||
"code": ":truck:",
|
||||
"description": "Move or rename resources (e.g.: files, paths, routes).",
|
||||
"name": "truck",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "📄",
|
||||
"entity": "F4C4;",
|
||||
"code": ":page_facing_up:",
|
||||
"description": "Add or update license.",
|
||||
"name": "page-facing-up",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "💥",
|
||||
"entity": "💥",
|
||||
"code": ":boom:",
|
||||
"description": "Introduce breaking changes.",
|
||||
"name": "boom",
|
||||
"semver": "major"
|
||||
},
|
||||
{
|
||||
"emoji": "🍱",
|
||||
"entity": "F371",
|
||||
"code": ":bento:",
|
||||
"description": "Add or update assets.",
|
||||
"name": "bento",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "♿️",
|
||||
"entity": "♿",
|
||||
"code": ":wheelchair:",
|
||||
"description": "Improve accessibility.",
|
||||
"name": "wheelchair",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "💡",
|
||||
"entity": "💡",
|
||||
"code": ":bulb:",
|
||||
"description": "Add or update comments in source code.",
|
||||
"name": "bulb",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🍻",
|
||||
"entity": "🍻",
|
||||
"code": ":beers:",
|
||||
"description": "Write code drunkenly.",
|
||||
"name": "beers",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "💬",
|
||||
"entity": "💬",
|
||||
"code": ":speech_balloon:",
|
||||
"description": "Add or update text and literals.",
|
||||
"name": "speech-balloon",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🗃️",
|
||||
"entity": "🗃",
|
||||
"code": ":card_file_box:",
|
||||
"description": "Perform database related changes.",
|
||||
"name": "card-file-box",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🔊",
|
||||
"entity": "🔊",
|
||||
"code": ":loud_sound:",
|
||||
"description": "Add or update logs.",
|
||||
"name": "loud-sound",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🔇",
|
||||
"entity": "🔇",
|
||||
"code": ":mute:",
|
||||
"description": "Remove logs.",
|
||||
"name": "mute",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "👥",
|
||||
"entity": "👥",
|
||||
"code": ":busts_in_silhouette:",
|
||||
"description": "Add or update contributor(s).",
|
||||
"name": "busts-in-silhouette",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🚸",
|
||||
"entity": "🚸",
|
||||
"code": ":children_crossing:",
|
||||
"description": "Improve user experience / usability.",
|
||||
"name": "children-crossing",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🏗️",
|
||||
"entity": "f3d7;",
|
||||
"code": ":building_construction:",
|
||||
"description": "Make architectural changes.",
|
||||
"name": "building-construction",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "📱",
|
||||
"entity": "📱",
|
||||
"code": ":iphone:",
|
||||
"description": "Work on responsive design.",
|
||||
"name": "iphone",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🤡",
|
||||
"entity": "🤡",
|
||||
"code": ":clown_face:",
|
||||
"description": "Mock things.",
|
||||
"name": "clown-face",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🥚",
|
||||
"entity": "🥚",
|
||||
"code": ":egg:",
|
||||
"description": "Add or update an easter egg.",
|
||||
"name": "egg",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🙈",
|
||||
"entity": "bdfe7;",
|
||||
"code": ":see_no_evil:",
|
||||
"description": "Add or update a .gitignore file.",
|
||||
"name": "see-no-evil",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "📸",
|
||||
"entity": "📸",
|
||||
"code": ":camera_flash:",
|
||||
"description": "Add or update snapshots.",
|
||||
"name": "camera-flash",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "⚗️",
|
||||
"entity": "⚗",
|
||||
"code": ":alembic:",
|
||||
"description": "Perform experiments.",
|
||||
"name": "alembic",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🔍️",
|
||||
"entity": "🔍",
|
||||
"code": ":mag:",
|
||||
"description": "Improve SEO.",
|
||||
"name": "mag",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🏷️",
|
||||
"entity": "🏷",
|
||||
"code": ":label:",
|
||||
"description": "Add or update types.",
|
||||
"name": "label",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🌱",
|
||||
"entity": "🌱",
|
||||
"code": ":seedling:",
|
||||
"description": "Add or update seed files.",
|
||||
"name": "seedling",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🚩",
|
||||
"entity": "🚩",
|
||||
"code": ":triangular_flag_on_post:",
|
||||
"description": "Add, update, or remove feature flags.",
|
||||
"name": "triangular-flag-on-post",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🥅",
|
||||
"entity": "🥅",
|
||||
"code": ":goal_net:",
|
||||
"description": "Catch errors.",
|
||||
"name": "goal-net",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "💫",
|
||||
"entity": "💫",
|
||||
"code": ":dizzy:",
|
||||
"description": "Add or update animations and transitions.",
|
||||
"name": "dizzy",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🗑️",
|
||||
"entity": "🗑",
|
||||
"code": ":wastebasket:",
|
||||
"description": "Deprecate code that needs to be cleaned up.",
|
||||
"name": "wastebasket",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🛂",
|
||||
"entity": "🛂",
|
||||
"code": ":passport_control:",
|
||||
"description": "Work on code related to authorization, roles and permissions.",
|
||||
"name": "passport-control",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🩹",
|
||||
"entity": "🩹",
|
||||
"code": ":adhesive_bandage:",
|
||||
"description": "Simple fix for a non-critical issue.",
|
||||
"name": "adhesive-bandage",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🧐",
|
||||
"entity": "🧐",
|
||||
"code": ":monocle_face:",
|
||||
"description": "Data exploration/inspection.",
|
||||
"name": "monocle-face",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "⚰️",
|
||||
"entity": "⚰",
|
||||
"code": ":coffin:",
|
||||
"description": "Remove dead code.",
|
||||
"name": "coffin",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🧪",
|
||||
"entity": "🧪",
|
||||
"code": ":test_tube:",
|
||||
"description": "Add a failing test.",
|
||||
"name": "test-tube",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "👔",
|
||||
"entity": "👔",
|
||||
"code": ":necktie:",
|
||||
"description": "Add or update business logic.",
|
||||
"name": "necktie",
|
||||
"semver": "patch"
|
||||
},
|
||||
{
|
||||
"emoji": "🩺",
|
||||
"entity": "🩺",
|
||||
"code": ":stethoscope:",
|
||||
"description": "Add or update healthcheck.",
|
||||
"name": "stethoscope",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🧱",
|
||||
"entity": "🧱",
|
||||
"code": ":bricks:",
|
||||
"description": "Infrastructure related changes.",
|
||||
"name": "bricks",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🧑💻",
|
||||
"entity": "🧑‍💻",
|
||||
"code": ":technologist:",
|
||||
"description": "Improve developer experience.",
|
||||
"name": "technologist",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "💸",
|
||||
"entity": "💸",
|
||||
"code": ":money_with_wings:",
|
||||
"description": "Add sponsorships or money related infrastructure.",
|
||||
"name": "money-with-wings",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🧵",
|
||||
"entity": "🧵",
|
||||
"code": ":thread:",
|
||||
"description": "Add or update code related to multithreading or concurrency.",
|
||||
"name": "thread",
|
||||
"semver": null
|
||||
},
|
||||
{
|
||||
"emoji": "🦺",
|
||||
"entity": "🦺",
|
||||
"code": ":safety_vest:",
|
||||
"description": "Add or update code related to validation.",
|
||||
"name": "safety-vest",
|
||||
"semver": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -90,6 +90,7 @@ We would like to give a special thank you 🤗 to the people from the community
|
||||
- Dejin, Bie (a.k.a [@bdejin](https://github.com/bdejin))
|
||||
- Dvořák, Lukáš
|
||||
- Goethals, Stefan
|
||||
- Giuva, Vincenzo Katriel (a.k.a [@DarkNight97boss](https://github.com/DarkNight97boss))
|
||||
- Gumble, David
|
||||
- Ji, Leeb (冀利斌) (a.k.a [@chileeb](https://github.com/chileeb))
|
||||
- Kaltefleiter, Lars (a.k.a [@larhip](https://www.github.com/larhip))
|
||||
|
||||
@@ -64,13 +64,13 @@ interface iLoginFSMExtension extends iLoginExtension
|
||||
* If a page is displayed, the action must exit at this point
|
||||
* if LoginWebPage::LOGIN_FSM_RETURN_ERROR is returned $iErrorCode must be set
|
||||
* if LoginWebPage::LOGIN_FSM_RETURN_OK is returned then the login is OK and terminated
|
||||
* if LoginWebPage::LOGIN_FSM_RETURN_IGNORE is returned then the FSM will proceed to next plugin or state
|
||||
* if LoginWebPage::LOGIN_FSM_CONTINUE is returned then the FSM will proceed to next plugin or state
|
||||
*
|
||||
* @api
|
||||
* @param string $sLoginState (see LoginWebPage::LOGIN_STATE_...)
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
public function LoginAction($sLoginState, &$iErrorCode);
|
||||
}
|
||||
@@ -83,7 +83,7 @@ interface iLoginFSMExtension extends iLoginExtension
|
||||
* * If a page is displayed, the action must exit at this point
|
||||
* * if LoginWebPage::LOGIN_FSM_RETURN_ERROR is returned $iErrorCode must be set
|
||||
* * if LoginWebPage::LOGIN_FSM_RETURN_OK is returned then the login is OK and terminated
|
||||
* * if LoginWebPage::LOGIN_FSM_RETURN_IGNORE is returned then the FSM will proceed to next plugin or to next state
|
||||
* * if LoginWebPage::LOGIN_FSM_CONTINUE is returned then the FSM will proceed to next plugin or to next state
|
||||
*
|
||||
* @api
|
||||
* @package LoginExtensibilityAPI
|
||||
@@ -136,7 +136,7 @@ abstract class AbstractLoginFSMExtension implements iLoginFSMExtension
|
||||
* @api
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
protected function OnStart(&$iErrorCode)
|
||||
{
|
||||
@@ -150,7 +150,7 @@ abstract class AbstractLoginFSMExtension implements iLoginFSMExtension
|
||||
* @api
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
protected function OnModeDetection(&$iErrorCode)
|
||||
{
|
||||
@@ -167,7 +167,7 @@ abstract class AbstractLoginFSMExtension implements iLoginFSMExtension
|
||||
* @api
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
protected function OnReadCredentials(&$iErrorCode)
|
||||
{
|
||||
@@ -181,7 +181,7 @@ abstract class AbstractLoginFSMExtension implements iLoginFSMExtension
|
||||
* @api
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
protected function OnCheckCredentials(&$iErrorCode)
|
||||
{
|
||||
@@ -192,7 +192,7 @@ abstract class AbstractLoginFSMExtension implements iLoginFSMExtension
|
||||
* @api
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
protected function OnCredentialsOK(&$iErrorCode)
|
||||
{
|
||||
@@ -203,7 +203,7 @@ abstract class AbstractLoginFSMExtension implements iLoginFSMExtension
|
||||
* @api
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
protected function OnUsersOK(&$iErrorCode)
|
||||
{
|
||||
@@ -214,7 +214,7 @@ abstract class AbstractLoginFSMExtension implements iLoginFSMExtension
|
||||
* @api
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
protected function OnConnected(&$iErrorCode)
|
||||
{
|
||||
@@ -225,7 +225,7 @@ abstract class AbstractLoginFSMExtension implements iLoginFSMExtension
|
||||
* @api
|
||||
* @param int $iErrorCode (see LoginWebPage::EXIT_CODE_...)
|
||||
*
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_RETURN_IGNORE
|
||||
* @return int LoginWebPage::LOGIN_FSM_RETURN_ERROR, LoginWebPage::LOGIN_FSM_RETURN_OK or LoginWebPage::LOGIN_FSM_CONTINUE
|
||||
*/
|
||||
protected function OnError(&$iErrorCode)
|
||||
{
|
||||
|
||||
@@ -805,16 +805,16 @@ HTML
|
||||
if (!$this->IsNew()) {
|
||||
// Look for any trigger that considers this object as "In Scope"
|
||||
// If any trigger has been found then display a tab with notifications
|
||||
//
|
||||
// If all triggers on an object have been deleted, we consider that we no longer need the event notification information
|
||||
$aTriggers = $this->GetRelatedTriggersIDs();
|
||||
if (count($aTriggers) > 0) {
|
||||
$iId = $this->GetKey();
|
||||
$aParams = array('triggers' => $aTriggers, 'id' => $iId);
|
||||
$aParams = array('class' => get_class($this), 'id' => $iId);
|
||||
$aNotifSearches = array();
|
||||
$iNotifsCount = 0;
|
||||
$aNotificationClasses = MetaModel::EnumChildClasses('EventNotification');
|
||||
foreach ($aNotificationClasses as $sNotifClass) {
|
||||
$aNotifSearches[$sNotifClass] = DBObjectSearch::FromOQL("SELECT $sNotifClass AS Ev JOIN Trigger AS T ON Ev.trigger_id = T.id WHERE T.id IN (:triggers) AND Ev.object_id = :id");
|
||||
$aNotifSearches[$sNotifClass] = DBObjectSearch::FromOQL("SELECT $sNotifClass AS Ev WHERE Ev.object_id = :id AND Ev.object_class = :class");
|
||||
$aNotifSearches[$sNotifClass]->SetInternalParams($aParams);
|
||||
$oNotifSet = new DBObjectSet($aNotifSearches[$sNotifClass], array());
|
||||
$iNotifsCount += $oNotifSet->Count();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
|
||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.3">
|
||||
<classes>
|
||||
<class id="AbstractResource" _delta="define">
|
||||
<parent>cmdbAbstractObject</parent>
|
||||
@@ -45,7 +45,7 @@
|
||||
<properties>
|
||||
<comment>/** Acknowledge welcome popup messages */</comment>
|
||||
<abstract>false</abstract>
|
||||
<category></category>
|
||||
<category/>
|
||||
<key_type>autoincrement</key_type>
|
||||
<db_table>priv_welcome_popup_acknowledge</db_table>
|
||||
</properties>
|
||||
|
||||
@@ -706,7 +706,7 @@ class DisplayBlock
|
||||
if ($bDoSearch)
|
||||
{
|
||||
// Keep the table_id identifying this table if we're performing a search
|
||||
$sTableId = utils::ReadParam('_table_id_', null, false, 'raw_data');
|
||||
$sTableId = utils::ReadParam('_table_id_', null, false, utils::ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER);
|
||||
if ($sTableId != null)
|
||||
{
|
||||
$aExtraParams['table_id'] = $sTableId;
|
||||
|
||||
@@ -303,7 +303,7 @@ class ExcelExporter
|
||||
{
|
||||
if ($this->sOutputFilePath == null)
|
||||
{
|
||||
return APPROOT.'data/bulk_export/'.$this->sToken.'.xlsx';
|
||||
return utils::GetDataPath().'bulk_export/'.$this->sToken.'.xlsx';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -313,14 +313,14 @@ class ExcelExporter
|
||||
|
||||
public static function GetExcelFileFromToken($sToken)
|
||||
{
|
||||
return @file_get_contents(APPROOT.'data/bulk_export/'.$sToken.'.xlsx');
|
||||
return @file_get_contents(utils::GetDataPath().'bulk_export/'.$sToken.'.xlsx');
|
||||
}
|
||||
|
||||
public static function CleanupFromToken($sToken)
|
||||
{
|
||||
@unlink(APPROOT.'data/bulk_export/'.$sToken.'.status');
|
||||
@unlink(APPROOT.'data/bulk_export/'.$sToken.'.data');
|
||||
@unlink(APPROOT.'data/bulk_export/'.$sToken.'.xlsx');
|
||||
@unlink(utils::GetDataPath().'bulk_export/'.$sToken.'.status');
|
||||
@unlink(utils::GetDataPath().'bulk_export/'.$sToken.'.data');
|
||||
@unlink(utils::GetDataPath().'bulk_export/'.$sToken.'.xlsx');
|
||||
}
|
||||
|
||||
public function Cleanup()
|
||||
@@ -334,7 +334,7 @@ class ExcelExporter
|
||||
*/
|
||||
public static function CleanupOldFiles()
|
||||
{
|
||||
$aFiles = glob(APPROOT.'data/bulk_export/*.*');
|
||||
$aFiles = glob(utils::GetDataPath().'bulk_export/*.*');
|
||||
$iDelay = MetaModel::GetConfig()->Get('xlsx_exporter_cleanup_old_files_delay');
|
||||
|
||||
if($iDelay > 0)
|
||||
@@ -416,14 +416,14 @@ class ExcelExporter
|
||||
|
||||
protected function CheckDataDir()
|
||||
{
|
||||
if(!is_dir(APPROOT."data/bulk_export"))
|
||||
if(!is_dir(utils::GetDataPath()."bulk_export"))
|
||||
{
|
||||
@mkdir(APPROOT."data/bulk_export", 0777, true /* recursive */);
|
||||
@mkdir(utils::GetDataPath()."bulk_export", 0777, true /* recursive */);
|
||||
clearstatcache();
|
||||
}
|
||||
if (!is_writable(APPROOT."data/bulk_export"))
|
||||
if (!is_writable(utils::GetDataPath()."bulk_export"))
|
||||
{
|
||||
throw new Exception('Data directory "'.APPROOT.'data/bulk_export" could not be written.');
|
||||
throw new Exception('Data directory "'.utils::GetDataPath().'bulk_export" could not be written.');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -433,12 +433,12 @@ class ExcelExporter
|
||||
{
|
||||
$sToken = $this->sToken;
|
||||
}
|
||||
return APPROOT."data/bulk_export/$sToken.status";
|
||||
return utils::GetDataPath()."bulk_export/$sToken.status";
|
||||
}
|
||||
|
||||
protected function GetDataFile()
|
||||
{
|
||||
return APPROOT.'data/bulk_export/'.$this->sToken.'.data';
|
||||
return utils::GetDataPath().'bulk_export/'.$this->sToken.'.data';
|
||||
}
|
||||
|
||||
protected function GetNewToken()
|
||||
|
||||
@@ -228,7 +228,7 @@ class privUITransactionFile
|
||||
*/
|
||||
public static function GetNewTransactionId()
|
||||
{
|
||||
if (!is_dir(APPROOT.'data/transactions'))
|
||||
if (!is_dir(utils::GetDataPath().'transactions'))
|
||||
{
|
||||
if (!is_writable(APPROOT.'data'))
|
||||
{
|
||||
@@ -236,22 +236,22 @@ class privUITransactionFile
|
||||
}
|
||||
// condition avoids race condition N°2345
|
||||
// See https://github.com/kalessil/phpinspectionsea/blob/master/docs/probable-bugs.md#mkdir-race-condition
|
||||
if (!mkdir($concurrentDirectory = APPROOT.'data/transactions') && !is_dir($concurrentDirectory))
|
||||
if (!mkdir($concurrentDirectory = utils::GetDataPath().'transactions') && !is_dir($concurrentDirectory))
|
||||
{
|
||||
throw new Exception('Failed to create the directory "'.APPROOT.'data/transactions". Ajust the rights on the parent directory or let an administrator create the transactions directory and give the web sever enough rights to write into it.');
|
||||
throw new Exception('Failed to create the directory "'.utils::GetDataPath().'transactions". Ajust the rights on the parent directory or let an administrator create the transactions directory and give the web sever enough rights to write into it.');
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_writable(APPROOT.'data/transactions'))
|
||||
if (!is_writable(utils::GetDataPath().'transactions'))
|
||||
{
|
||||
throw new Exception('The directory "'.APPROOT.'data/transactions" must be writable to the application.');
|
||||
throw new Exception('The directory "'.utils::GetDataPath().'transactions" must be writable to the application.');
|
||||
}
|
||||
|
||||
$iCurrentUserId = static::GetCurrentUserId();
|
||||
|
||||
self::CleanupOldTransactions();
|
||||
|
||||
$sTransactionIdFullPath = tempnam(APPROOT.'data/transactions', static::GetUserPrefix());
|
||||
$sTransactionIdFullPath = tempnam(utils::GetDataPath().'transactions', static::GetUserPrefix());
|
||||
file_put_contents($sTransactionIdFullPath, $iCurrentUserId, LOCK_EX);
|
||||
|
||||
$sTransactionIdFileName = basename($sTransactionIdFullPath);
|
||||
@@ -274,8 +274,8 @@ class privUITransactionFile
|
||||
*/
|
||||
public static function IsTransactionValid($id, $bRemoveTransaction = true)
|
||||
{
|
||||
// Constraint the transaction file within APPROOT.'data/transactions'
|
||||
$sTransactionDir = realpath(APPROOT.'data/transactions');
|
||||
// Constraint the transaction file within utils::GetDataPath().'transactions'
|
||||
$sTransactionDir = realpath(utils::GetDataPath().'transactions');
|
||||
$sFilepath = utils::RealPath($sTransactionDir.'/'.$id, $sTransactionDir);
|
||||
if (($sFilepath === false) || (strlen($sTransactionDir) == strlen($sFilepath)))
|
||||
{
|
||||
@@ -348,7 +348,7 @@ class privUITransactionFile
|
||||
|
||||
clearstatcache();
|
||||
$iLimit = time() - 24*3600;
|
||||
$sPattern = $sTransactionDir ? "$sTransactionDir/*" : APPROOT.'data/transactions/*';
|
||||
$sPattern = $sTransactionDir ? "$sTransactionDir/*" : utils::GetDataPath().'transactions/*';
|
||||
$aTransactions = glob($sPattern);
|
||||
foreach($aTransactions as $sFileName)
|
||||
{
|
||||
@@ -368,7 +368,7 @@ class privUITransactionFile
|
||||
{
|
||||
clearstatcache();
|
||||
$aResult = array();
|
||||
$aTransactions = glob(APPROOT.'data/transactions/'.self::GetUserPrefix().'*');
|
||||
$aTransactions = glob(utils::GetDataPath().'transactions/'.self::GetUserPrefix().'*');
|
||||
foreach($aTransactions as $sFileName)
|
||||
{
|
||||
$aResult[] = date('Y-m-d H:i:s', filemtime($sFileName)).' - '.basename($sFileName);
|
||||
|
||||
@@ -251,7 +251,7 @@ class appUserPreferences extends DBObject
|
||||
"key_type" => "autoincrement",
|
||||
"name_attcode" => "userid",
|
||||
"state_attcode" => "",
|
||||
"reconc_keys" => array(),
|
||||
"reconc_keys" => array("userid"),
|
||||
"db_table" => "priv_app_preferences",
|
||||
"db_key_field" => "id",
|
||||
"db_finalclass_field" => "",
|
||||
@@ -260,6 +260,8 @@ class appUserPreferences extends DBObject
|
||||
MetaModel::Init_Params($aParams);
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass"=>"User", "allowed_values"=>null, "sql"=>"userid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributePropertySet("preferences", array("allowed_values"=>null, "sql"=>"preferences", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_SetZListItems('list', array('preferences',));
|
||||
MetaModel::Init_SetZListItems('default_search', array('userid'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -113,6 +113,11 @@ class utils
|
||||
* @since 2.7.10 3.0.0
|
||||
*/
|
||||
public const ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER = 'element_identifier';
|
||||
/**
|
||||
* @var string For XML / HTML node id/class selector
|
||||
* @since 3.1.2 3.2.1
|
||||
*/
|
||||
public const ENUM_SANITIZATION_FILTER_ELEMENT_SELECTOR = 'element_selector';
|
||||
/**
|
||||
* @var string For variables names
|
||||
* @since 3.0.0
|
||||
@@ -497,8 +502,17 @@ class utils
|
||||
}
|
||||
break;
|
||||
|
||||
// For XML / HTML node identifiers
|
||||
case static::ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER:
|
||||
$retValue = preg_replace('/[^a-zA-Z0-9_-]/', '', $value);
|
||||
$retValue = filter_var($retValue, FILTER_VALIDATE_REGEXP,
|
||||
['options' => ['regexp' => '/^[A-Za-z0-9][A-Za-z0-9_-]*$/']]);
|
||||
break;
|
||||
|
||||
// For XML / HTML node id selector
|
||||
case static::ENUM_SANITIZATION_FILTER_ELEMENT_SELECTOR:
|
||||
$retValue = filter_var($value, FILTER_VALIDATE_REGEXP,
|
||||
['options' => ['regexp' => '/^[#\.][A-Za-z0-9][A-Za-z0-9_-]*$/']]);
|
||||
break;
|
||||
|
||||
case static::ENUM_SANITIZATION_FILTER_VARIABLE_NAME:
|
||||
@@ -1930,7 +1944,7 @@ SQL;
|
||||
CURLOPT_HEADER => false, // don't return the headers in the output
|
||||
CURLOPT_FOLLOWLOCATION => true, // follow redirects
|
||||
CURLOPT_ENCODING => "", // handle all encodings
|
||||
CURLOPT_USERAGENT => "spider", // who am i
|
||||
CURLOPT_USERAGENT => static::GetConfig()->Get('http.request.user_agent'), // who am i
|
||||
CURLOPT_AUTOREFERER => true, // set referer on redirect
|
||||
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
|
||||
CURLOPT_TIMEOUT => 120, // timeout on response
|
||||
|
||||
@@ -11,7 +11,7 @@ define('APPCONF', APPROOT.'conf/');
|
||||
*
|
||||
* @see ITOP_CORE_VERSION to get full iTop core version
|
||||
*/
|
||||
define('ITOP_DESIGN_LATEST_VERSION', '3.2');
|
||||
define('ITOP_DESIGN_LATEST_VERSION', '3.3');
|
||||
|
||||
/**
|
||||
* Constant containing the iTop core version, whatever application was built
|
||||
@@ -23,7 +23,7 @@ define('ITOP_DESIGN_LATEST_VERSION', '3.2');
|
||||
* @used-by utils::GetItopVersionWikiSyntax()
|
||||
* @used-by iTopModulesPhpVersionIntegrationTest
|
||||
*/
|
||||
define('ITOP_CORE_VERSION', '3.2.0');
|
||||
define('ITOP_CORE_VERSION', '3.3.0');
|
||||
|
||||
/**
|
||||
* @var string
|
||||
|
||||
@@ -566,6 +566,7 @@ class ActionEmail extends ActionNotification
|
||||
$oLog->Set('trigger_id', $oTrigger->GetKey());
|
||||
$oLog->Set('action_id', $this->GetKey());
|
||||
$oLog->Set('object_id', $aContextArgs['this->object()']->GetKey());
|
||||
$oLog->Set('object_class', get_class($aContextArgs['this->object()']));
|
||||
// Must be inserted now so that it gets a valid id that will make the link
|
||||
// between an eventual asynchronous task (queued) and the log
|
||||
$oLog->DBInsertNoReload();
|
||||
|
||||
@@ -2069,7 +2069,7 @@ class AttributeLinkedSet extends AttributeDefinition
|
||||
public function GetImportColumns()
|
||||
{
|
||||
$aColumns = array();
|
||||
$aColumns[$this->GetCode()] = 'TEXT'.CMDBSource::GetSqlStringColumnDefinition();
|
||||
$aColumns[$this->GetCode()] = 'MEDIUMTEXT'.CMDBSource::GetSqlStringColumnDefinition();
|
||||
|
||||
return $aColumns;
|
||||
}
|
||||
|
||||
@@ -201,6 +201,7 @@ abstract class AbstractWeeklyScheduledProcess implements iScheduledProcess
|
||||
static::MODULE_SETTING_TIME,
|
||||
static::GetDefaultModuleSettingTime()
|
||||
);
|
||||
$sProcessTime = trim($sProcessTime);
|
||||
if (!preg_match('/[0-2]\d:[0-5]\d/', $sProcessTime))
|
||||
{
|
||||
throw new ProcessInvalidConfigException($this->GetModuleName().": wrong format for setting '".static::MODULE_SETTING_TIME."' (found '$sProcessTime')");
|
||||
@@ -230,7 +231,7 @@ abstract class AbstractWeeklyScheduledProcess implements iScheduledProcess
|
||||
$iFirstDayOfWeek = $aDays[0];
|
||||
$iDayMove = $oNow->format('N') - $iFirstDayOfWeek;
|
||||
$oRet = clone $oNow;
|
||||
$oRet->modify('-'.$iDayMove.' days');
|
||||
$oRet->modify(-$iDayMove.' days');
|
||||
$oRet->modify('+1 weeks');
|
||||
}
|
||||
else
|
||||
@@ -238,7 +239,7 @@ abstract class AbstractWeeklyScheduledProcess implements iScheduledProcess
|
||||
$iNextDayOfWeek = $aDays[$iNextPos];
|
||||
$iMove = $iNextDayOfWeek - $oNow->format('N');
|
||||
$oRet = clone $oNow;
|
||||
$oRet->modify('+'.$iMove.' days');
|
||||
$oRet->modify($iMove.' days');
|
||||
}
|
||||
list($sHours, $sMinutes) = explode(':', $sProcessTime);
|
||||
$oRet->setTime((int)$sHours, (int)$sMinutes);
|
||||
|
||||
@@ -474,14 +474,14 @@ abstract class BulkExport
|
||||
*/
|
||||
protected function MakeTmpFile($sExtension)
|
||||
{
|
||||
if(!is_dir(APPROOT."data/bulk_export"))
|
||||
if(!is_dir(utils::GetDataPath()."bulk_export"))
|
||||
{
|
||||
@mkdir(APPROOT."data/bulk_export", 0777, true /* recursive */);
|
||||
@mkdir(utils::GetDataPath()."bulk_export", 0777, true /* recursive */);
|
||||
clearstatcache();
|
||||
}
|
||||
if (!is_writable(APPROOT."data/bulk_export"))
|
||||
if (!is_writable(utils::GetDataPath()."bulk_export"))
|
||||
{
|
||||
throw new Exception('Data directory "'.APPROOT.'data/bulk_export" could not be written.');
|
||||
throw new Exception('Data directory "'.utils::GetDataPath().'bulk_export" could not be written.');
|
||||
}
|
||||
|
||||
$iNum = rand();
|
||||
@@ -489,7 +489,7 @@ abstract class BulkExport
|
||||
{
|
||||
$iNum++;
|
||||
$sToken = sprintf("%08x", $iNum);
|
||||
$sFileName = APPROOT."data/bulk_export/$sToken.".$sExtension;
|
||||
$sFileName = utils::GetDataPath()."bulk_export/$sToken.".$sExtension;
|
||||
$hFile = @fopen($sFileName, 'x');
|
||||
}
|
||||
while($hFile === false);
|
||||
|
||||
@@ -108,7 +108,7 @@ class DefaultWorkingTimeComputer implements iWorkingTimeComputer
|
||||
// Default implementation: 24x7, no holidays: to compute the deadline, just add
|
||||
// the specified duration to the given date/time
|
||||
$oResult = clone $oStartDate;
|
||||
$oResult->modify('+'.$iDuration.' seconds');
|
||||
$oResult->modify($iDuration.' seconds');
|
||||
if (class_exists('WorkingTimeRecorder'))
|
||||
{
|
||||
WorkingTimeRecorder::SetValues($oStartDate->format('U'), $oResult->format('U'), $iDuration, WorkingTimeRecorder::COMPUTED_END);
|
||||
|
||||
@@ -29,7 +29,7 @@ define('ITOP_APPLICATION_SHORT', 'iTop');
|
||||
*
|
||||
* @see ITOP_CORE_VERSION to get iTop core version
|
||||
*/
|
||||
define('ITOP_VERSION', '3.2.0-dev');
|
||||
define('ITOP_VERSION', '3.3.0-dev');
|
||||
|
||||
define('ITOP_VERSION_NAME', 'Fullmoon');
|
||||
define('ITOP_REVISION', 'svn');
|
||||
@@ -71,7 +71,7 @@ define('DEFAULT_MAX_DISPLAY_LIMIT', 30);
|
||||
define('DEFAULT_STANDARD_RELOAD_INTERVAL', 5 * 60);
|
||||
define('DEFAULT_FAST_RELOAD_INTERVAL', 1 * 60);
|
||||
define('DEFAULT_SECURE_CONNECTION_REQUIRED', false);
|
||||
define('DEFAULT_ALLOWED_LOGIN_TYPES', 'form|external|basic');
|
||||
define('DEFAULT_ALLOWED_LOGIN_TYPES', 'form|external|basic|token');
|
||||
define('DEFAULT_EXT_AUTH_VARIABLE', '$_SERVER[\'REMOTE_USER\']');
|
||||
define('DEFAULT_ENCRYPTION_KEY', '@iT0pEncr1pti0n!'); // We'll use a random generated key later (if possible)
|
||||
define('DEFAULT_ENCRYPTION_LIB', 'Mcrypt'); // We'll define the best encryption available later
|
||||
@@ -1436,6 +1436,14 @@ class Config
|
||||
'quick_create.max_history_results' => [
|
||||
'type' => 'integer',
|
||||
'description' => 'Max. number of elements in the history',
|
||||
'default' => 5,
|
||||
'value' => 5,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
],
|
||||
'quick_create.max_popular_results' => [
|
||||
'type' => 'integer',
|
||||
'description' => 'Max. number of elements in the popular classes section',
|
||||
'default' => 10,
|
||||
'value' => 10,
|
||||
'source_of_value' => '',
|
||||
@@ -1747,6 +1755,14 @@ class Config
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
],
|
||||
'developer_mode.interface_cache.enabled' => [
|
||||
'type' => 'bool',
|
||||
'description' => 'If true then InterfaceDiscovery uses dynamic cache (in developer_mode)',
|
||||
'default' => false,
|
||||
'value' => false,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
],
|
||||
'theme.enable_precompilation' => [
|
||||
'type' => 'bool',
|
||||
'description' => 'If false, theme compilation will not use any precompiled file setup optimization.)',
|
||||
@@ -1787,6 +1803,13 @@ class Config
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
],
|
||||
'http.request.user_agent' => [
|
||||
'type' => 'string',
|
||||
'description' => 'HTTP request user agent, use this to set a custom agent on external requests.',
|
||||
'default' => ITOP_APPLICATION.'/'.ITOP_VERSION,
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
]
|
||||
];
|
||||
|
||||
public function IsProperty($sPropCode)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
|
||||
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.3">
|
||||
<classes>
|
||||
<class id="lnkActionNotificationToContact" _delta="define">
|
||||
<parent>cmdbAbstractObject</parent>
|
||||
@@ -99,7 +99,7 @@
|
||||
</presentation>
|
||||
<methods/>
|
||||
</class>
|
||||
<class id="ActionNewsroom" _delta="define">
|
||||
<class id="ActionNewsroom" _delta="define">
|
||||
<php_parent>
|
||||
<name>ActionNotification</name>
|
||||
</php_parent>
|
||||
@@ -148,7 +148,7 @@
|
||||
<display_max_height>96</display_max_height>
|
||||
<storage_max_width>256</storage_max_width>
|
||||
<storage_max_height>256</storage_max_height>
|
||||
<default_image />
|
||||
<default_image/>
|
||||
</field>
|
||||
<field id="priority" xsi:type="AttributeEnum">
|
||||
<sql>priority</sql>
|
||||
@@ -183,7 +183,7 @@
|
||||
</field>
|
||||
<field id="url" xsi:type="AttributeString">
|
||||
<sql>url</sql>
|
||||
<default_value>$this->url()$</default_value>
|
||||
<default_value>$this->url()$</default_value>
|
||||
<is_null_allowed>false</is_null_allowed>
|
||||
</field>
|
||||
</fields>
|
||||
@@ -369,7 +369,7 @@
|
||||
]]></code>
|
||||
</method>
|
||||
<method id="GetAsynchronousGlobalSetting">
|
||||
<comment></comment>
|
||||
<comment/>
|
||||
<static>true</static>
|
||||
<access>public</access>
|
||||
<code><![CDATA[
|
||||
@@ -381,7 +381,7 @@
|
||||
</method>
|
||||
</methods>
|
||||
</class>
|
||||
<class id="EventNotificationNewsroom" _delta="define">
|
||||
<class id="EventNotificationNewsroom" _delta="define">
|
||||
<php_parent>
|
||||
<name>EventNotification</name>
|
||||
</php_parent>
|
||||
@@ -405,7 +405,7 @@
|
||||
</reconciliation>
|
||||
<order>
|
||||
<columns>
|
||||
<column id="date" ascending="false" />
|
||||
<column id="date" ascending="false"/>
|
||||
</columns>
|
||||
</order>
|
||||
</properties>
|
||||
@@ -419,7 +419,7 @@
|
||||
<sql>icon</sql>
|
||||
<default_value/>
|
||||
<is_null_allowed>true</is_null_allowed>
|
||||
<default_image />
|
||||
<default_image/>
|
||||
</field>
|
||||
<field id="priority" xsi:type="AttributeEnum">
|
||||
<sql>priority</sql>
|
||||
@@ -501,14 +501,14 @@
|
||||
</items>
|
||||
</details>
|
||||
<summary>
|
||||
<items>
|
||||
<item id="date">
|
||||
<rank>10</rank>
|
||||
</item>
|
||||
<item id="message">
|
||||
<rank>20</rank>
|
||||
</item>
|
||||
</items>
|
||||
<items>
|
||||
<item id="date">
|
||||
<rank>10</rank>
|
||||
</item>
|
||||
<item id="message">
|
||||
<rank>20</rank>
|
||||
</item>
|
||||
</items>
|
||||
</summary>
|
||||
<list>
|
||||
<items>
|
||||
|
||||
@@ -3494,6 +3494,7 @@ abstract class DBObject implements iDisplay
|
||||
|
||||
$this->m_bIsInDB = true;
|
||||
$this->m_bDirty = false;
|
||||
$this->m_bFullyLoaded = true;
|
||||
foreach ($this->m_aCurrValues as $sAttCode => $value) {
|
||||
if (is_object($value)) {
|
||||
$value = clone $value;
|
||||
|
||||
@@ -1552,13 +1552,13 @@ abstract class DBSearch
|
||||
}
|
||||
|
||||
$sLogFile = 'queries.latest';
|
||||
file_put_contents(APPROOT.'data/'.$sLogFile.'.html', $sHtml);
|
||||
file_put_contents(utils::GetDataPath().$sLogFile.'.html', $sHtml);
|
||||
|
||||
$sLog = "<?php\n\$aQueriesLog = ".var_export(self::$m_aQueriesLog, true).";";
|
||||
file_put_contents(APPROOT.'data/'.$sLogFile.'.log', $sLog);
|
||||
file_put_contents(utils::GetDataPath().$sLogFile.'.log', $sLog);
|
||||
|
||||
// Cumulate the queries
|
||||
$sAllQueries = APPROOT.'data/queries.log';
|
||||
$sAllQueries = utils::GetDataPath().'queries.log';
|
||||
if (file_exists($sAllQueries))
|
||||
{
|
||||
// Merge the new queries into the existing log
|
||||
|
||||
@@ -154,7 +154,7 @@ class EMail implements iEMail
|
||||
*/
|
||||
public function SetInReplyTo(string $sMessageId)
|
||||
{
|
||||
$this->AddToHeader('In-Reply-To', $sMessageId);
|
||||
$this->oMailer->SetInReplyTo($sMessageId);
|
||||
}
|
||||
|
||||
public function SetBody($sBody, $sMimeType = 'text/html', $sCustomStyles = null)
|
||||
|
||||
@@ -131,7 +131,7 @@ class EventNotification extends Event
|
||||
"db_finalclass_field" => "",
|
||||
"order_by_default" => array('date' => false),
|
||||
'indexes' => array(
|
||||
array('object_id'),
|
||||
array( 'object_class', 'object_id'),
|
||||
)
|
||||
);
|
||||
MetaModel::Init_Params($aParams);
|
||||
@@ -139,9 +139,11 @@ class EventNotification extends Event
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("trigger_id", array("targetclass"=>"Trigger", "jointype"=> "", "allowed_values"=>null, "sql"=>"trigger_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("action_id", array("targetclass" => "Action", "jointype" => "", "allowed_values" => null, "sql" => "action_id", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeInteger("object_id", array("allowed_values" => null, "sql" => "object_id", "default_value" => 0, "is_null_allowed" => false, "depends_on" => array())));
|
||||
//@since 3.2.0
|
||||
MetaModel::Init_AddAttribute(new AttributeClass("object_class", array("class_category"=>"", "more_values"=>"", "sql"=>"object_class", "default_value"=>null, "is_null_allowed"=>true /*to avoid setting AbstractResource as default in database*/, "depends_on"=>array())));
|
||||
|
||||
// Display lists
|
||||
MetaModel::Init_SetZListItems('details', array('date', 'message', 'userinfo', 'trigger_id', 'action_id', 'object_id')); // Attributes to be displayed for the complete details
|
||||
MetaModel::Init_SetZListItems('details', array('date', 'message', 'userinfo', 'trigger_id', 'action_id', 'object_class', 'object_id')); // Attributes to be displayed for the complete details
|
||||
MetaModel::Init_SetZListItems('list', array('date', 'message')); // Attributes to be displayed for a list
|
||||
// Search criteria
|
||||
// MetaModel::Init_SetZListItems('standard_search', array('name')); // Criteria of the std search form
|
||||
@@ -176,7 +178,7 @@ class EventNotificationEmail extends EventNotification
|
||||
MetaModel::Init_AddAttribute(new AttributeTable("attachments", array("allowed_values"=>null, "sql"=>"attachments", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
|
||||
// Display lists
|
||||
MetaModel::Init_SetZListItems('details', array('date', 'userinfo', 'message', 'trigger_id', 'action_id', 'object_id', 'to', 'cc', 'bcc', 'from', 'subject', 'body', 'attachments')); // Attributes to be displayed for the complete details
|
||||
MetaModel::Init_SetZListItems('details', array('date', 'userinfo', 'message', 'trigger_id', 'action_id', 'object_class', 'object_id', 'to', 'cc', 'bcc', 'from', 'subject', 'body', 'attachments')); // Attributes to be displayed for the complete details
|
||||
MetaModel::Init_SetZListItems('list', array('date', 'message', 'to', 'subject', 'attachments')); // Attributes to be displayed for a list
|
||||
|
||||
// Search criteria
|
||||
|
||||
@@ -541,80 +541,6 @@ JS
|
||||
CombodoCKEditorHandler.EnableImageUpload('#' + $(this).attr('id'), '$sAbsoluteUrlAppRoot'+'pages/ajax.render.php?operation=cke_img_upload&temp_id=$sTempId&obj_class=$sObjClass&obj_key=$iObjKey');
|
||||
});
|
||||
JS;
|
||||
|
||||
return
|
||||
<<<JS
|
||||
// Hook the file upload of all CKEditor instances
|
||||
$('.htmlEditor').each(function() {
|
||||
var oEditor = $(this).ckeditorGet();
|
||||
oEditor.config.filebrowserBrowseUrl = '$sAbsoluteUrlAppRoot'+'pages/ajax.render.php?operation=cke_browse&temp_id=$sTempId&obj_class=$sObjClass&obj_key=$iObjKey';
|
||||
oEditor.on( 'fileUploadResponse', function( evt ) {
|
||||
var fileLoader = evt.data.fileLoader;
|
||||
var xhr = fileLoader.xhr;
|
||||
var data = evt.data;
|
||||
try {
|
||||
var response = JSON.parse( xhr.responseText );
|
||||
|
||||
// Error message does not need to mean that upload finished unsuccessfully.
|
||||
// It could mean that ex. file name was changes during upload due to naming collision.
|
||||
if ( response.error && response.error.message ) {
|
||||
data.message = response.error.message;
|
||||
}
|
||||
|
||||
// But !uploaded means error.
|
||||
if ( !response.uploaded ) {
|
||||
evt.cancel();
|
||||
} else {
|
||||
data.fileName = response.fileName;
|
||||
data.url = response.url;
|
||||
|
||||
// Do not call the default listener.
|
||||
evt.stop();
|
||||
}
|
||||
} catch ( err ) {
|
||||
// Response parsing error.
|
||||
data.message = fileLoader.lang.filetools.responseError;
|
||||
window.console && window.console.log( xhr.responseText );
|
||||
|
||||
evt.cancel();
|
||||
}
|
||||
} );
|
||||
|
||||
oEditor.on( 'fileUploadRequest', function( evt ) {
|
||||
evt.data.fileLoader.uploadUrl += '?operation=cke_img_upload&temp_id=$sTempId&obj_class=$sObjClass';
|
||||
}, null, null, 4 ); // Listener with priority 4 will be executed before priority 5.
|
||||
|
||||
oEditor.on( 'instanceReady', function() {
|
||||
if(!CKEDITOR.env.iOS && $('#'+oEditor.id+'_toolbox .ibo-vendors-ckeditor--toolbar-fullscreen-button').length == 0)
|
||||
{
|
||||
$('#'+oEditor.id+'_toolbox').append('<span class="ibo-vendors-ckeditor--toolbar-fullscreen-button editor-fullscreen-button" data-role="ibo-vendors-ckeditor--toolbar-fullscreen-button" title="$sToggleFullScreen"> </span>');
|
||||
$('#'+oEditor.id+'_toolbox .ibo-vendors-ckeditor--toolbar-fullscreen-button').on('click', function() {
|
||||
oEditor.execCommand('maximize');
|
||||
if ($(this).closest('.cke_maximized').length != 0)
|
||||
{
|
||||
$('#'+oEditor.id+'_toolbar_collapser').trigger('click');
|
||||
}
|
||||
});
|
||||
}
|
||||
if (oEditor.widgets.registered.uploadimage)
|
||||
{
|
||||
oEditor.widgets.registered.uploadimage.onUploaded = function( upload ) {
|
||||
var oData = JSON.parse(upload.xhr.responseText);
|
||||
this.replaceWith( '<img src="' + upload.url + '" ' +
|
||||
'width="' + oData.width + '" ' +
|
||||
'height="' + oData.height + '">' );
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
JS
|
||||
;
|
||||
}
|
||||
public static function EnableCKEditor5ImageUpload(DBObject $oObject, $sTempId){
|
||||
return <<<JS
|
||||
// Hook the file upload of all CKEditor instances
|
||||
JS;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1173,7 +1173,7 @@ class DeprecatedCallsLog extends LogAPI
|
||||
|
||||
/**
|
||||
* This will catch a message for all E_DEPRECATED and E_USER_DEPRECATED errors.
|
||||
* This handler is set in DeprecatedCallsLog::Enable
|
||||
* This handler is set in {@see DeprecatedCallsLog::Enable}
|
||||
*
|
||||
* @param int $errno
|
||||
* @param string $errstr
|
||||
@@ -1193,52 +1193,22 @@ class DeprecatedCallsLog extends LogAPI
|
||||
return false;
|
||||
}
|
||||
|
||||
$aStack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 4);
|
||||
if (isset($aStack[2]['function']) && ($aStack[2]['function'] == 'ForwardToTriggerError')) {
|
||||
// Let the notice bubble up
|
||||
return false;
|
||||
}
|
||||
|
||||
if (false === static::IsLogLevelEnabledSafe(self::LEVEL_WARNING, self::ENUM_CHANNEL_PHP_LIBMETHOD)) {
|
||||
// returns true so that nothing is throwned !
|
||||
// returns true so that nothing is thrown!
|
||||
return true;
|
||||
}
|
||||
|
||||
$aStack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 4);
|
||||
$iStackDeprecatedMethodLevel = 2; // level 0 = current method, level 1 = @trigger_error, level 2 = method containing the `trigger_error` call (can be either 'trigger_deprecation' or the faulty method), level 3 = In some cases, method containing the 'trigger_deprecation' call
|
||||
// In case current level is actually a 'trigger_deprecation' call, try to go one level further to get the real deprecated method
|
||||
if (array_key_exists($iStackDeprecatedMethodLevel, $aStack) && ($aStack[$iStackDeprecatedMethodLevel]['function'] === 'trigger_deprecation') && array_key_exists($iStackDeprecatedMethodLevel + 1, $aStack)) {
|
||||
$iStackDeprecatedMethodLevel++;
|
||||
}
|
||||
|
||||
$sDeprecatedObject = $aStack[$iStackDeprecatedMethodLevel]['class'];
|
||||
$sDeprecatedMethod = $aStack[$iStackDeprecatedMethodLevel]['function'];
|
||||
if (($sDeprecatedObject === __CLASS__) && ($sDeprecatedMethod === 'Log')) {
|
||||
// We are generating a trigger_error ourselves, we don't want to trace them !
|
||||
return false;
|
||||
}
|
||||
$sCallerFile = $aStack[$iStackDeprecatedMethodLevel]['file'];
|
||||
$sCallerLine = $aStack[$iStackDeprecatedMethodLevel]['line'];
|
||||
$sMessage = "Call to {$sDeprecatedObject}::{$sDeprecatedMethod} in {$sCallerFile}#L{$sCallerLine}";
|
||||
|
||||
$iStackCallerMethodLevel = $iStackDeprecatedMethodLevel + 1; // level 3 = caller of the deprecated method
|
||||
if (array_key_exists($iStackCallerMethodLevel, $aStack)) {
|
||||
$sCallerObject = $aStack[$iStackCallerMethodLevel]['class'] ?? null;
|
||||
$sCallerMethod = $aStack[$iStackCallerMethodLevel]['function'] ?? null;
|
||||
$sMessage .= ' (';
|
||||
if (!is_null($sCallerObject)) {
|
||||
$sMessage .= "{$sCallerObject}::{$sCallerMethod}";
|
||||
} else {
|
||||
$sCallerMethodFile = $aStack[$iStackCallerMethodLevel]['file'];
|
||||
$sCallerMethodLine = $aStack[$iStackCallerMethodLevel]['line'];
|
||||
if (!is_null($sCallerMethod)) {
|
||||
$sMessage .= "call to {$sCallerMethod}() in {$sCallerMethodFile}#L{$sCallerMethodLine}";
|
||||
} else {
|
||||
$sMessage .= "{$sCallerMethodFile}#L{$sCallerMethodLine}";
|
||||
}
|
||||
}
|
||||
$sMessage .= ')';
|
||||
}
|
||||
|
||||
if (!empty($errstr)) {
|
||||
$sMessage .= ' : '.$errstr;
|
||||
}
|
||||
$aStack = static::StripCallStack($aStack);
|
||||
$sMessage = "$errstr, called from ".static::SummarizeCallStack($aStack);
|
||||
|
||||
static::Warning($sMessage, self::ENUM_CHANNEL_PHP_LIBMETHOD);
|
||||
static::ForwardToTriggerError($sMessage);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1264,6 +1234,8 @@ class DeprecatedCallsLog extends LogAPI
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this helper at the beginning of a deprecated file (in its global scope)
|
||||
*
|
||||
* @since 3.0.1 3.1.0 N°4725 silently handles ConfigException
|
||||
* @since 3.0.4 3.1.0 N°4725 remove forgotten throw PHPDoc annotation
|
||||
*
|
||||
@@ -1298,9 +1270,12 @@ class DeprecatedCallsLog extends LogAPI
|
||||
}
|
||||
|
||||
static::Warning($sMessage, static::ENUM_CHANNEL_FILE);
|
||||
static::ForwardToTriggerError($sMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this helper when calling a deprecated extension method
|
||||
*
|
||||
* @param string $sImplementationClass Class implementing the deprecated API
|
||||
* @param string $sDeprecatedApi Class name of the deprecated API
|
||||
* @param string $sDeprecatedMethod Method name of the deprecated API
|
||||
@@ -1327,9 +1302,12 @@ class DeprecatedCallsLog extends LogAPI
|
||||
}
|
||||
|
||||
static::Warning($sMessage, self::ENUM_CHANNEL_PHP_API);
|
||||
static::ForwardToTriggerError($sMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this helper within deprecated methods
|
||||
*
|
||||
* @param string|null $sAdditionalMessage
|
||||
*
|
||||
* @link https://www.php.net/debug_backtrace
|
||||
@@ -1347,52 +1325,24 @@ class DeprecatedCallsLog extends LogAPI
|
||||
}
|
||||
|
||||
$aStack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
|
||||
$sMessage = self::GetMessageFromStack($aStack);
|
||||
|
||||
if (!is_null($sAdditionalMessage)) {
|
||||
$sMessage .= ' : '.$sAdditionalMessage;
|
||||
if (isset($aStack[1]['class'])) {
|
||||
$sFunctionDesc = $aStack[1]['class'].$aStack[1]['type'].$aStack[1]['function'];
|
||||
}
|
||||
else {
|
||||
$sFunctionDesc = $aStack[1]['function'];
|
||||
}
|
||||
|
||||
$sMessage = "Function $sFunctionDesc() is deprecated";
|
||||
if (!is_null($sAdditionalMessage)) {
|
||||
$sMessage .= ': '.$sAdditionalMessage;
|
||||
}
|
||||
|
||||
$sMessage .= '. Caller: '.self::SummarizeCallStack(array_slice($aStack, 1));
|
||||
|
||||
|
||||
static::Warning($sMessage, self::ENUM_CHANNEL_PHP_METHOD);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aDebugBacktrace data from {@see debug_backtrace()}
|
||||
*
|
||||
* @return string message to print to the log
|
||||
*/
|
||||
private static function GetMessageFromStack(array $aDebugBacktrace): string
|
||||
{
|
||||
// level 0 = current method
|
||||
// level 1 = deprecated method, containing the `NotifyDeprecatedPhpMethod` call
|
||||
$sMessage = 'Call'.self::GetMessageForCurrentStackLevel($aDebugBacktrace[1], " to ");
|
||||
|
||||
// level 2 = caller of the deprecated method
|
||||
if (array_key_exists(2, $aDebugBacktrace)) {
|
||||
$sMessage .= ' (from ';
|
||||
$sMessage .= self::GetMessageForCurrentStackLevel($aDebugBacktrace[2]);
|
||||
$sMessage .= ')';
|
||||
}
|
||||
|
||||
return $sMessage;
|
||||
}
|
||||
|
||||
private static function GetMessageForCurrentStackLevel(array $aCurrentLevelDebugTrace, ?string $sPrefix = ""): string
|
||||
{
|
||||
$sMessage = "";
|
||||
if (array_key_exists('class', $aCurrentLevelDebugTrace)) {
|
||||
$sDeprecatedObject = $aCurrentLevelDebugTrace['class'];
|
||||
$sDeprecatedMethod = $aCurrentLevelDebugTrace['function'] ?? "";
|
||||
$sMessage = "{$sPrefix}{$sDeprecatedObject}::{$sDeprecatedMethod} in ";
|
||||
}
|
||||
|
||||
if (array_key_exists('file', $aCurrentLevelDebugTrace)) {
|
||||
$sCallerFile = $aCurrentLevelDebugTrace['file'];
|
||||
$sCallerLine = $aCurrentLevelDebugTrace['line'] ?? "";
|
||||
$sMessage .= "{$sCallerFile}#L{$sCallerLine}";
|
||||
}
|
||||
|
||||
return $sMessage;
|
||||
static::ForwardToTriggerError($sMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1422,14 +1372,11 @@ class DeprecatedCallsLog extends LogAPI
|
||||
}
|
||||
|
||||
static::Warning($sMessage, self::ENUM_CHANNEL_PHP_ENDPOINT);
|
||||
static::ForwardToTriggerError($sMessage);
|
||||
}
|
||||
|
||||
public static function Log($sLevel, $sMessage, $sChannel = null, $aContext = array()): void
|
||||
{
|
||||
if (true === utils::IsDevelopmentEnvironment()) {
|
||||
trigger_error($sMessage, E_USER_DEPRECATED);
|
||||
}
|
||||
|
||||
try {
|
||||
parent::Log($sLevel, $sMessage, $sChannel, $aContext);
|
||||
}
|
||||
@@ -1437,6 +1384,61 @@ class DeprecatedCallsLog extends LogAPI
|
||||
// nothing much we can do... and we don't want to crash the caller !
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Strips some elements from the top of the call stack to skip calls that are not relevant to report the deprecated call
|
||||
* @param array $aCallStack Call stack as returned by {@see debug_backtrace()}
|
||||
*/
|
||||
protected static function StripCallStack($aCallStack): array
|
||||
{
|
||||
if (!isset($aCallStack[0]['line'])) {
|
||||
$aCallStack = array_slice($aCallStack, 1);
|
||||
}
|
||||
if (isset($aCallStack[1]['function']) && $aCallStack[1]['function'] === 'trigger_deprecation') {
|
||||
$aCallStack = array_slice($aCallStack, 1);
|
||||
}
|
||||
|
||||
return $aCallStack;
|
||||
}
|
||||
|
||||
protected static function SummarizeCallStack($aCallStack, $bRecurse = true)
|
||||
{
|
||||
if (count($aCallStack) == 0) {
|
||||
return null;
|
||||
}
|
||||
$sFileLine = $aCallStack[0]['file'].'#'.$aCallStack[0]['line'];
|
||||
$sSummary = $sFileLine;
|
||||
|
||||
// If possible and meaningful, add the class and method
|
||||
if (isset($aCallStack[1]['class'])) {
|
||||
$sSummary = $aCallStack[1]['class'].$aCallStack[1]['type'].$aCallStack[1]['function']." ($sFileLine)";
|
||||
}
|
||||
elseif (isset($aCallStack[1]['function'])) {
|
||||
if (in_array($aCallStack[1]['function'], ['include', 'require', 'include_once', 'require_once'])) {
|
||||
// No need to show the generic mechanism of inclusion
|
||||
$bRecurse = false;
|
||||
}
|
||||
else {
|
||||
$sSummary = $aCallStack[1]['function']." ($sFileLine)";
|
||||
}
|
||||
}
|
||||
|
||||
if ($bRecurse) {
|
||||
$sUpperSummary = static::SummarizeCallStack(array_slice($aCallStack, 1), false);
|
||||
if (!is_null($sUpperSummary)) {
|
||||
$sSummary .= ', itself called from '.$sUpperSummary;
|
||||
}
|
||||
}
|
||||
|
||||
return $sSummary;
|
||||
}
|
||||
|
||||
private static function ForwardToTriggerError(string $sMessage): void
|
||||
{
|
||||
if (true === utils::IsDevelopmentEnvironment()) {
|
||||
trigger_error($sMessage, E_USER_DEPRECATED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -7477,6 +7477,8 @@ abstract class MetaModel
|
||||
* @param string|null $sFilterInstanceOf [optional] if given, only instance of this string will be returned
|
||||
*
|
||||
* @return array classes=>instance implementing the given interface
|
||||
*
|
||||
* @see \Combodo\iTop\Service\InterfaceDiscovery\InterfaceDiscovery::FindItopClasses() to add extensibility to modules
|
||||
*/
|
||||
public static function EnumPlugins($sInterface, $sFilterInstanceOf = null)
|
||||
{
|
||||
|
||||
@@ -33,17 +33,19 @@ class ParseyyToken implements ArrayAccess
|
||||
return $this->string;
|
||||
}
|
||||
|
||||
function offsetExists($offset)
|
||||
function offsetExists($offset): bool
|
||||
{
|
||||
return isset($this->metadata[$offset]);
|
||||
}
|
||||
|
||||
function offsetGet($offset)
|
||||
// Return type mixed is not supported by PHP 7.4, we can remove the following PHP attribute and add the return type once iTop min PHP version is PHP 8.0+
|
||||
#[\ReturnTypeWillChange]
|
||||
function offsetGet($offset)
|
||||
{
|
||||
return $this->metadata[$offset];
|
||||
}
|
||||
|
||||
function offsetSet($offset, $value)
|
||||
function offsetSet($offset, $value): void
|
||||
{
|
||||
if ($offset === null) {
|
||||
if (isset($value[0])) {
|
||||
@@ -66,7 +68,7 @@ class ParseyyToken implements ArrayAccess
|
||||
}
|
||||
}
|
||||
|
||||
function offsetUnset($offset)
|
||||
function offsetUnset($offset): void
|
||||
{
|
||||
unset($this->metadata[$offset]);
|
||||
}
|
||||
|
||||
@@ -182,14 +182,14 @@ class PHP_LexerGenerator_Lexer
|
||||
$this->token = self::COMMENTEND;
|
||||
return true;
|
||||
}
|
||||
if (preg_match('/\G%([a-z]+)/', $this->data, $token, null, $this->N)) {
|
||||
if (preg_match('/\G%([a-z]+)/', $this->data, $token, 0, $this->N)) {
|
||||
$this->value = $token[1];
|
||||
$this->N += strlen($token[1]) + 1;
|
||||
$this->state = 'DeclarePI';
|
||||
$this->token = self::PI;
|
||||
return true;
|
||||
}
|
||||
if (preg_match('/\G[a-zA-Z_][a-zA-Z0-9_]*/', $this->data, $token, null, $this->N)) {
|
||||
if (preg_match('/\G[a-zA-Z_][a-zA-Z0-9_]*/', $this->data, $token, 0, $this->N)) {
|
||||
$this->value = $token[0];
|
||||
$this->token = self::PATTERN;
|
||||
$this->N += strlen($token[0]);
|
||||
@@ -216,7 +216,7 @@ class PHP_LexerGenerator_Lexer
|
||||
if ($this->data[$this->N] == '{') {
|
||||
return $this->lexCode();
|
||||
}
|
||||
if (!preg_match("/\G[^\n]+/", $this->data, $token, null, $this->N)) {
|
||||
if (!preg_match("/\G[^\n]+/", $this->data, $token, 0, $this->N)) {
|
||||
$this->error('Unexpected end of file');
|
||||
return false;
|
||||
}
|
||||
@@ -242,7 +242,7 @@ class PHP_LexerGenerator_Lexer
|
||||
if ($this->data[$this->N] == '{') {
|
||||
return $this->lexCode();
|
||||
}
|
||||
if (!preg_match("/\G[^\n]+/", $this->data, $token, null, $this->N)) {
|
||||
if (!preg_match("/\G[^\n]+/", $this->data, $token, 0, $this->N)) {
|
||||
$this->error('Unexpected end of file');
|
||||
return false;
|
||||
}
|
||||
@@ -406,7 +406,7 @@ class PHP_LexerGenerator_Lexer
|
||||
if ($this->data[$this->N] == '\'') {
|
||||
return $this->lexQuote('\'');
|
||||
}
|
||||
if (preg_match('/\G%([a-zA-Z_]+)/', $this->data, $token, null, $this->N)) {
|
||||
if (preg_match('/\G%([a-zA-Z_]+)/', $this->data, $token, 0, $this->N)) {
|
||||
$this->value = $token[1];
|
||||
$this->N += strlen($token[1]) + 1;
|
||||
$this->state = 'DeclarePIRule';
|
||||
@@ -419,7 +419,7 @@ class PHP_LexerGenerator_Lexer
|
||||
if ($this->data[$this->N] == '"') {
|
||||
return $this->lexQuote();
|
||||
}
|
||||
if (preg_match('/\G[a-zA-Z_][a-zA-Z0-9_]*/', $this->data, $token, null, $this->N)) {
|
||||
if (preg_match('/\G[a-zA-Z_][a-zA-Z0-9_]*/', $this->data, $token, 0, $this->N)) {
|
||||
$this->value = $token[0];
|
||||
$this->N += strlen($token[0]);
|
||||
$this->token = self::SUBPATTERN;
|
||||
|
||||
@@ -33,17 +33,19 @@ class PHP_LexerGenerator_ParseryyToken implements ArrayAccess
|
||||
return $this->_string;
|
||||
}
|
||||
|
||||
function offsetExists($offset)
|
||||
function offsetExists($offset): bool
|
||||
{
|
||||
return isset($this->metadata[$offset]);
|
||||
}
|
||||
|
||||
// Return type mixed is not supported by PHP 7.4, we can remove the following PHP attribute and add the return type once iTop min PHP version is PHP 8.0+
|
||||
#[\ReturnTypeWillChange]
|
||||
function offsetGet($offset)
|
||||
{
|
||||
return $this->metadata[$offset];
|
||||
}
|
||||
|
||||
function offsetSet($offset, $value)
|
||||
function offsetSet($offset, $value): void
|
||||
{
|
||||
if ($offset === null) {
|
||||
if (isset($value[0])) {
|
||||
@@ -66,7 +68,7 @@ class PHP_LexerGenerator_ParseryyToken implements ArrayAccess
|
||||
}
|
||||
}
|
||||
|
||||
function offsetUnset($offset)
|
||||
function offsetUnset($offset): void
|
||||
{
|
||||
unset($this->metadata[$offset]);
|
||||
}
|
||||
@@ -278,7 +280,7 @@ class PHP_LexerGenerator_Parser#line 171 "Parser.php"
|
||||
$match = false;
|
||||
foreach ($yy_yymore_patterns[' . $this->token . '] as $index => $rule) {
|
||||
if (preg_match(\'/\' . $rule . \'/' . $this->patternFlags . '\',
|
||||
' . $this->input . ', $yymatches, null, ' . $this->counter . ')) {
|
||||
' . $this->input . ', $yymatches, 0, ' . $this->counter . ')) {
|
||||
$yymatches = array_filter($yymatches, \'strlen\'); // remove empty sub-patterns
|
||||
if ($match) {
|
||||
if (strlen($yymatches[0]) > strlen($match[0][0])) {
|
||||
@@ -350,7 +352,7 @@ class PHP_LexerGenerator_Parser#line 171 "Parser.php"
|
||||
$pattern . '\';' . "\n");
|
||||
fwrite($this->out, '
|
||||
do {
|
||||
if (preg_match($yy_global_pattern,' . $this->input . ', $yymatches, null, ' .
|
||||
if (preg_match($yy_global_pattern,' . $this->input . ', $yymatches, 0, ' .
|
||||
$this->counter .
|
||||
')) {
|
||||
$yysubmatches = $yymatches;
|
||||
@@ -408,7 +410,7 @@ class PHP_LexerGenerator_Parser#line 171 "Parser.php"
|
||||
}
|
||||
$yysubmatches = array();
|
||||
if (preg_match(\'/\' . $yy_yymore_patterns[' . $this->token . '][1] . \'/' . $this->patternFlags . '\',
|
||||
' . $this->input . ', $yymatches, null, ' . $this->counter .')) {
|
||||
' . $this->input . ', $yymatches, 0, ' . $this->counter .')) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, \'strlen\'); // remove empty sub-patterns
|
||||
next($yymatches); // skip global match
|
||||
|
||||
@@ -187,7 +187,7 @@ require_once 'PHP/LexerGenerator/Exception.php';
|
||||
$match = false;
|
||||
foreach ($yy_yymore_patterns[' . $this->token . '] as $index => $rule) {
|
||||
if (preg_match(\'/\' . $rule . \'/' . $this->patternFlags . '\',
|
||||
' . $this->input . ', $yymatches, null, ' . $this->counter . ')) {
|
||||
' . $this->input . ', $yymatches, 0, ' . $this->counter . ')) {
|
||||
$yymatches = array_filter($yymatches, \'strlen\'); // remove empty sub-patterns
|
||||
if ($match) {
|
||||
if (strlen($yymatches[0]) > strlen($match[0][0])) {
|
||||
@@ -259,7 +259,7 @@ require_once 'PHP/LexerGenerator/Exception.php';
|
||||
$pattern . '\';' . "\n");
|
||||
fwrite($this->out, '
|
||||
do {
|
||||
if (preg_match($yy_global_pattern,' . $this->input . ', $yymatches, null, ' .
|
||||
if (preg_match($yy_global_pattern,' . $this->input . ', $yymatches, 0, ' .
|
||||
$this->counter .
|
||||
')) {
|
||||
$yysubmatches = $yymatches;
|
||||
@@ -317,7 +317,7 @@ require_once 'PHP/LexerGenerator/Exception.php';
|
||||
}
|
||||
$yysubmatches = array();
|
||||
if (preg_match(\'/\' . $yy_yymore_patterns[' . $this->token . '][1] . \'/' . $this->patternFlags . '\',
|
||||
' . $this->input . ', $yymatches, null, ' . $this->counter .')) {
|
||||
' . $this->input . ', $yymatches, 0, ' . $this->counter .')) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, \'strlen\'); // remove empty sub-patterns
|
||||
next($yymatches); // skip global match
|
||||
|
||||
@@ -110,7 +110,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
$yy_global_pattern = '/\G(\\\\\\\\)|\G([^[\\\\^$.|()?*+{}]+)|\G(\\\\[][{}*.^$|?()+])|\G(\\[)|\G(\\|)|\G(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|\G(\\\\[0-9][0-9])|\G(\\\\[abBGcedDsSwW0C]|\\\\c\\\\)|\G(\\^)|\G(\\\\A)|\G(\\))|\G(\\$)|\G(\\*\\?|\\+\\?|[*?+]|\\{[0-9]+\\}|\\{[0-9]+,\\}|\\{[0-9]+,[0-9]+\\})|\G(\\\\[zZ])|\G(\\(\\?)|\G(\\()|\G(\\.)|\G(\\\\[1-9])|\G(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|\G(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|\G(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|\G(\\\\p[CLMNPSZ])|\G(\\\\)/';
|
||||
|
||||
do {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, null, $this->N)) {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
if (!count($yymatches)) {
|
||||
@@ -180,7 +180,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
}
|
||||
$yysubmatches = array();
|
||||
if (preg_match('/' . $yy_yymore_patterns[$this->token][1] . '/',
|
||||
$this->input, $yymatches, null, $this->N)) {
|
||||
$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
next($yymatches); // skip global match
|
||||
@@ -360,7 +360,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
$yy_global_pattern = '/\G(\\^)|\G(\\])|\G(.)/';
|
||||
|
||||
do {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, null, $this->N)) {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
if (!count($yymatches)) {
|
||||
@@ -410,7 +410,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
}
|
||||
$yysubmatches = array();
|
||||
if (preg_match('/' . $yy_yymore_patterns[$this->token][1] . '/',
|
||||
$this->input, $yymatches, null, $this->N)) {
|
||||
$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
next($yymatches); // skip global match
|
||||
@@ -497,7 +497,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
$yy_global_pattern = '/\G(\\\\\\\\)|\G(\\])|\G(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|\G(\\\\[bacedDsSwW0C]|\\\\c\\\\|\\\\x\\{[0-9a-fA-F]+\\}|\\\\[0-7][0-7][0-7]|\\\\x[0-9a-fA-F][0-9a-fA-F]?)|\G(\\\\[0-9][0-9])|\G(\\\\[1-9])|\G(\\\\[]\.\-\^])|\G(-(?!]))|\G([^\-\\\\])|\G(\\\\)|\G(.)/';
|
||||
|
||||
do {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, null, $this->N)) {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
if (!count($yymatches)) {
|
||||
@@ -555,7 +555,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
}
|
||||
$yysubmatches = array();
|
||||
if (preg_match('/' . $yy_yymore_patterns[$this->token][1] . '/',
|
||||
$this->input, $yymatches, null, $this->N)) {
|
||||
$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
next($yymatches); // skip global match
|
||||
@@ -678,7 +678,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
$yy_global_pattern = '/\G(\\\\\\\\)|\G(\\\\\\])|\G(\\\\[bacedDsSwW0C]|\\\\c\\\\|\\\\x\\{[0-9a-fA-F]+\\}|\\\\[0-7][0-7][0-7]|\\\\x[0-9a-fA-F][0-9a-fA-F]?)|\G(\\\\[0-9][0-9])|\G(\\\\[1-9])|\G([^\-\\\\])|\G(\\\\)/';
|
||||
|
||||
do {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, null, $this->N)) {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
if (!count($yymatches)) {
|
||||
@@ -732,7 +732,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
}
|
||||
$yysubmatches = array();
|
||||
if (preg_match('/' . $yy_yymore_patterns[$this->token][1] . '/',
|
||||
$this->input, $yymatches, null, $this->N)) {
|
||||
$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
next($yymatches); // skip global match
|
||||
@@ -842,7 +842,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
$yy_global_pattern = '/\G([imsxUX]+-[imsxUX]+|[imsxUX]+|-[imsxUX]+)|\G(:)|\G(\\))|\G(P<[^>]+>)|\G(<=)|\G(<!)|\G(=)|\G(!)|\G(>)|\G(\\(\\?)|\G(#[^)]+)|\G(R)|\G(.)/';
|
||||
|
||||
do {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, null, $this->N)) {
|
||||
if (preg_match($yy_global_pattern,$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
if (!count($yymatches)) {
|
||||
@@ -902,7 +902,7 @@ class PHP_LexerGenerator_Regex_Lexer
|
||||
}
|
||||
$yysubmatches = array();
|
||||
if (preg_match('/' . $yy_yymore_patterns[$this->token][1] . '/',
|
||||
$this->input, $yymatches, null, $this->N)) {
|
||||
$this->input, $yymatches, 0, $this->N)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
next($yymatches); // skip global match
|
||||
|
||||
@@ -33,17 +33,19 @@ class PHP_LexerGenerator_Regex_yyToken implements ArrayAccess
|
||||
return $this->_string;
|
||||
}
|
||||
|
||||
function offsetExists($offset)
|
||||
function offsetExists($offset): bool
|
||||
{
|
||||
return isset($this->metadata[$offset]);
|
||||
}
|
||||
|
||||
// Return type mixed is not supported by PHP 7.4, we can remove the following PHP attribute and add the return type once iTop min PHP version is PHP 8.0+
|
||||
#[\ReturnTypeWillChange]
|
||||
function offsetGet($offset)
|
||||
{
|
||||
return $this->metadata[$offset];
|
||||
}
|
||||
|
||||
function offsetSet($offset, $value)
|
||||
function offsetSet($offset, $value): void
|
||||
{
|
||||
if ($offset === null) {
|
||||
if (isset($value[0])) {
|
||||
@@ -66,7 +68,7 @@ class PHP_LexerGenerator_Regex_yyToken implements ArrayAccess
|
||||
}
|
||||
}
|
||||
|
||||
function offsetUnset($offset)
|
||||
function offsetUnset($offset): void
|
||||
{
|
||||
unset($this->metadata[$offset]);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Rebuild the iTop Lexer / Parser
|
||||
# PEAR is required to build (really?)
|
||||
# PHP 8.0+ is not supported by the parser generator
|
||||
# Launch this batch from the core/oql/build directory
|
||||
# with ./build.bash
|
||||
#
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
rem must be run with current directory = the directory of the batch
|
||||
rem PEAR is required to build
|
||||
rem PHP 8.0+ is not supported by the parser generator
|
||||
php -d include_path=".;C:\iTop\PHP\PEAR" ".\PHP\LexerGenerator\cli.php" ..\oql-lexer.plex
|
||||
php ".\PHP\ParserGenerator\cli.php" ..\oql-parser.y
|
||||
php -r "echo date('Y-m-d');" > ..\version.txt
|
||||
|
||||
@@ -235,7 +235,7 @@ class OQLLexerRaw
|
||||
$match = false;
|
||||
foreach ($yy_yymore_patterns[$this->token] as $index => $rule) {
|
||||
if (preg_match('/' . $rule . '/',
|
||||
$this->data, $yymatches, null, $this->count)) {
|
||||
$this->data, $yymatches, 0, $this->count)) {
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
if ($match) {
|
||||
if (strlen($yymatches[0]) > strlen($match[0][0])) {
|
||||
|
||||
@@ -40,7 +40,7 @@ class OQLParser_yyToken implements ArrayAccess
|
||||
|
||||
// Return type mixed is not supported by PHP 7.4, we can remove the following PHP attribute and add the return type once iTop min PHP version is PHP 8.0+
|
||||
#[\ReturnTypeWillChange]
|
||||
function offsetGet($offset)
|
||||
function offsetGet($offset)
|
||||
{
|
||||
return $this->metadata[$offset];
|
||||
}
|
||||
@@ -99,7 +99,7 @@ class OQLParser_yyStackEntry
|
||||
|
||||
// declare_class is output here
|
||||
#line 24 "..\oql-parser.y"
|
||||
class OQLParserRaw#line 102 "..\oql-parser.php"
|
||||
class OQLParserRaw#line 104 "..\oql-parser.php"
|
||||
{
|
||||
/* First off, code is included which follows the "include_class" declaration
|
||||
** in the input file. */
|
||||
@@ -1180,7 +1180,7 @@ static public $yy_action = array(
|
||||
#line 30 "..\oql-parser.y"
|
||||
|
||||
throw new OQLParserStackOverFlowException($this->m_sSourceQuery, $this->m_iLine, $this->m_iCol);
|
||||
#line 1186 "..\oql-parser.php"
|
||||
#line 1188 "..\oql-parser.php"
|
||||
return;
|
||||
}
|
||||
$yytos = new OQLParser_yyStackEntry;
|
||||
@@ -1482,49 +1482,49 @@ throw new OQLParserStackOverFlowException($this->m_sSourceQuery, $this->m_iLine,
|
||||
*/
|
||||
#line 37 "..\oql-parser.y"
|
||||
function yy_r0(){ $this->my_result = $this->yystack[$this->yyidx + 0]->minor; }
|
||||
#line 1488 "..\oql-parser.php"
|
||||
#line 1490 "..\oql-parser.php"
|
||||
#line 41 "..\oql-parser.y"
|
||||
function yy_r3(){
|
||||
$this->_retvalue = new OqlUnionQuery($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 1493 "..\oql-parser.php"
|
||||
#line 1495 "..\oql-parser.php"
|
||||
#line 48 "..\oql-parser.y"
|
||||
function yy_r5(){
|
||||
$this->_retvalue = new OqlObjectQuery($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor, array($this->yystack[$this->yyidx + -2]->minor));
|
||||
}
|
||||
#line 1498 "..\oql-parser.php"
|
||||
#line 1500 "..\oql-parser.php"
|
||||
#line 51 "..\oql-parser.y"
|
||||
function yy_r6(){
|
||||
$this->_retvalue = new OqlObjectQuery($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor, array($this->yystack[$this->yyidx + -2]->minor));
|
||||
}
|
||||
#line 1503 "..\oql-parser.php"
|
||||
#line 1505 "..\oql-parser.php"
|
||||
#line 55 "..\oql-parser.y"
|
||||
function yy_r7(){
|
||||
$this->_retvalue = new OqlObjectQuery($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + -4]->minor);
|
||||
}
|
||||
#line 1508 "..\oql-parser.php"
|
||||
#line 1510 "..\oql-parser.php"
|
||||
#line 58 "..\oql-parser.y"
|
||||
function yy_r8(){
|
||||
$this->_retvalue = new OqlObjectQuery($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + -6]->minor);
|
||||
}
|
||||
#line 1513 "..\oql-parser.php"
|
||||
#line 1515 "..\oql-parser.php"
|
||||
#line 63 "..\oql-parser.y"
|
||||
function yy_r9(){
|
||||
$this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 1518 "..\oql-parser.php"
|
||||
#line 1520 "..\oql-parser.php"
|
||||
#line 66 "..\oql-parser.y"
|
||||
function yy_r10(){
|
||||
array_push($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor);
|
||||
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
|
||||
}
|
||||
#line 1524 "..\oql-parser.php"
|
||||
#line 1526 "..\oql-parser.php"
|
||||
#line 71 "..\oql-parser.y"
|
||||
function yy_r11(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
|
||||
#line 1527 "..\oql-parser.php"
|
||||
#line 1529 "..\oql-parser.php"
|
||||
#line 72 "..\oql-parser.y"
|
||||
function yy_r12(){ $this->_retvalue = null; }
|
||||
#line 1530 "..\oql-parser.php"
|
||||
#line 1532 "..\oql-parser.php"
|
||||
#line 74 "..\oql-parser.y"
|
||||
function yy_r13(){
|
||||
// insert the join statement on top of the existing list
|
||||
@@ -1532,63 +1532,63 @@ throw new OQLParserStackOverFlowException($this->m_sSourceQuery, $this->m_iLine,
|
||||
// and return the updated array
|
||||
$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
|
||||
}
|
||||
#line 1538 "..\oql-parser.php"
|
||||
#line 1540 "..\oql-parser.php"
|
||||
#line 80 "..\oql-parser.y"
|
||||
function yy_r14(){
|
||||
$this->_retvalue = Array($this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 1543 "..\oql-parser.php"
|
||||
#line 1545 "..\oql-parser.php"
|
||||
#line 86 "..\oql-parser.y"
|
||||
function yy_r16(){
|
||||
// create an array with one single item
|
||||
$this->_retvalue = new OqlJoinSpec($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 1549 "..\oql-parser.php"
|
||||
#line 1551 "..\oql-parser.php"
|
||||
#line 91 "..\oql-parser.y"
|
||||
function yy_r17(){
|
||||
// create an array with one single item
|
||||
$this->_retvalue = new OqlJoinSpec($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 1555 "..\oql-parser.php"
|
||||
#line 1557 "..\oql-parser.php"
|
||||
#line 96 "..\oql-parser.y"
|
||||
function yy_r18(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, '=', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1558 "..\oql-parser.php"
|
||||
#line 1560 "..\oql-parser.php"
|
||||
#line 97 "..\oql-parser.y"
|
||||
function yy_r19(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, 'BELOW', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1561 "..\oql-parser.php"
|
||||
#line 1563 "..\oql-parser.php"
|
||||
#line 98 "..\oql-parser.y"
|
||||
function yy_r20(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, 'BELOW_STRICT', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1564 "..\oql-parser.php"
|
||||
#line 1566 "..\oql-parser.php"
|
||||
#line 99 "..\oql-parser.y"
|
||||
function yy_r21(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, 'NOT_BELOW', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1567 "..\oql-parser.php"
|
||||
#line 1569 "..\oql-parser.php"
|
||||
#line 100 "..\oql-parser.y"
|
||||
function yy_r22(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, 'NOT_BELOW_STRICT', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1570 "..\oql-parser.php"
|
||||
#line 1572 "..\oql-parser.php"
|
||||
#line 101 "..\oql-parser.y"
|
||||
function yy_r23(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, 'ABOVE', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1573 "..\oql-parser.php"
|
||||
#line 1575 "..\oql-parser.php"
|
||||
#line 102 "..\oql-parser.y"
|
||||
function yy_r24(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, 'ABOVE_STRICT', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1576 "..\oql-parser.php"
|
||||
#line 1578 "..\oql-parser.php"
|
||||
#line 103 "..\oql-parser.y"
|
||||
function yy_r25(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, 'NOT_ABOVE', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1579 "..\oql-parser.php"
|
||||
#line 1581 "..\oql-parser.php"
|
||||
#line 104 "..\oql-parser.y"
|
||||
function yy_r26(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, 'NOT_ABOVE_STRICT', $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1582 "..\oql-parser.php"
|
||||
#line 1584 "..\oql-parser.php"
|
||||
#line 106 "..\oql-parser.y"
|
||||
function yy_r27(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
|
||||
#line 1585 "..\oql-parser.php"
|
||||
#line 1587 "..\oql-parser.php"
|
||||
#line 111 "..\oql-parser.y"
|
||||
function yy_r31(){ $this->_retvalue = new FunctionOqlExpression($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor); }
|
||||
#line 1588 "..\oql-parser.php"
|
||||
#line 1590 "..\oql-parser.php"
|
||||
#line 112 "..\oql-parser.y"
|
||||
function yy_r32(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; }
|
||||
#line 1591 "..\oql-parser.php"
|
||||
#line 1593 "..\oql-parser.php"
|
||||
#line 113 "..\oql-parser.y"
|
||||
function yy_r33(){ $this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1594 "..\oql-parser.php"
|
||||
#line 1596 "..\oql-parser.php"
|
||||
#line 119 "..\oql-parser.y"
|
||||
function yy_r37(){
|
||||
if ($this->yystack[$this->yyidx + -1]->minor == 'MATCHES')
|
||||
@@ -1600,43 +1600,43 @@ throw new OQLParserStackOverFlowException($this->m_sSourceQuery, $this->m_iLine,
|
||||
$this->_retvalue = new BinaryOqlExpression($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
}
|
||||
#line 1606 "..\oql-parser.php"
|
||||
#line 1608 "..\oql-parser.php"
|
||||
#line 136 "..\oql-parser.y"
|
||||
function yy_r42(){
|
||||
$this->_retvalue = new ListOqlExpression($this->yystack[$this->yyidx + -1]->minor);
|
||||
}
|
||||
#line 1611 "..\oql-parser.php"
|
||||
#line 1613 "..\oql-parser.php"
|
||||
#line 139 "..\oql-parser.y"
|
||||
function yy_r43(){
|
||||
$this->_retvalue = new NestedQueryOqlExpression($this->yystack[$this->yyidx + -1]->minor);
|
||||
}
|
||||
#line 1616 "..\oql-parser.php"
|
||||
#line 1618 "..\oql-parser.php"
|
||||
#line 154 "..\oql-parser.y"
|
||||
function yy_r47(){
|
||||
$this->_retvalue = array();
|
||||
}
|
||||
#line 1621 "..\oql-parser.php"
|
||||
#line 1623 "..\oql-parser.php"
|
||||
#line 165 "..\oql-parser.y"
|
||||
function yy_r51(){ $this->_retvalue = new IntervalOqlExpression($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1624 "..\oql-parser.php"
|
||||
#line 1626 "..\oql-parser.php"
|
||||
#line 178 "..\oql-parser.y"
|
||||
function yy_r61(){ $this->_retvalue = new ScalarOqlExpression($this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1627 "..\oql-parser.php"
|
||||
#line 1629 "..\oql-parser.php"
|
||||
#line 180 "..\oql-parser.y"
|
||||
function yy_r63(){ $this->_retvalue = new ScalarOqlExpression(null); }
|
||||
#line 1630 "..\oql-parser.php"
|
||||
#line 1632 "..\oql-parser.php"
|
||||
#line 182 "..\oql-parser.y"
|
||||
function yy_r64(){ $this->_retvalue = new FieldOqlExpression($this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1633 "..\oql-parser.php"
|
||||
#line 1635 "..\oql-parser.php"
|
||||
#line 183 "..\oql-parser.y"
|
||||
function yy_r65(){ $this->_retvalue = new FieldOqlExpression($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -2]->minor); }
|
||||
#line 1636 "..\oql-parser.php"
|
||||
#line 1638 "..\oql-parser.php"
|
||||
#line 184 "..\oql-parser.y"
|
||||
function yy_r66(){ $this->_retvalue=$this->yystack[$this->yyidx + 0]->minor; }
|
||||
#line 1639 "..\oql-parser.php"
|
||||
#line 1641 "..\oql-parser.php"
|
||||
#line 187 "..\oql-parser.y"
|
||||
function yy_r67(){ $this->_retvalue = new VariableOqlExpression(substr($this->yystack[$this->yyidx + 0]->minor, 1)); }
|
||||
#line 1642 "..\oql-parser.php"
|
||||
#line 1644 "..\oql-parser.php"
|
||||
#line 189 "..\oql-parser.y"
|
||||
function yy_r68(){
|
||||
if ($this->yystack[$this->yyidx + 0]->minor[0] == '`')
|
||||
@@ -1649,22 +1649,22 @@ throw new OQLParserStackOverFlowException($this->m_sSourceQuery, $this->m_iLine,
|
||||
}
|
||||
$this->_retvalue = new OqlName($name, $this->m_iColPrev);
|
||||
}
|
||||
#line 1655 "..\oql-parser.php"
|
||||
#line 1657 "..\oql-parser.php"
|
||||
#line 200 "..\oql-parser.y"
|
||||
function yy_r69(){$this->_retvalue=(int)$this->yystack[$this->yyidx + 0]->minor; }
|
||||
#line 1658 "..\oql-parser.php"
|
||||
#line 1660 "..\oql-parser.php"
|
||||
#line 201 "..\oql-parser.y"
|
||||
function yy_r70(){$this->_retvalue=(int)-$this->yystack[$this->yyidx + 0]->minor; }
|
||||
#line 1661 "..\oql-parser.php"
|
||||
#line 1663 "..\oql-parser.php"
|
||||
#line 202 "..\oql-parser.y"
|
||||
function yy_r71(){$this->_retvalue=new OqlHexValue($this->yystack[$this->yyidx + 0]->minor); }
|
||||
#line 1664 "..\oql-parser.php"
|
||||
#line 1666 "..\oql-parser.php"
|
||||
#line 203 "..\oql-parser.y"
|
||||
function yy_r72(){$this->_retvalue=stripslashes(substr($this->yystack[$this->yyidx + 0]->minor, 1, strlen($this->yystack[$this->yyidx + 0]->minor) - 2)); }
|
||||
#line 1667 "..\oql-parser.php"
|
||||
#line 1669 "..\oql-parser.php"
|
||||
#line 206 "..\oql-parser.y"
|
||||
function yy_r73(){$this->_retvalue=$this->yystack[$this->yyidx + 0]->minor; }
|
||||
#line 1670 "..\oql-parser.php"
|
||||
#line 1672 "..\oql-parser.php"
|
||||
|
||||
/**
|
||||
* placeholder for the left hand side in a reduce operation.
|
||||
@@ -1768,7 +1768,7 @@ throw new OQLParserStackOverFlowException($this->m_sSourceQuery, $this->m_iLine,
|
||||
#line 33 "..\oql-parser.y"
|
||||
|
||||
throw new OQLParserParseFailureException($this->m_sSourceQuery, $this->m_iLine, $this->m_iCol);
|
||||
#line 1775 "..\oql-parser.php"
|
||||
#line 1777 "..\oql-parser.php"
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1783,7 +1783,7 @@ throw new OQLParserParseFailureException($this->m_sSourceQuery, $this->m_iLine,
|
||||
#line 25 "..\oql-parser.y"
|
||||
|
||||
throw new OQLParserSyntaxErrorException($this->m_sSourceQuery, $this->m_iLine, $this->m_iCol, $this->tokenName($yymajor), $TOKEN);
|
||||
#line 1791 "..\oql-parser.php"
|
||||
#line 1793 "..\oql-parser.php"
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2043,4 +2043,4 @@ class OQLParser extends OQLParserRaw
|
||||
}
|
||||
}
|
||||
|
||||
#line 2052 "..\oql-parser.php"
|
||||
#line 2054 "..\oql-parser.php"
|
||||
|
||||
@@ -314,7 +314,7 @@ class ormDocument
|
||||
'document' => $oDocument,
|
||||
'content_disposition' => $sContentDisposition,
|
||||
);
|
||||
EventService::FireEvent(new EventData(EVENT_DOWNLOAD_DOCUMENT, $sClass, $aEventData));
|
||||
EventService::FireEvent(new EventData(\EVENT_DOWNLOAD_DOCUMENT, $sClass, $aEventData));
|
||||
$oPage->TrashUnexpectedOutput();
|
||||
$oPage->SetContentType($oDocument->GetMimeType());
|
||||
$oPage->SetContentDisposition($sContentDisposition,$oDocument->GetFileName());
|
||||
|
||||
@@ -500,17 +500,17 @@ EOF
|
||||
if (file_exists($sDotExecutable))
|
||||
{
|
||||
// create the file with Graphviz
|
||||
if (!is_dir(APPROOT."data"))
|
||||
if (!is_dir(utils::GetDataPath()))
|
||||
{
|
||||
@mkdir(APPROOT."data");
|
||||
@mkdir(utils::GetDataPath());
|
||||
}
|
||||
if (!is_dir(APPROOT."data/tmp"))
|
||||
if (!is_dir(utils::GetDataPath()."tmp"))
|
||||
{
|
||||
@mkdir(APPROOT."data/tmp");
|
||||
@mkdir(utils::GetDataPath()."tmp");
|
||||
}
|
||||
$sImageFilePath = tempnam(APPROOT."data/tmp", 'png-');
|
||||
$sImageFilePath = tempnam(utils::GetDataPath()."tmp", 'png-');
|
||||
$sDotDescription = $this->GetDotDescription();
|
||||
$sDotFilePath = tempnam(APPROOT."data/tmp", 'dot-');
|
||||
$sDotFilePath = tempnam(utils::GetDataPath()."tmp", 'dot-');
|
||||
|
||||
$rFile = @fopen($sDotFilePath, "w");
|
||||
@fwrite($rFile, $sDotDescription);
|
||||
@@ -556,17 +556,17 @@ EOF
|
||||
if (file_exists($sDotExecutable))
|
||||
{
|
||||
// create the file with Graphviz
|
||||
if (!is_dir(APPROOT."data"))
|
||||
if (!is_dir(utils::GetDataPath()))
|
||||
{
|
||||
@mkdir(APPROOT."data");
|
||||
@mkdir(utils::GetDataPath());
|
||||
}
|
||||
if (!is_dir(APPROOT."data/tmp"))
|
||||
if (!is_dir(utils::GetDataPath()."tmp"))
|
||||
{
|
||||
@mkdir(APPROOT."data/tmp");
|
||||
@mkdir(utils::GetDataPath()."tmp");
|
||||
}
|
||||
$sXdotFilePath = tempnam(APPROOT."data/tmp", 'xdot-');
|
||||
$sXdotFilePath = tempnam(utils::GetDataPath()."tmp", 'xdot-');
|
||||
$sDotDescription = $this->GetDotDescription(true); // true => don't put (localized) labels in the file, since it makes it harder to parse
|
||||
$sDotFilePath = tempnam(APPROOT."data/tmp", 'dot-');
|
||||
$sDotFilePath = tempnam(utils::GetDataPath()."tmp", 'dot-');
|
||||
|
||||
$rFile = @fopen($sDotFilePath, "w");
|
||||
@fwrite($rFile, $sDotDescription);
|
||||
|
||||
@@ -1,75 +1,108 @@
|
||||
## Description
|
||||
This is a brief description of the SASS 7-1 system and how to use it.
|
||||
- [File structure](#file-structure)
|
||||
- [Usage](#usage)
|
||||
# Description
|
||||
This is a brief description of the how the backoffice theme is structured using both BEM and SASS 7-1 systems and how to use them.
|
||||
* [7-1 pattern](#7-1-pattern)
|
||||
* [File structure](#file-structure)
|
||||
* [Usage](#usage)
|
||||
* [BEM methodology](#bem-methodology)
|
||||
* [Principles](#principles)
|
||||
* [Examples](#examples)
|
||||
|
||||
# 7-1 pattern
|
||||
## File structure
|
||||
SCSS files are structured following the [7-1 pattern](https://sass-guidelin.es/#the-7-1-pattern). \
|
||||
@rveitch made a great summary with the following, which can also be found [here](https://gist.github.com/rveitch/84cea9650092119527bc).
|
||||
|
||||
_Note: Folders with an * are customizations we made to the original 7-1 pattern to best fit our needs_
|
||||
_Note: Folders with an * are customizations we made to the original 7-1 pattern to best fit our needs_
|
||||
|
||||
```
|
||||
css/backoffice/
|
||||
|
|
||||
|– utils/
|
||||
| |– _variables.scss # Sass Variables
|
||||
| |– _functions.scss # Sass Functions
|
||||
| |– _mixins.scss # Sass Mixins
|
||||
| |– _helpers.scss # Class & placeholders helpers
|
||||
| |– variables/ # Sass Variables used in Functions, Mixins, Helpers, ...
|
||||
| | |- colors/
|
||||
| | | |- _base.scss
|
||||
| | | |- _base-palette.scss # Base colors used everywhere
|
||||
| | | |- _lifecycle-palette.scss # Colors used for lifecycle of an object (e.g. representing states such as new, frozen, done, ...), based on the base colors
|
||||
| | | |- _semantic-palette.scss # Colors used for semantic meaning (e.g. red for errors, green for success, ...), based on the base colors
|
||||
| | | ...
|
||||
| | |
|
||||
| | |- _depression.scss
|
||||
| | |- _elevation.scss
|
||||
| | |- _size.scss # Base sizes used everywhere (spacings, ...)
|
||||
| | |- _spacing.scss
|
||||
| | |- _typography.scss # Typography sizes, weights, families, ...
|
||||
| | ...
|
||||
| |
|
||||
| |– functions/ # Sass Functions
|
||||
| | |- _color.scss # Color manipulation functions
|
||||
| |
|
||||
| |– mixins/ # Sass Mixins
|
||||
| |– helpers/ # Class & placeholders helpers
|
||||
|
|
||||
|– vendors/
|
||||
| |– _bootstrap.scss # Bootstrap
|
||||
| |– _jquery-ui.scss # jQuery UI
|
||||
| ... # Etc…
|
||||
|– vendors/ # Third-party libs, should be either:
|
||||
| # - Overload of the lib SCSS variables (BEST way, but possible only if the lib exposes them. e.g. Bulma)
|
||||
| # - Overload of the lib necessary CSS classes only (not great as it duplicates some rules in the browser, which add weight and computation. e.g. dataTables)
|
||||
| # - Duplicate the lib CSS completly to insert SCSS variables (not great as it will be outdated when updating the lib itself. e.g. jQuery UI)
|
||||
| |– _bulma-variables-overload.scss # Bulma CSS framework
|
||||
| |– _jquery-ui.scss # jQuery UI
|
||||
| ... # Etc…
|
||||
|
|
||||
|– base/
|
||||
| |– _reset.scss # Reset/normalize
|
||||
| |– _typography.scss # Typography rules
|
||||
| ... # Etc…
|
||||
| |– _reset.scss # Reset/normalize
|
||||
| |– _typography.scss # Typography fonts imports
|
||||
| ... # Etc…
|
||||
|
|
||||
|– components/
|
||||
| |– _buttons.scss # Buttons
|
||||
| |– _carousel.scss # Carousel
|
||||
| |– _cover.scss # Cover
|
||||
| |– _dropdown.scss # Dropdown
|
||||
| ... # Etc…
|
||||
|– components/ # Components of the UI, each corresponding to a UI block and being usable as a standalone
|
||||
| |– _button.scss
|
||||
| |– _button-group.scss
|
||||
| |– _global-search.scss
|
||||
| |– _quick-create.scss
|
||||
| ...
|
||||
|
|
||||
|– layout/
|
||||
| |– _navigation.scss # Navigation
|
||||
| |– _grid.scss # Grid system
|
||||
| |– _header.scss # Header
|
||||
| |– _footer.scss # Footer
|
||||
| |– _sidebar.scss # Sidebar
|
||||
| |– _forms.scss # Forms
|
||||
| ... # Etc…
|
||||
|– layout/ # Elements of the UI made of several components, making the layout of the app
|
||||
| |– activity-panel/
|
||||
| |– dashboard/
|
||||
| |– object/ # DM object display (details, summary card, ...)
|
||||
| |– tab-container/
|
||||
| ...
|
||||
|
|
||||
|- *application/ # Elements that are not usable as a standalone (like componants and layouts are) and very application (the backoffice) specific
|
||||
|- *application/ # Elements that are not usable as a standalone (like componants and layouts are) and very application (the backoffice) specific
|
||||
| |- display-block
|
||||
| |- tabular-fields
|
||||
| ...
|
||||
|
|
||||
|- *datamodel/ # SCSS / CSS3 variables and CSS classes for PHP classes of the DM that are part of the core (not in a module) and cannot be styled otherwise
|
||||
|- *datamodel/ # SCSS / CSS3 variables and CSS classes for *PHP* classes of the DM that are part of the core (not in a module) and cannot be styled otherwise
|
||||
| |- _action.scss
|
||||
| |- _user.scss
|
||||
| ...
|
||||
|
|
||||
|– pages/
|
||||
| |– _home.scss # Home specific styles
|
||||
| |– _contact.scss # Contact specific styles
|
||||
| ... # Etc…
|
||||
|– pages/ # SCSS / CSS3 variables and CSS classes for HTML elements specific to backoffice pages
|
||||
| |– _base.scss # Base for all backoffice pages
|
||||
| |– _audit.scss # Audit page
|
||||
| |– _csv-import.scss # CSV Import page
|
||||
| ... # Etc…
|
||||
|
|
||||
|- *blocks-integrations # Specific rules for the integration of a block with another one, those kind of rules should never be in the block partial directly
|
||||
| |- _panel-with-datatable.scss # Changes the negative margins of the datatable so it overlaps the panel's original padding
|
||||
|- *blocks-integrations # Specific rules for the integration of a UI block with another one, those kind of rules should NEVER be in the block partial directly
|
||||
| |- alert/
|
||||
| | |- _alert-with-blocks.scss # How an alert should be displayed when after another block
|
||||
| |- button/
|
||||
| | |- _button-with-button.scss # How a button should be displayed when after another button
|
||||
| | |- _button-with-button-group.scss # How a button should be displayed when before/after a button group
|
||||
| |- panel/
|
||||
| | |- _panel-with-blocks.scss # How a panel should be displayed when after another block
|
||||
| | |- _panel-within-main-content.scss # How a panel becomes sticky when in the main content
|
||||
| | |- _panel-within-modal.scss # How a panel becomes sticky when in a modal
|
||||
| |- _tab-container-within-panel.scss # Changes the negative margins of the datatable so it overlaps the panel's original padding
|
||||
| ...
|
||||
|
|
||||
|– themes/
|
||||
| |– _theme.scss # Default theme
|
||||
| |– _admin.scss # Admin theme
|
||||
| ... # Etc…
|
||||
| |– _page-banner.scss # ???
|
||||
| ... # Etc…
|
||||
|
|
||||
|
|
||||
`- _shame.scss # Shame file, should contain all the ugly hacks (https://sass-guidelin.es/#shame-file)
|
||||
`– main.scss # Main Sass file
|
||||
|- _fallback.scss # Fallback file, should only contain rules that make standard HTML tags fallback to the style of a custom CSS class
|
||||
|- _shame.scss # Shame file, should contain all the ugly hacks (https://sass-guidelin.es/#shame-file)
|
||||
`– main.scss # Main Sass file
|
||||
```
|
||||
|
||||
## Usage
|
||||
@@ -84,7 +117,58 @@ To avoid common errors, files should be imported in the final file in the follow
|
||||
- Components
|
||||
- Layout
|
||||
- \*Application
|
||||
- \*Datamodel
|
||||
- Pages
|
||||
- \*Block integrations
|
||||
- Themes
|
||||
- Shame file
|
||||
- Shame file
|
||||
|
||||
# BEM methodology
|
||||
## Principles
|
||||
[BEM is a methodology](https://getbem.com/) that helps you to create reusable components and code sharing in front‑end development. \
|
||||
The main idea is to use discriminant classes instead of nested basic selectors for 2 main reasons:
|
||||
* It's easier to understand the purpose of a specific class when seeing it in the HTML markup of the SCSS file
|
||||
* It's easier to override a specific class when needed as you don't need to use a selector at least as precise/complex as the one you want to override
|
||||
|
||||
In our implementation, we start with the code of the UI block, followed by the sub-element, then the property or modifier. Separation is made of `--` instead of `__`.
|
||||
|
||||
## Examples
|
||||
### Classes and CSS properties example
|
||||
```scss
|
||||
// SCSS variables:
|
||||
// - For CSS properties: CSS class, followed by CSS property
|
||||
$ibo-button--padding-y: 6px !default;
|
||||
$ibo-button--padding-x: 9px !default;
|
||||
$ibo-button--border: 0 !default;
|
||||
$ibo-button--border-radius: $ibo-border-radius-400 !default;
|
||||
$ibo-button--box-shadow-bottom: 0px 2px 0px !default;
|
||||
$ibo-button--box-shadow-top: inset 0px 2px 0px !default;
|
||||
|
||||
$ibo-button--label--margin-left: $ibo-spacing-200 !default;
|
||||
|
||||
// CSS classes:
|
||||
.ibo-button {
|
||||
padding: $ibo-button--padding-y $ibo-button--padding-x;
|
||||
border: $ibo-button--border;
|
||||
border-radius: $ibo-button--border-radius;
|
||||
}
|
||||
|
||||
.ibo-button--label {
|
||||
margin-left: $ibo-button--label--margin-left;
|
||||
}
|
||||
```
|
||||
|
||||
### States example
|
||||
```scss
|
||||
// SCSS variables:
|
||||
// Same rule as before, but with a `--is-` or `--on--` suffix
|
||||
$ibo-quick-create--input--padding: $ibo-spacing-0 default;
|
||||
$ibo-quick-create--input--padding-x--is-opened: $ibo-spacing-300 !default;
|
||||
$ibo-quick-create--input--padding-y--is-opened: $ibo-spacing-300 !default;
|
||||
|
||||
$ibo-quick-create--input--width: $ibo-size-0 !default;
|
||||
$ibo-quick-create--input--width--is-opened: 245px !default;
|
||||
|
||||
$ibo-quick-create--input--background-color: $ibo-color-white-100 !default;
|
||||
$ibo-quick-create--input--background-color--on-hover: $ibo-color-grey-200 !default;
|
||||
```
|
||||
@@ -3,18 +3,18 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-scrollbar--scrollbar-width: 8px !default;
|
||||
$ibo-scrollbar--scrollbar-height: $ibo-scrollbar--scrollbar-width !default; /* For horizontal scrollbars */
|
||||
$ibo-scrollbar--scrollbar-track-background-color: $ibo-color-transparent !default;
|
||||
$ibo-scrollbar--scrollbar-track-border-radius: $ibo-border-radius-500 !default;
|
||||
$ibo-scrollbar--scrollbar-thumb-background-color: $ibo-color-grey-300 !default;
|
||||
$ibo-scrollbar--scrollbar-width: $common-scrollbar--scrollbar-width !default;
|
||||
$ibo-scrollbar--scrollbar-height: $common-scrollbar--scrollbar-height !default; /* For horizontal scrollbars */
|
||||
$ibo-scrollbar--scrollbar-track-background-color: $common-scrollbar--scrollbar-track-background-color !default;
|
||||
$ibo-scrollbar--scrollbar-track-border-radius: $common-scrollbar--scrollbar-track-border-radius !default;
|
||||
$ibo-scrollbar--scrollbar-thumb-background-color: $common-scrollbar--scrollbar-thumb-background-color !default;
|
||||
$ibo-scrollbar--scrollbar-thumb-border: none !default;
|
||||
$ibo-scrollbar--scrollbar-thumb-border-radius: $ibo-border-radius-500 !default;
|
||||
$ibo-scrollbar--scrollbar-thumb-border-radius: $common-scrollbar--scrollbar-thumb-border-radius !default;
|
||||
|
||||
$ibo-svg-illustration--fill: $ibo-color-primary-500 !default;
|
||||
$ibo-svg-illustration--fill: $common-svg-illustration--fill !default;
|
||||
|
||||
$ibo-content-block--background-color: $ibo-color-white-100 !default;
|
||||
$ibo-content-block--border: 1px solid $ibo-color-grey-400 !default;
|
||||
$ibo-content-block--background-color: $common-content-block--background-color !default;
|
||||
$ibo-content-block--border: $common-content-block--border !default;
|
||||
|
||||
/* CSS variables */
|
||||
:root{
|
||||
|
||||
@@ -4,147 +4,3 @@
|
||||
*/
|
||||
|
||||
/* This is an overload of the default lib. stylesheet to use local fonts instead of the CDN */
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway Thin'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-100-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 100;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway Thin'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-100-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 200;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway ExtraLight'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-200-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 200;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway ExtraLight'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-200-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway Light'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-300-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway Light'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-300-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-400-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-400-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway Medium'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-500-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 500;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway Medium'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-500-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway SemiBold'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-600-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway SemiBold'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-600-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-700-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-700-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 800;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway ExtraBold'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-800-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 800;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway ExtraBold'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-800-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway Black'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-900-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 900;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway Black'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-900-italic.woff') format('woff'),
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ $ibo-dm-class--Action--complementary-color: $ibo-color-white-100 !default;
|
||||
|
||||
.ibo-dm-class--Action {
|
||||
--ibo-main-color: #{$ibo-dm-class--Action--main-color};
|
||||
--ibo-main-color--100: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-class--Action--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-class--Action--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-main-color--100: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-class--Action--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-class--Action--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-complementary-color: #{$ibo-dm-class--Action--complementary-color};
|
||||
}
|
||||
|
||||
@@ -35,8 +35,8 @@ $ibo-dm-enum--Action-status-enabled--complementary-color: $ibo-lifecycle-active-
|
||||
|
||||
.ibo-dm-enum--Action-status-enabled {
|
||||
--ibo-main-color: #{$ibo-dm-enum--Action-status-enabled--main-color};
|
||||
--ibo-main-color--100: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--Action-status-enabled--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--Action-status-enabled--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-main-color--100: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--Action-status-enabled--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--Action-status-enabled--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-complementary-color: #{$ibo-dm-enum--Action-status-enabled--complementary-color};
|
||||
}
|
||||
|
||||
@@ -56,8 +56,8 @@ $ibo-dm-enum--Action-status-disabled--complementary-color: $ibo-lifecycle-frozen
|
||||
|
||||
.ibo-dm-enum--Action-status-disabled {
|
||||
--ibo-main-color: #{$ibo-dm-enum--Action-status-disabled--main-color};
|
||||
--ibo-main-color--100: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--Action-status-disabled--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--Action-status-disabled--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-main-color--100: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--Action-status-disabled--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--Action-status-disabled--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-complementary-color: #{$ibo-dm-enum--Action-status-disabled--complementary-color};
|
||||
}
|
||||
|
||||
@@ -78,8 +78,8 @@ $ibo-dm-enum--Action-status-test--complementary-color: $ibo-lifecycle-inactive-s
|
||||
|
||||
.ibo-dm-enum--Action-status-test {
|
||||
--ibo-main-color: #{$ibo-dm-enum--Action-status-test--main-color};
|
||||
--ibo-main-color--100: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--Action-status-test--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--Action-status-test--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-main-color--100: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--Action-status-test--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--Action-status-test--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-complementary-color: #{$ibo-dm-enum--Action-status-test--complementary-color};
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ $ibo-dm-class--User--complementary-color: $ibo-color-white-100 !default;
|
||||
|
||||
.ibo-dm-class--User {
|
||||
--ibo-main-color: #{$ibo-dm-class--User--main-color};
|
||||
--ibo-main-color--100: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-class--User--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-class--User--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-main-color--100: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-class--User--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-class--User--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-complementary-color: #{$ibo-dm-class--User--complementary-color};
|
||||
}
|
||||
.ibo-dm-class-alt--User {
|
||||
@@ -34,8 +34,8 @@ $ibo-dm-enum--User-status-enabled--complementary-color: $ibo-lifecycle-active-st
|
||||
|
||||
.ibo-dm-enum--User-status-enabled {
|
||||
--ibo-main-color: #{$ibo-dm-enum--User-status-enabled--main-color};
|
||||
--ibo-main-color--100: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--User-status-enabled--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--User-status-enabled--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-main-color--100: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--User-status-enabled--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--User-status-enabled--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-complementary-color: #{$ibo-dm-enum--User-status-enabled--complementary-color};
|
||||
}
|
||||
.ibo-dm-enum-alt--User-status-enabled {
|
||||
@@ -54,8 +54,8 @@ $ibo-dm-enum--User-status-disabled--complementary-color: $ibo-lifecycle-inactive
|
||||
|
||||
.ibo-dm-enum--User-status-disabled {
|
||||
--ibo-main-color: #{$ibo-dm-enum--User-status-disabled--main-color};
|
||||
--ibo-main-color--100: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--User-status-disabled--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{ibo-adjust-alpha(ibo-adjust-lightness($ibo-dm-enum--User-status-disabled--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-main-color--100: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--User-status-disabled--main-color, $ibo-color-base-lightness-100), $ibo-color-base-opacity-for-lightness-100)};
|
||||
--ibo-main-color--900: #{common-adjust-alpha(common-adjust-lightness($ibo-dm-enum--User-status-disabled--main-color, $ibo-color-base-lightness-900), $ibo-color-base-opacity-for-lightness-900)};
|
||||
--ibo-complementary-color: #{$ibo-dm-enum--User-status-disabled--complementary-color};
|
||||
}
|
||||
.ibo-dm-enum-alt--User-status-disabled {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
@import "../common/main";
|
||||
@import "utils/all";
|
||||
@import "vendors/all";
|
||||
@import "base/all";
|
||||
|
||||
@@ -7,28 +7,20 @@
|
||||
* Adjust the lightness of $sColor to the absolute $fTargetLightness value.
|
||||
* It is different than lighten() / darken() that shift the current lightness by X%
|
||||
*
|
||||
* @deprecated Use common-adjust-lightness() instead
|
||||
* @return Modified color value in HSLA format
|
||||
*/
|
||||
@function ibo-adjust-lightness($sColor, $fTargetLightness) {
|
||||
$iHue: hue($sColor);
|
||||
$fSaturation: saturation($sColor);
|
||||
$fLightness: lightness($sColor);
|
||||
$fAlpha: alpha($sColor);
|
||||
|
||||
@return hsla($iHue, $fSaturation, $fTargetLightness, $fAlpha);
|
||||
@return common-adjust-lightness($sColor, $fTargetLightness);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjust the alpha chanel (opacity) of $sColor to the absolute $fTargetAlpha value.
|
||||
* It is different than opacify() / transparentize() that shift the current alpha value by X%
|
||||
*
|
||||
* @deprecated Use common-adjust-alpha() instead
|
||||
* @return Modified color value in HSLA format
|
||||
*/
|
||||
@function ibo-adjust-alpha($sColor, $fTargetAlpha) {
|
||||
$iHue: hue($sColor);
|
||||
$fSaturation: saturation($sColor);
|
||||
$fLightness: lightness($sColor);
|
||||
$fAlpha: alpha($sColor);
|
||||
|
||||
@return hsla($iHue, $fSaturation, $fLightness, $fTargetAlpha);
|
||||
@return common-adjust-alpha($sColor, $fTargetAlpha);
|
||||
}
|
||||
@@ -3,9 +3,9 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-class-icon--small--size: 32px !default;
|
||||
$ibo-class-icon--medium--size: 48px !default;
|
||||
$ibo-class-icon--large--size: 64px !default;
|
||||
$ibo-class-icon--small--size: $common-class-icon--small--size !default;
|
||||
$ibo-class-icon--medium--size: $common-class-icon--medium--size !default;
|
||||
$ibo-class-icon--large--size: $common-class-icon--large--size !default;
|
||||
|
||||
.ibo-class-icon{
|
||||
&.ibo-is-small{
|
||||
|
||||
@@ -3,24 +3,7 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-text-colors: (
|
||||
'primary': $ibo-color-primary-800,
|
||||
'secondary': $ibo-color-secondary-800,
|
||||
'neutral': $ibo-color-secondary-800,
|
||||
'information': $ibo-color-information-800,
|
||||
'success': $ibo-color-success-800,
|
||||
'failure': $ibo-color-danger-800,
|
||||
'warning': $ibo-color-warning-800,
|
||||
'danger': $ibo-color-danger-800,
|
||||
'grey' : $ibo-color-grey-800,
|
||||
'blue-grey': $ibo-color-blue-grey-800,
|
||||
'blue': $ibo-color-blue-800,
|
||||
'cyan': $ibo-color-cyan-800,
|
||||
'green': $ibo-color-green-800,
|
||||
'orange': $ibo-color-orange-800,
|
||||
'red': $ibo-color-red-800,
|
||||
'pink': $ibo-color-pink-800,
|
||||
) !default;
|
||||
$ibo-text-colors: $common-text-colors !default;
|
||||
|
||||
@each $sColor, $sColorValue in $ibo-text-colors {
|
||||
.ibo-text.ibo-is-#{$sColor} {
|
||||
|
||||
@@ -8,36 +8,3 @@
|
||||
/* To use it, simply "@extend %fa-regular-base" in a rule and put the desired icon "content: '\f054'" */
|
||||
/******************************************************************************************************************************/
|
||||
|
||||
%fa-regular-base{
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 400;
|
||||
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
}
|
||||
%fa-solid-base{
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 900;
|
||||
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
}
|
||||
%fc-regular-base{
|
||||
display: inline-block;
|
||||
font-family: CombodoRegular;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
font-weight: normal;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
@@ -10,13 +10,13 @@
|
||||
/***********************************************************************/
|
||||
|
||||
/* SCSS variables */
|
||||
$ibo-sticky-sentinel--left: 0 !default;
|
||||
$ibo-sticky-sentinel--right: 0 !default;
|
||||
$ibo-sticky-sentinel--height: 0 !default;
|
||||
$ibo-sticky-sentinel-top--top: 0 !default;
|
||||
$ibo-sticky-sentinel-top--height: $ibo-sticky-sentinel--height !default;
|
||||
$ibo-sticky-sentinel-bottom--bottom: 0 !default;
|
||||
$ibo-sticky-sentinel-bottom--height: $ibo-sticky-sentinel--height !default;
|
||||
$ibo-sticky-sentinel--left: $common-sticky-sentinel--left !default;
|
||||
$ibo-sticky-sentinel--right: $common-sticky-sentinel--right !default;
|
||||
$ibo-sticky-sentinel--height: $common-sticky-sentinel--height !default;
|
||||
$ibo-sticky-sentinel-top--top: $common-sticky-sentinel-top--top !default;
|
||||
$ibo-sticky-sentinel-top--height: $common-sticky-sentinel-top--height !default;
|
||||
$ibo-sticky-sentinel-bottom--bottom: $common-sticky-sentinel-bottom--bottom !default;
|
||||
$ibo-sticky-sentinel-bottom--height: $common-sticky-sentinel-bottom--height !default;
|
||||
|
||||
/* Rules */
|
||||
.ibo-sticky-sentinel {
|
||||
|
||||
@@ -4,23 +4,23 @@
|
||||
*/
|
||||
|
||||
/* SCSS variables */
|
||||
$ibo-has-description--content: "?" !default;
|
||||
$ibo-has-description--padding-left: $ibo-spacing-200 !default;
|
||||
$ibo-has-description--color: $ibo-color-grey-600 !default;
|
||||
$ibo-has-description--font-size: 0.7em !default; /* Font size is em on purpose as we want it to be proportional to its context */
|
||||
$ibo-has-description--content: $common-has-description--content !default;
|
||||
$ibo-has-description--padding-left: $common-has-description--padding-left !default;
|
||||
$ibo-has-description--color: $common-has-description--color !default;
|
||||
$ibo-has-description--font-size: $common-has-description--font-size !default; /* Font size is em on purpose as we want it to be proportional to its context */
|
||||
|
||||
$ibo-is-code--background-color: $ibo-color-white-200 !default;
|
||||
$ibo-is-code--padding: 1.25rem 1.5rem !default;
|
||||
$ibo-is-code--background-color: $common-is-code--background-color !default;
|
||||
$ibo-is-code--padding: $common-is-code--padding !default;
|
||||
|
||||
$ibo-hyperlink-color: $ibo-color-primary-700 !default;
|
||||
$ibo-hyperlink-text-decoration: none !default;
|
||||
$ibo-hyperlink-color--on-hover: $ibo-color-primary-800 !default;
|
||||
$ibo-hyperlink-text-decoration--on-hover: $ibo-hyperlink-text-decoration !default;
|
||||
$ibo-hyperlink-color--on-active: $ibo-color-primary-900 !default;
|
||||
$ibo-hyperlink-text-decoration--on-active: $ibo-hyperlink-text-decoration !default;
|
||||
$ibo-hyperlink-color: $common-hyperlink-color !default;
|
||||
$ibo-hyperlink-text-decoration: $common-hyperlink-text-decoration !default;
|
||||
$ibo-hyperlink-color--on-hover: $common-hyperlink-color--on-hover !default;
|
||||
$ibo-hyperlink-text-decoration--on-hover: $common-hyperlink-text-decoration--on-hover !default;
|
||||
$ibo-hyperlink-color--on-active: $common-hyperlink-color--on-active !default;
|
||||
$ibo-hyperlink-text-decoration--on-active: $common-hyperlink-text-decoration--on-active !default;
|
||||
|
||||
$ibo-figure--spacing-x: 2em !default; /* Mind that this matches Bulma rule for figure */
|
||||
$ibo-figure--spacing-y: 2em !default;
|
||||
$ibo-figure--spacing-x: $common-figure--spacing-x !default; /* Mind that this matches Bulma rule for figure */
|
||||
$ibo-figure--spacing-y: $common-figure--spacing-y !default;
|
||||
|
||||
/* CSS variables */
|
||||
:root{
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-vertical-highlight--width: $ibo-size-100;
|
||||
$ibo-vertical-highlight--height: 100%;
|
||||
$ibo-vertical-highlight--width: $common-vertical-highlight--width;
|
||||
$ibo-vertical-highlight--height: $common-vertical-highlight--height;
|
||||
|
||||
@mixin ibo-vertical-highlight {
|
||||
display: block;
|
||||
|
||||
@@ -3,18 +3,19 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-selectable--background-color: transparent !default;
|
||||
$ibo-selectable--background-color: $common-selectable--background-color !default;
|
||||
|
||||
$ibo-selectable--hover--color: $ibo-color-grey-100 !default;
|
||||
$ibo-selectable--hover--background-color: $ibo-color-grey-600 !default;
|
||||
$ibo-selectable--hover--background-opacity: 0.6 !default;
|
||||
$ibo-selectable--hover--color: $common-selectable--hover--color !default;
|
||||
$ibo-selectable--hover--background-color: $common-selectable--hover--background-color !default;
|
||||
$ibo-selectable--hover--background-opacity: $common-selectable--hover--background-opacity !default;
|
||||
|
||||
$ibo-selected--color: $ibo-color-grey-100 !default;
|
||||
$ibo-selected--background-color: $ibo-color-grey-900 !default;
|
||||
$ibo-selected--background-opacity: 0.5 !default;
|
||||
$ibo-selected--color: $common-selected--color !default;
|
||||
$ibo-selected--background-color: $common-selected--background-color !default;
|
||||
$ibo-selected--background-opacity: $common-selected--background-opacity !default;
|
||||
|
||||
$ibo-selected--hover--background-color: $common-selected--hover--background-color !default;
|
||||
$ibo-selected--hover--background-opacity: $common-selected--hover--background-opacity !default;
|
||||
|
||||
$ibo-selected--hover--background-color: $ibo-color-grey-700 !default;
|
||||
$ibo-selected--hover--background-opacity: 0.5 !default;
|
||||
@mixin ibo-selectable {
|
||||
content: ' ';
|
||||
@extend %fa-solid-base;
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
|
||||
// These are the base variables used throughout the backoffice, if you don't know what to use, these are probably good :)
|
||||
|
||||
$ibo-base-variable--text-color: $ibo-color-grey-900 !default;
|
||||
$ibo-base-variable--border-radius: $ibo-border-radius-300 !default;;
|
||||
$ibo-base-variable--text-color: $common-base-variable--text-color !default;
|
||||
$ibo-base-variable--border-radius: $common-base-variable--border-radius !default;;
|
||||
@@ -3,13 +3,13 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-border-radius-100: 1px !default;
|
||||
$ibo-border-radius-300: 3px !default;
|
||||
$ibo-border-radius-400: 4px !default;
|
||||
$ibo-border-radius-500: 5px !default;
|
||||
$ibo-border-radius-700: 10px !default;
|
||||
$ibo-border-radius-900: 16px !default;
|
||||
$ibo-border-radius-full: 100% !default;
|
||||
$ibo-border-radius-100: $common-border-radius-100 !default;
|
||||
$ibo-border-radius-300: $common-border-radius-300 !default;
|
||||
$ibo-border-radius-400: $common-border-radius-400!default;
|
||||
$ibo-border-radius-500: $common-border-radius-500 !default;
|
||||
$ibo-border-radius-700: $common-border-radius-700 !default;
|
||||
$ibo-border-radius-900: $common-border-radius-900 !default;
|
||||
$ibo-border-radius-full: $common-border-radius-full !default;
|
||||
|
||||
:root{
|
||||
--ibo-border-radius-100: #{$ibo-border-radius-100};
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-depression-100: inset 0 1px 1px 0 rgba(0, 0, 0, 0.15) !default;
|
||||
$ibo-depression-100: $common-depression-100 !default;
|
||||
|
||||
:root{
|
||||
--ibo-elevation-100: #{$ibo-depression-100};
|
||||
--ibo-depression-100: #{$ibo-depression-100};
|
||||
}
|
||||
@@ -3,11 +3,11 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-elevation-100: 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px 3px rgba(0, 0, 0, 0.12) !default;
|
||||
$ibo-elevation-200: 0 2px 4px rgba(0, 0, 0, 0.12), 0 3px 6px rgba(0, 0, 0, 0.15) !default;
|
||||
$ibo-elevation-300: 0 3px 6px rgba(0, 0, 0, 0.10), 0 10px 20px rgba(0, 0, 0, 0.15) !default;
|
||||
$ibo-elevation-400: 0 5px 10px rgba(0, 0, 0, 0.05), 0 15px 25px rgba(0, 0, 0, 0.15) !default;
|
||||
$ibo-elevation-500: 0 20px 40px rgba(0, 0, 0, 0.20) !default;
|
||||
$ibo-elevation-100: $common-elevation-100 !default;
|
||||
$ibo-elevation-200: $common-elevation-200 !default;
|
||||
$ibo-elevation-300: $common-elevation-300 !default;
|
||||
$ibo-elevation-400: $common-elevation-400 !default;
|
||||
$ibo-elevation-500: $common-elevation-500 !default;
|
||||
|
||||
:root{
|
||||
--ibo-elevation-100: #{$ibo-elevation-100};
|
||||
|
||||
@@ -3,4 +3,3 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$approot-relative: '../../../../' !default;
|
||||
|
||||
@@ -3,25 +3,25 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-size-0: 0 !default;
|
||||
$ibo-size-50: 2px !default;
|
||||
$ibo-size-100: 4px !default;
|
||||
$ibo-size-150: 8px !default;
|
||||
$ibo-size-200: 12px !default;
|
||||
$ibo-size-250: 16px !default;
|
||||
$ibo-size-300: 24px !default;
|
||||
$ibo-size-350: 32px !default;
|
||||
$ibo-size-400: 48px !default;
|
||||
$ibo-size-450: 64px !default;
|
||||
$ibo-size-500: 96px !default;
|
||||
$ibo-size-550: 128px !default;
|
||||
$ibo-size-600: 192px !default;
|
||||
$ibo-size-650: 256px !default;
|
||||
$ibo-size-700: 384px !default;
|
||||
$ibo-size-750: 512px !default;
|
||||
$ibo-size-800: 640px !default;
|
||||
$ibo-size-850: 768px !default;
|
||||
$ibo-size-900: 896px !default;
|
||||
$ibo-size-0: $common-size-0 !default;
|
||||
$ibo-size-50: $common-size-50 !default;
|
||||
$ibo-size-100: $common-size-100 !default;
|
||||
$ibo-size-150: $common-size-150 !default;
|
||||
$ibo-size-200: $common-size-200 !default;
|
||||
$ibo-size-250: $common-size-250 !default;
|
||||
$ibo-size-300: $common-size-300 !default;
|
||||
$ibo-size-350: $common-size-350 !default;
|
||||
$ibo-size-400: $common-size-400 !default;
|
||||
$ibo-size-450: $common-size-450 !default;
|
||||
$ibo-size-500: $common-size-500 !default;
|
||||
$ibo-size-550: $common-size-550 !default;
|
||||
$ibo-size-600: $common-size-600 !default;
|
||||
$ibo-size-650: $common-size-650 !default;
|
||||
$ibo-size-700: $common-size-700 !default;
|
||||
$ibo-size-750: $common-size-750 !default;
|
||||
$ibo-size-800: $common-size-800 !default;
|
||||
$ibo-size-850: $common-size-850 !default;
|
||||
$ibo-size-900: $common-size-900 !default;
|
||||
|
||||
:root{
|
||||
--ibo-size-0: #{$ibo-size-0};
|
||||
|
||||
@@ -3,27 +3,28 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$ibo-spacing-0: $ibo-size-0 !default;
|
||||
$ibo-spacing-100: $ibo-size-50 !default;
|
||||
$ibo-spacing-200: $ibo-size-100 !default;
|
||||
$ibo-spacing-300: $ibo-size-150 !default;
|
||||
$ibo-spacing-400: $ibo-size-200 !default;
|
||||
$ibo-spacing-500: $ibo-size-250 !default;
|
||||
$ibo-spacing-600: $ibo-size-300 !default;
|
||||
$ibo-spacing-700: $ibo-size-350 !default;
|
||||
$ibo-spacing-800: $ibo-size-400 !default;
|
||||
$ibo-spacing-900: $ibo-size-450 !default;
|
||||
$ibo-spacing-950: $ibo-size-500 !default;
|
||||
$ibo-spacing-0: $common-spacing-0 !default;
|
||||
$ibo-spacing-100: $common-spacing-100 !default;
|
||||
$ibo-spacing-200: $common-spacing-200 !default;
|
||||
$ibo-spacing-300: $common-spacing-300 !default;
|
||||
$ibo-spacing-400: $common-spacing-400 !default;
|
||||
$ibo-spacing-500: $common-spacing-500 !default;
|
||||
$ibo-spacing-600: $common-spacing-600 !default;
|
||||
$ibo-spacing-700: $common-spacing-700 !default;
|
||||
$ibo-spacing-800: $common-spacing-800 !default;
|
||||
$ibo-spacing-900: $common-spacing-900 !default;
|
||||
$ibo-spacing-950: $common-spacing-950 !default;
|
||||
|
||||
:root{
|
||||
--ibo-spacing-0: #{$ibo-size-0};
|
||||
--ibo-spacing-100: #{$ibo-size-50};
|
||||
--ibo-spacing-200: #{$ibo-size-100};
|
||||
--ibo-spacing-300: #{$ibo-size-150};
|
||||
--ibo-spacing-400: #{$ibo-size-200};
|
||||
--ibo-spacing-500: #{$ibo-size-250};
|
||||
--ibo-spacing-600: #{$ibo-size-300};
|
||||
--ibo-spacing-700: #{$ibo-size-350};
|
||||
--ibo-spacing-800: #{$ibo-size-400};
|
||||
--ibo-spacing-900: #{$ibo-size-450};
|
||||
--ibo-spacing-0: #{$ibo-spacing-0};
|
||||
--ibo-spacing-100: #{$ibo-spacing-100};
|
||||
--ibo-spacing-200: #{$ibo-spacing-200};
|
||||
--ibo-spacing-300: #{$ibo-spacing-300};
|
||||
--ibo-spacing-400: #{$ibo-spacing-400};
|
||||
--ibo-spacing-500: #{$ibo-spacing-500};
|
||||
--ibo-spacing-600: #{$ibo-spacing-600};
|
||||
--ibo-spacing-700: #{$ibo-spacing-700};
|
||||
--ibo-spacing-800: #{$ibo-spacing-800};
|
||||
--ibo-spacing-900: #{$ibo-spacing-900};
|
||||
--ibo-spacing-950: #{$ibo-spacing-950};
|
||||
}
|
||||
@@ -4,38 +4,38 @@
|
||||
*/
|
||||
|
||||
/* Base size: html font-size 12px */
|
||||
$ibo-font-size-20: 0.67rem !default; /* 8px */
|
||||
$ibo-font-size-50: 0.83rem !default; /* 10px */
|
||||
$ibo-font-size-100: 1rem !default; /* 12px */
|
||||
$ibo-font-size-150: 1.17rem !default; /* 14px */
|
||||
$ibo-font-size-200: 1.33rem !default; /* 16px */
|
||||
$ibo-font-size-250: 1.5rem !default; /* 18px */
|
||||
$ibo-font-size-300: 1.67rem !default; /* 20px */
|
||||
$ibo-font-size-350: 1.83rem !default; /* 22px */
|
||||
$ibo-font-size-400: 2rem !default; /* 24px */
|
||||
$ibo-font-size-450: 2.5rem !default; /* 30px */
|
||||
$ibo-font-size-500: 3rem !default; /* 36px */
|
||||
$ibo-font-size-550: 4rem !default; /* 48px */
|
||||
$ibo-font-size-600: 5rem !default; /* 60px */
|
||||
$ibo-font-size-650: 6rem !default; /* 72px */
|
||||
$ibo-font-size-700: 7rem !default; /* 84px */
|
||||
$ibo-font-size-20: $common-font-size-20 !default; /* 8px */
|
||||
$ibo-font-size-50: $common-font-size-50 !default; /* 10px */
|
||||
$ibo-font-size-100: $common-font-size-100 !default; /* 12px */
|
||||
$ibo-font-size-150: $common-font-size-150 !default; /* 14px */
|
||||
$ibo-font-size-200: $common-font-size-200 !default; /* 16px */
|
||||
$ibo-font-size-250: $common-font-size-250 !default; /* 18px */
|
||||
$ibo-font-size-300: $common-font-size-300 !default; /* 20px */
|
||||
$ibo-font-size-350: $common-font-size-350 !default; /* 22px */
|
||||
$ibo-font-size-400: $common-font-size-400 !default; /* 24px */
|
||||
$ibo-font-size-450: $common-font-size-450 !default; /* 30px */
|
||||
$ibo-font-size-500: $common-font-size-500 !default; /* 36px */
|
||||
$ibo-font-size-550: $common-font-size-550 !default; /* 48px */
|
||||
$ibo-font-size-600: $common-font-size-600 !default; /* 60px */
|
||||
$ibo-font-size-650: $common-font-size-650 !default; /* 72px */
|
||||
$ibo-font-size-700: $common-font-size-700 !default; /* 84px */
|
||||
|
||||
/* Value Common weight name (https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight) */
|
||||
$ibo-font-weight-100: 100 !default; /* 100 Thin (Harline) */
|
||||
$ibo-font-weight-200: 200 !default; /* 200 Extra Light (Ultra Light) */
|
||||
$ibo-font-weight-300: 300 !default; /* 300 Light */
|
||||
$ibo-font-weight-400: 400 !default; /* 400 Normal (Regular) */
|
||||
$ibo-font-weight-500: 500 !default; /* 500 Medium */
|
||||
$ibo-font-weight-600: 600 !default; /* 600 Semi Bold (Demi Bold) */
|
||||
$ibo-font-weight-700: 700 !default; /* 700 Bold */
|
||||
$ibo-font-weight-800: 800 !default; /* 800 Extra Bold (Ultra Bold) */
|
||||
$ibo-font-weight-900: 900 !default; /* 900 Black (Heavy) */
|
||||
$ibo-font-weight-950: 950 !default; /* 950 Extra Black (Ultra Black) */
|
||||
$ibo-font-weight-100: $common-font-weight-100 !default; /* 100 Thin (Harline) */
|
||||
$ibo-font-weight-200: $common-font-weight-200 !default; /* 200 Extra Light (Ultra Light) */
|
||||
$ibo-font-weight-300: $common-font-weight-300 !default; /* 300 Light */
|
||||
$ibo-font-weight-400: $common-font-weight-400 !default; /* 400 Normal (Regular) */
|
||||
$ibo-font-weight-500: $common-font-weight-500 !default; /* 500 Medium */
|
||||
$ibo-font-weight-600: $common-font-weight-600 !default; /* 600 Semi Bold (Demi Bold) */
|
||||
$ibo-font-weight-700: $common-font-weight-700 !default; /* 700 Bold */
|
||||
$ibo-font-weight-800: $common-font-weight-800 !default; /* 800 Extra Bold (Ultra Bold) */
|
||||
$ibo-font-weight-900: $common-font-weight-900 !default; /* 900 Black (Heavy) */
|
||||
$ibo-font-weight-950: $common-font-weight-950 !default; /* 950 Extra Black (Ultra Black) */
|
||||
|
||||
$ibo-font-family-base: "Raleway" !default;
|
||||
$ibo-font-family-fallbacks: "sans-serif", "system-ui" !default;
|
||||
$ibo-font-family-monospace: monospace !default;
|
||||
$ibo-font-family-code: $ibo-font-family-monospace !default;
|
||||
$ibo-font-family-base: $common-font-family-base !default;
|
||||
$ibo-font-family-fallbacks: $common-font-family-fallbacks !default;
|
||||
$ibo-font-family-monospace: $common-font-family-monospace !default;
|
||||
$ibo-font-family-code: $common-font-family-code !default;
|
||||
|
||||
:root {
|
||||
--ibo-font-size-50: #{$ibo-font-size-50};
|
||||
|
||||
@@ -4,102 +4,102 @@
|
||||
*/
|
||||
|
||||
/* Base color palettes */
|
||||
$ibo-color-white-100: hsla(0, 0%, 100%, 1) !default;
|
||||
$ibo-color-white-200: hsla(0, 0%, 94.9%, 1) !default;
|
||||
$ibo-color-transparent: hsla(0, 0%, 100%, 0) !default;
|
||||
$ibo-color-white-100: $common-color-white-100 !default;
|
||||
$ibo-color-white-200: $common-color-white-200 !default;
|
||||
$ibo-color-transparent: $common-color-transparent !default;
|
||||
|
||||
$ibo-color-grey-50: hsla(240, 20%, 99%, 1) !default;
|
||||
$ibo-color-grey-100: hsla(210, 16.7%, 97.6%, 1) !default;
|
||||
$ibo-color-grey-200: hsla(207, 22.4%, 90.4%, 1) !default;
|
||||
$ibo-color-grey-300: hsla(210, 23.5%, 86.7%, 1) !default;
|
||||
$ibo-color-grey-400: hsla(208, 17.2%, 82.9%, 1) !default;
|
||||
$ibo-color-grey-500: hsla(209, 23.7%, 74.3%, 1) !default;
|
||||
$ibo-color-grey-600: hsla(215, 16.6%, 63.3%, 1) !default;
|
||||
$ibo-color-grey-700: hsla(214, 11.3%, 48.6%, 1) !default;
|
||||
$ibo-color-grey-800: hsla(215, 16.9%, 30.2%, 1) !default;
|
||||
$ibo-color-grey-900: hsla(215, 22.4%, 16.7%, 1) !default;
|
||||
$ibo-color-grey-950: hsla(215, 26.4%, 10.7%, 1) !default;
|
||||
$ibo-color-grey-50: $common-color-grey-50 !default;
|
||||
$ibo-color-grey-100: $common-color-grey-100 !default;
|
||||
$ibo-color-grey-200: $common-color-grey-200 !default;
|
||||
$ibo-color-grey-300: $common-color-grey-300 !default;
|
||||
$ibo-color-grey-400: $common-color-grey-400 !default;
|
||||
$ibo-color-grey-500: $common-color-grey-500 !default;
|
||||
$ibo-color-grey-600: $common-color-grey-600 !default;
|
||||
$ibo-color-grey-700: $common-color-grey-700 !default;
|
||||
$ibo-color-grey-800: $common-color-grey-800 !default;
|
||||
$ibo-color-grey-900: $common-color-grey-900 !default;
|
||||
$ibo-color-grey-950: $common-color-grey-950 !default;
|
||||
|
||||
$ibo-color-blue-grey-50: hsla(210, 36%, 96%, 1) !default;
|
||||
$ibo-color-blue-grey-100: hsla(198, 15.7%, 83.7%, 1) !default;
|
||||
$ibo-color-blue-grey-200: hsla(200, 15.3%, 73.1%, 1) !default;
|
||||
$ibo-color-blue-grey-300: hsla(200, 15.6%, 62.4%, 1) !default;
|
||||
$ibo-color-blue-grey-400: hsla(200, 15.4%, 54.1%, 1) !default;
|
||||
$ibo-color-blue-grey-500: hsla(200, 18.3%, 46.1%, 1) !default;
|
||||
$ibo-color-blue-grey-600: hsla(199, 18.4%, 40.4%, 1) !default;
|
||||
$ibo-color-blue-grey-700: hsla(199, 18.3%, 33.1%, 1) !default;
|
||||
$ibo-color-blue-grey-800: hsla(200, 17.9%, 26.3%, 1) !default;
|
||||
$ibo-color-blue-grey-900: hsla(200, 19.1%, 18.4%, 1) !default;
|
||||
$ibo-color-blue-grey-950: hsla(200, 20.2%, 13.1%, 1) !default;
|
||||
$ibo-color-blue-grey-50: $common-color-blue-grey-50 !default;
|
||||
$ibo-color-blue-grey-100: $common-color-blue-grey-100 !default;
|
||||
$ibo-color-blue-grey-200: $common-color-blue-grey-200 !default;
|
||||
$ibo-color-blue-grey-300: $common-color-blue-grey-300 !default;
|
||||
$ibo-color-blue-grey-400: $common-color-blue-grey-400 !default;
|
||||
$ibo-color-blue-grey-500: $common-color-blue-grey-500 !default;
|
||||
$ibo-color-blue-grey-600: $common-color-blue-grey-600 !default;
|
||||
$ibo-color-blue-grey-700: $common-color-blue-grey-700 !default;
|
||||
$ibo-color-blue-grey-800: $common-color-blue-grey-800 !default;
|
||||
$ibo-color-blue-grey-900: $common-color-blue-grey-900 !default;
|
||||
$ibo-color-blue-grey-950: $common-color-blue-grey-950 !default;
|
||||
|
||||
$ibo-color-blue-100: hsla(201, 100%, 96.1%, 1) !default;
|
||||
$ibo-color-blue-200: hsla(202, 80.6%, 85.9%, 1) !default;
|
||||
$ibo-color-blue-300: hsla(203, 82%, 76.1%, 1) !default;
|
||||
$ibo-color-blue-400: hsla(205, 79.3%, 65.9%, 1) !default;
|
||||
$ibo-color-blue-500: hsla(207, 72.6%, 57.1%, 1) !default;
|
||||
$ibo-color-blue-600: hsla(209, 61.6%, 50%, 1) !default;
|
||||
$ibo-color-blue-700: hsla(211, 60.7%, 42.9%, 1) !default;
|
||||
$ibo-color-blue-800: hsla(213, 49.4%, 34.1%, 1) !default;
|
||||
$ibo-color-blue-900: hsla(215, 41.3%, 28%, 1) !default;
|
||||
$ibo-color-blue-950: hsla(215, 36.8%, 23%, 1) !default;
|
||||
$ibo-color-blue-100: $common-color-blue-100 !default;
|
||||
$ibo-color-blue-200: $common-color-blue-200 !default;
|
||||
$ibo-color-blue-300: $common-color-blue-300 !default;
|
||||
$ibo-color-blue-400: $common-color-blue-400 !default;
|
||||
$ibo-color-blue-500: $common-color-blue-500 !default;
|
||||
$ibo-color-blue-600: $common-color-blue-600 !default;
|
||||
$ibo-color-blue-700: $common-color-blue-700 !default;
|
||||
$ibo-color-blue-800: $common-color-blue-800 !default;
|
||||
$ibo-color-blue-900: $common-color-blue-900 !default;
|
||||
$ibo-color-blue-950: $common-color-blue-950 !default;
|
||||
|
||||
$ibo-color-cyan-100: hsla(186, 61.2%, 86.9%, 1) !default;
|
||||
$ibo-color-cyan-200: hsla(187, 71.6%, 71%, 1) !default;
|
||||
$ibo-color-cyan-300: hsla(187, 71.2%, 59.2%, 1) !default;
|
||||
$ibo-color-cyan-400: hsla(187, 70.9%, 50.2%, 1) !default;
|
||||
$ibo-color-cyan-500: hsla(187, 100%, 41.6%, 1) !default;
|
||||
$ibo-color-cyan-600: hsla(187, 100%, 37.8%, 1) !default;
|
||||
$ibo-color-cyan-700: hsla(186, 100%, 32.7%, 1) !default;
|
||||
$ibo-color-cyan-800: hsla(185, 100%, 28%, 1) !default;
|
||||
$ibo-color-cyan-900: hsla(182, 100%, 19.6%, 1) !default;
|
||||
$ibo-color-cyan-950: hsla(180, 100%, 10.6%, 1) !default;
|
||||
$ibo-color-cyan-100: $common-color-cyan-100 !default;
|
||||
$ibo-color-cyan-200: $common-color-cyan-200 !default;
|
||||
$ibo-color-cyan-300: $common-color-cyan-300 !default;
|
||||
$ibo-color-cyan-400: $common-color-cyan-400 !default;
|
||||
$ibo-color-cyan-500: $common-color-cyan-500 !default;
|
||||
$ibo-color-cyan-600: $common-color-cyan-600 !default;
|
||||
$ibo-color-cyan-700: $common-color-cyan-700 !default;
|
||||
$ibo-color-cyan-800: $common-color-cyan-800 !default;
|
||||
$ibo-color-cyan-900: $common-color-cyan-900 !default;
|
||||
$ibo-color-cyan-950: $common-color-cyan-950 !default;
|
||||
|
||||
$ibo-color-green-100: hsla(88, 50.7%, 85.7%, 1) !default;
|
||||
$ibo-color-green-200: hsla(88, 50%, 76.5%, 1) !default;
|
||||
$ibo-color-green-300: hsla(88, 50%, 67.1%, 1) !default;
|
||||
$ibo-color-green-400: hsla(88, 50.2%, 59.8%, 1) !default;
|
||||
$ibo-color-green-500: hsla(88, 50.2%, 52.7%, 1) !default;
|
||||
$ibo-color-green-600: hsla(89, 46.1%, 48%, 1) !default;
|
||||
$ibo-color-green-700: hsla(92, 47.9%, 42.2%, 1) !default;
|
||||
$ibo-color-green-800: hsla(95, 49.5%, 36.5%, 1) !default;
|
||||
$ibo-color-green-900: hsla(103, 55.6%, 26.5%, 1) !default;
|
||||
$ibo-color-green-950: hsla(108, 59.6%, 21.5%, 1) !default;
|
||||
$ibo-color-green-100: $common-color-green-100 !default;
|
||||
$ibo-color-green-200: $common-color-green-200 !default;
|
||||
$ibo-color-green-300: $common-color-green-300 !default;
|
||||
$ibo-color-green-400: $common-color-green-400 !default;
|
||||
$ibo-color-green-500: $common-color-green-500 !default;
|
||||
$ibo-color-green-600: $common-color-green-600 !default;
|
||||
$ibo-color-green-700: $common-color-green-700 !default;
|
||||
$ibo-color-green-800: $common-color-green-800 !default;
|
||||
$ibo-color-green-900: $common-color-green-900 !default;
|
||||
$ibo-color-green-950: $common-color-green-950 !default;
|
||||
|
||||
|
||||
$ibo-color-orange-100: hsla(40, 100%, 97.1%, 1) !default;
|
||||
$ibo-color-orange-200: hsla(39, 96.4%, 89%, 1) !default;
|
||||
$ibo-color-orange-300: hsla(38, 93.2%, 76.9%, 1) !default;
|
||||
$ibo-color-orange-400: hsla(33, 89.9%, 64.9%, 1) !default;
|
||||
$ibo-color-orange-500: hsla(28, 82.9%, 51.8%, 1) !default;
|
||||
$ibo-color-orange-600: hsla(24, 74.7%, 49.6%, 1) !default;
|
||||
$ibo-color-orange-700: hsla(20, 70.7%, 44.1%, 1) !default;
|
||||
$ibo-color-orange-800: hsla(16, 65.1%, 37.1%, 1) !default;
|
||||
$ibo-color-orange-900: hsla(14, 60.8%, 30%, 1) !default;
|
||||
$ibo-color-orange-950: hsla(14, 55.1%, 22%, 1) !default;
|
||||
$ibo-color-orange-100: $common-color-orange-100 !default;
|
||||
$ibo-color-orange-200: $common-color-orange-200 !default;
|
||||
$ibo-color-orange-300: $common-color-orange-300 !default;
|
||||
$ibo-color-orange-400: $common-color-orange-400 !default;
|
||||
$ibo-color-orange-500: $common-color-orange-500 !default;
|
||||
$ibo-color-orange-600: $common-color-orange-600 !default;
|
||||
$ibo-color-orange-700: $common-color-orange-700 !default;
|
||||
$ibo-color-orange-800: $common-color-orange-800 !default;
|
||||
$ibo-color-orange-900: $common-color-orange-900 !default;
|
||||
$ibo-color-orange-950: $common-color-orange-950 !default;
|
||||
|
||||
$ibo-color-red-100: hsla(0, 76.9%, 94.9%, 1) !default;
|
||||
$ibo-color-red-200: hsla(0, 95.1%, 92%, 1) !default;
|
||||
$ibo-color-red-300: hsla(0, 97.4%, 84.7%, 1) !default;
|
||||
$ibo-color-red-400: hsla(0, 95.3%, 74.7%, 1) !default;
|
||||
$ibo-color-red-500: hsla(0, 87.8%, 67.8%, 1) !default;
|
||||
$ibo-color-red-600: hsla(0, 76.3%, 57.1%, 1) !default;
|
||||
$ibo-color-red-700: hsla(0, 60.8%, 48%, 1) !default;
|
||||
$ibo-color-red-800: hsla(0, 55.8%, 39%, 1) !default;
|
||||
$ibo-color-red-900: hsla(0, 46.8%, 31%, 1) !default;
|
||||
$ibo-color-red-950: hsla(0, 42.9%, 20%, 1) !default;
|
||||
$ibo-color-red-100: $common-color-red-100 !default;
|
||||
$ibo-color-red-200: $common-color-red-200 !default;
|
||||
$ibo-color-red-300: $common-color-red-300 !default;
|
||||
$ibo-color-red-400: $common-color-red-400 !default;
|
||||
$ibo-color-red-500: $common-color-red-500 !default;
|
||||
$ibo-color-red-600: $common-color-red-600 !default;
|
||||
$ibo-color-red-700: $common-color-red-700 !default;
|
||||
$ibo-color-red-800: $common-color-red-800 !default;
|
||||
$ibo-color-red-900: $common-color-red-900 !default;
|
||||
$ibo-color-red-950: $common-color-red-950 !default;
|
||||
|
||||
$ibo-color-pink-100: hsla(348, 100%, 98%, 1) !default;
|
||||
$ibo-color-pink-200: hsla(343, 95%, 92%, 1) !default;
|
||||
$ibo-color-pink-300: hsla(339, 90%, 85%, 1) !default;
|
||||
$ibo-color-pink-400: hsla(336, 86%, 75%, 1) !default;
|
||||
$ibo-color-pink-500: hsla(331, 79%, 66%, 1) !default;
|
||||
$ibo-color-pink-600: hsla(329, 64%, 54%, 1) !default;
|
||||
$ibo-color-pink-700: hsla(325, 57%, 46%, 1) !default;
|
||||
$ibo-color-pink-800: hsla(322, 60%, 37%, 1) !default;
|
||||
$ibo-color-pink-900: hsla(318, 51%, 29%, 1) !default;
|
||||
$ibo-color-pink-950: hsla(318, 51%, 21%, 1) !default;
|
||||
$ibo-color-pink-100: $common-color-pink-100 !default;
|
||||
$ibo-color-pink-200: $common-color-pink-200 !default;
|
||||
$ibo-color-pink-300: $common-color-pink-300 !default;
|
||||
$ibo-color-pink-400: $common-color-pink-400 !default;
|
||||
$ibo-color-pink-500: $common-color-pink-500 !default;
|
||||
$ibo-color-pink-600: $common-color-pink-600 !default;
|
||||
$ibo-color-pink-700: $common-color-pink-700 !default;
|
||||
$ibo-color-pink-800: $common-color-pink-800 !default;
|
||||
$ibo-color-pink-900: $common-color-pink-900 !default;
|
||||
$ibo-color-pink-950: $common-color-pink-950 !default;
|
||||
|
||||
$ibo-colors: ('grey', 'blue-grey', 'blue', 'cyan', 'green', 'orange', 'red', 'pink', 'primary', 'secondary', 'information', 'success', 'warning', 'danger');
|
||||
$ibo-colors: $common-colors;
|
||||
|
||||
/* CSS variables */
|
||||
:root{
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
/* Base helpers for colors */
|
||||
/* - These lightness vars are used to force a certain lightness on HSLA colors */
|
||||
$ibo-color-base-lightness-100: 93% !default;
|
||||
$ibo-color-base-lightness-900: 15% !default;
|
||||
$ibo-color-base-lightness-100: $common-color-base-lightness-100 !default;
|
||||
$ibo-color-base-lightness-900: $common-color-base-lightness-900 !default;
|
||||
|
||||
$ibo-color-base-opacity-for-lightness-100: 1 !default;
|
||||
$ibo-color-base-opacity-for-lightness-900: 1 !default;
|
||||
$ibo-color-base-opacity-for-lightness-100: $common-color-base-opacity-for-lightness-100 !default;
|
||||
$ibo-color-base-opacity-for-lightness-900: $common-color-base-opacity-for-lightness-900 !default;
|
||||
@@ -5,24 +5,24 @@
|
||||
|
||||
/* Lifecycle palette */
|
||||
/* - For workflow */
|
||||
$ibo-lifecycle-new-state-primary-color: $ibo-color-blue-800 !default;
|
||||
$ibo-lifecycle-new-state-secondary-color: $ibo-color-white-100 !default;
|
||||
$ibo-lifecycle-neutral-state-primary-color: $ibo-color-blue-800 !default;
|
||||
$ibo-lifecycle-neutral-state-secondary-color: $ibo-color-white-100 !default;
|
||||
$ibo-lifecycle-waiting-state-primary-color: $ibo-color-orange-400 !default;
|
||||
$ibo-lifecycle-waiting-state-secondary-color: $ibo-color-white-100 !default;
|
||||
$ibo-lifecycle-success-state-primary-color: $ibo-color-green-700 !default;
|
||||
$ibo-lifecycle-success-state-secondary-color: $ibo-color-white-100 !default;
|
||||
$ibo-lifecycle-failure-state-primary-color: $ibo-color-pink-700 !default;
|
||||
$ibo-lifecycle-failure-state-secondary-color: $ibo-color-white-100 !default;
|
||||
$ibo-lifecycle-frozen-state-primary-color: $ibo-color-grey-200 !default;
|
||||
$ibo-lifecycle-frozen-state-secondary-color: $ibo-color-grey-700 !default;
|
||||
$ibo-lifecycle-new-state-primary-color: $common-lifecycle-new-state-primary-color !default;
|
||||
$ibo-lifecycle-new-state-secondary-color: $common-lifecycle-new-state-secondary-color !default;
|
||||
$ibo-lifecycle-neutral-state-primary-color: $common-lifecycle-neutral-state-primary-color !default;
|
||||
$ibo-lifecycle-neutral-state-secondary-color: $common-lifecycle-neutral-state-secondary-color !default;
|
||||
$ibo-lifecycle-waiting-state-primary-color: $common-lifecycle-waiting-state-primary-color !default;
|
||||
$ibo-lifecycle-waiting-state-secondary-color: $common-lifecycle-waiting-state-secondary-color !default;
|
||||
$ibo-lifecycle-success-state-primary-color: $common-lifecycle-success-state-primary-color !default;
|
||||
$ibo-lifecycle-success-state-secondary-color: $common-lifecycle-success-state-secondary-color !default;
|
||||
$ibo-lifecycle-failure-state-primary-color: $common-lifecycle-failure-state-primary-color !default;
|
||||
$ibo-lifecycle-failure-state-secondary-color: $common-lifecycle-failure-state-secondary-color !default;
|
||||
$ibo-lifecycle-frozen-state-primary-color: $common-lifecycle-frozen-state-primary-color !default;
|
||||
$ibo-lifecycle-frozen-state-secondary-color: $common-lifecycle-frozen-state-secondary-color !default;
|
||||
|
||||
/* - For basic lifecycle */
|
||||
$ibo-lifecycle-active-state-primary-color: $ibo-color-green-700 !default;
|
||||
$ibo-lifecycle-active-state-secondary-color: $ibo-color-white-100 !default;
|
||||
$ibo-lifecycle-inactive-state-primary-color: $ibo-color-orange-400 !default;
|
||||
$ibo-lifecycle-inactive-state-secondary-color: $ibo-color-white-100 !default;
|
||||
$ibo-lifecycle-active-state-primary-color: $common-lifecycle-active-state-primary-color !default;
|
||||
$ibo-lifecycle-active-state-secondary-color: $common-lifecycle-active-state-secondary-color !default;
|
||||
$ibo-lifecycle-inactive-state-primary-color: $common-lifecycle-inactive-state-primary-color !default;
|
||||
$ibo-lifecycle-inactive-state-secondary-color: $common-lifecycle-inactive-state-secondary-color !default;
|
||||
|
||||
$ibo-lifecycle-states-colors: (
|
||||
'new': (
|
||||
|
||||
@@ -5,99 +5,99 @@
|
||||
|
||||
/* Semantic palettes */
|
||||
/* - Primary color of the brand */
|
||||
$ibo-color-primary-100: $ibo-color-orange-100 !default;
|
||||
$ibo-color-primary-200: $ibo-color-orange-200 !default;
|
||||
$ibo-color-primary-300: $ibo-color-orange-300 !default;
|
||||
$ibo-color-primary-400: $ibo-color-orange-400 !default;
|
||||
$ibo-color-primary-500: $ibo-color-orange-500 !default;
|
||||
$ibo-color-primary-600: $ibo-color-orange-600 !default;
|
||||
$ibo-color-primary-700: $ibo-color-orange-700 !default;
|
||||
$ibo-color-primary-800: $ibo-color-orange-800 !default;
|
||||
$ibo-color-primary-900: $ibo-color-orange-900 !default;
|
||||
$ibo-color-primary-950: $ibo-color-orange-950 !default;
|
||||
$ibo-color-primary-100: $common-color-primary-100 !default;
|
||||
$ibo-color-primary-200: $common-color-primary-200 !default;
|
||||
$ibo-color-primary-300: $common-color-primary-300 !default;
|
||||
$ibo-color-primary-400: $common-color-primary-400 !default;
|
||||
$ibo-color-primary-500: $common-color-primary-500 !default;
|
||||
$ibo-color-primary-600: $common-color-primary-600 !default;
|
||||
$ibo-color-primary-700: $common-color-primary-700 !default;
|
||||
$ibo-color-primary-800: $common-color-primary-800 !default;
|
||||
$ibo-color-primary-900: $common-color-primary-900 !default;
|
||||
$ibo-color-primary-950: $common-color-primary-950 !default;
|
||||
|
||||
/* - Secondary color of the brand */
|
||||
$ibo-color-secondary-100: $ibo-color-grey-100 !default;
|
||||
$ibo-color-secondary-200: $ibo-color-grey-200 !default;
|
||||
$ibo-color-secondary-300: $ibo-color-grey-300 !default;
|
||||
$ibo-color-secondary-400: $ibo-color-grey-400 !default;
|
||||
$ibo-color-secondary-500: $ibo-color-grey-500 !default;
|
||||
$ibo-color-secondary-600: $ibo-color-grey-600 !default;
|
||||
$ibo-color-secondary-700: $ibo-color-grey-700 !default;
|
||||
$ibo-color-secondary-800: $ibo-color-grey-800 !default;
|
||||
$ibo-color-secondary-900: $ibo-color-grey-900 !default;
|
||||
$ibo-color-secondary-950: $ibo-color-grey-950 !default;
|
||||
$ibo-color-secondary-100: $common-color-secondary-100 !default;
|
||||
$ibo-color-secondary-200: $common-color-secondary-200 !default;
|
||||
$ibo-color-secondary-300: $common-color-secondary-300 !default;
|
||||
$ibo-color-secondary-400: $common-color-secondary-400 !default;
|
||||
$ibo-color-secondary-500: $common-color-secondary-500 !default;
|
||||
$ibo-color-secondary-600: $common-color-secondary-600 !default;
|
||||
$ibo-color-secondary-700: $common-color-secondary-700 !default;
|
||||
$ibo-color-secondary-800: $common-color-secondary-800 !default;
|
||||
$ibo-color-secondary-900: $common-color-secondary-900 !default;
|
||||
$ibo-color-secondary-950: $common-color-secondary-950 !default;
|
||||
|
||||
/* - Information: messages / actions that should neither seem as success, warning or failure */
|
||||
$ibo-color-information-100: $ibo-color-blue-100 !default;
|
||||
$ibo-color-information-200: $ibo-color-blue-200 !default;
|
||||
$ibo-color-information-300: $ibo-color-blue-300 !default;
|
||||
$ibo-color-information-400: $ibo-color-blue-400 !default;
|
||||
$ibo-color-information-500: $ibo-color-blue-500 !default;
|
||||
$ibo-color-information-600: $ibo-color-blue-600 !default;
|
||||
$ibo-color-information-700: $ibo-color-blue-700 !default;
|
||||
$ibo-color-information-800: $ibo-color-blue-800 !default;
|
||||
$ibo-color-information-900: $ibo-color-blue-900 !default;
|
||||
$ibo-color-information-950: $ibo-color-blue-950 !default;
|
||||
$ibo-color-information-100: $common-color-information-100 !default;
|
||||
$ibo-color-information-200: $common-color-information-200 !default;
|
||||
$ibo-color-information-300: $common-color-information-300 !default;
|
||||
$ibo-color-information-400: $common-color-information-400 !default;
|
||||
$ibo-color-information-500: $common-color-information-500 !default;
|
||||
$ibo-color-information-600: $common-color-information-600 !default;
|
||||
$ibo-color-information-700: $common-color-information-700 !default;
|
||||
$ibo-color-information-800: $common-color-information-800 !default;
|
||||
$ibo-color-information-900: $common-color-information-900 !default;
|
||||
$ibo-color-information-950: $common-color-information-950 !default;
|
||||
|
||||
/* Success: messages of success, safe actions, ... */
|
||||
$ibo-color-success-100: $ibo-color-green-100 !default;
|
||||
$ibo-color-success-200: $ibo-color-green-200 !default;
|
||||
$ibo-color-success-300: $ibo-color-green-300 !default;
|
||||
$ibo-color-success-400: $ibo-color-green-400 !default;
|
||||
$ibo-color-success-500: $ibo-color-green-500 !default;
|
||||
$ibo-color-success-600: $ibo-color-green-600 !default;
|
||||
$ibo-color-success-700: $ibo-color-green-700 !default;
|
||||
$ibo-color-success-800: $ibo-color-green-800 !default;
|
||||
$ibo-color-success-900: $ibo-color-green-900 !default;
|
||||
$ibo-color-success-950: $ibo-color-green-950 !default;
|
||||
$ibo-color-success-100: $common-color-success-100 !default;
|
||||
$ibo-color-success-200: $common-color-success-200 !default;
|
||||
$ibo-color-success-300: $common-color-success-300 !default;
|
||||
$ibo-color-success-400: $common-color-success-400 !default;
|
||||
$ibo-color-success-500: $common-color-success-500 !default;
|
||||
$ibo-color-success-600: $common-color-success-600 !default;
|
||||
$ibo-color-success-700: $common-color-success-700 !default;
|
||||
$ibo-color-success-800: $common-color-success-800 !default;
|
||||
$ibo-color-success-900: $common-color-success-900 !default;
|
||||
$ibo-color-success-950: $common-color-success-950 !default;
|
||||
|
||||
/* Warning: messages of warning, actions that would be done carefully, ... */
|
||||
$ibo-color-warning-100: $ibo-color-orange-100 !default;
|
||||
$ibo-color-warning-200: $ibo-color-orange-200 !default;
|
||||
$ibo-color-warning-300: $ibo-color-orange-300 !default;
|
||||
$ibo-color-warning-400: $ibo-color-orange-400 !default;
|
||||
$ibo-color-warning-500: $ibo-color-orange-500 !default;
|
||||
$ibo-color-warning-600: $ibo-color-orange-600 !default;
|
||||
$ibo-color-warning-700: $ibo-color-orange-700 !default;
|
||||
$ibo-color-warning-800: $ibo-color-orange-800 !default;
|
||||
$ibo-color-warning-900: $ibo-color-orange-900 !default;
|
||||
$ibo-color-warning-950: $ibo-color-orange-950 !default;
|
||||
$ibo-color-warning-100: $common-color-warning-100 !default;
|
||||
$ibo-color-warning-200: $common-color-warning-200 !default;
|
||||
$ibo-color-warning-300: $common-color-warning-300 !default;
|
||||
$ibo-color-warning-400: $common-color-warning-400 !default;
|
||||
$ibo-color-warning-500: $common-color-warning-500 !default;
|
||||
$ibo-color-warning-600: $common-color-warning-600 !default;
|
||||
$ibo-color-warning-700: $common-color-warning-700 !default;
|
||||
$ibo-color-warning-800: $common-color-warning-800 !default;
|
||||
$ibo-color-warning-900: $common-color-warning-900 !default;
|
||||
$ibo-color-warning-950: $common-color-warning-950 !default;
|
||||
|
||||
/* Danger: messages of failure, error, ... */
|
||||
$ibo-color-error-100: $ibo-color-red-100 !default;
|
||||
$ibo-color-error-200: $ibo-color-red-200 !default;
|
||||
$ibo-color-error-300: $ibo-color-red-300 !default;
|
||||
$ibo-color-error-400: $ibo-color-red-400 !default;
|
||||
$ibo-color-error-500: $ibo-color-red-500 !default;
|
||||
$ibo-color-error-600: $ibo-color-red-600 !default;
|
||||
$ibo-color-error-700: $ibo-color-red-700 !default;
|
||||
$ibo-color-error-800: $ibo-color-red-800 !default;
|
||||
$ibo-color-error-900: $ibo-color-red-900 !default;
|
||||
$ibo-color-error-950: $ibo-color-red-950 !default;
|
||||
$ibo-color-error-100: $common-color-error-100 !default;
|
||||
$ibo-color-error-200: $common-color-error-200 !default;
|
||||
$ibo-color-error-300: $common-color-error-300 !default;
|
||||
$ibo-color-error-400: $common-color-error-400 !default;
|
||||
$ibo-color-error-500: $common-color-error-500 !default;
|
||||
$ibo-color-error-600: $common-color-error-600 !default;
|
||||
$ibo-color-error-700: $common-color-error-700 !default;
|
||||
$ibo-color-error-800: $common-color-error-800 !default;
|
||||
$ibo-color-error-900: $common-color-error-900 !default;
|
||||
$ibo-color-error-950: $common-color-error-950 !default;
|
||||
|
||||
/* Danger: messages of danger, actions that cannot be undone, ... */
|
||||
$ibo-color-danger-100: $ibo-color-red-100 !default;
|
||||
$ibo-color-danger-200: $ibo-color-red-200 !default;
|
||||
$ibo-color-danger-300: $ibo-color-red-300 !default;
|
||||
$ibo-color-danger-400: $ibo-color-red-400 !default;
|
||||
$ibo-color-danger-500: $ibo-color-red-500 !default;
|
||||
$ibo-color-danger-600: $ibo-color-red-600 !default;
|
||||
$ibo-color-danger-700: $ibo-color-red-700 !default;
|
||||
$ibo-color-danger-800: $ibo-color-red-800 !default;
|
||||
$ibo-color-danger-900: $ibo-color-red-900 !default;
|
||||
$ibo-color-danger-950: $ibo-color-red-950 !default;
|
||||
$ibo-color-danger-100: $common-color-danger-100 !default;
|
||||
$ibo-color-danger-200: $common-color-danger-200 !default;
|
||||
$ibo-color-danger-300: $common-color-danger-300 !default;
|
||||
$ibo-color-danger-400: $common-color-danger-400 !default;
|
||||
$ibo-color-danger-500: $common-color-danger-500 !default;
|
||||
$ibo-color-danger-600: $common-color-danger-600 !default;
|
||||
$ibo-color-danger-700: $common-color-danger-700 !default;
|
||||
$ibo-color-danger-800: $common-color-danger-800 !default;
|
||||
$ibo-color-danger-900: $common-color-danger-900 !default;
|
||||
$ibo-color-danger-950: $common-color-danger-950 !default;
|
||||
|
||||
$ibo-semantic-colors: ('primary', 'secondary', 'information', 'success', 'warning', 'danger');
|
||||
$ibo-semantic-colors: $common-semantic-colors !default;
|
||||
|
||||
$ibo-caselog-highlight-color-1: $ibo-color-green-700 !default;
|
||||
$ibo-caselog-highlight-color-2: $ibo-color-pink-700 !default;
|
||||
$ibo-caselog-highlight-color-3: $ibo-color-orange-400 !default;
|
||||
$ibo-caselog-highlight-color-4: $ibo-color-blue-600 !default;
|
||||
$ibo-caselog-highlight-color-5: $ibo-color-cyan-200 !default;
|
||||
$ibo-caselog-highlight-color-6: $ibo-color-green-200 !default;
|
||||
$ibo-caselog-highlight-color-7: $ibo-color-pink-300 !default;
|
||||
$ibo-caselog-highlight-colors: ($ibo-caselog-highlight-color-1, $ibo-caselog-highlight-color-2, $ibo-caselog-highlight-color-3, $ibo-caselog-highlight-color-4, $ibo-caselog-highlight-color-5, $ibo-caselog-highlight-color-6, $ibo-caselog-highlight-color-7) !default;
|
||||
$ibo-caselog-highlight-color-1: $common-caselog-highlight-color-1 !default;
|
||||
$ibo-caselog-highlight-color-2: $common-caselog-highlight-color-2 !default;
|
||||
$ibo-caselog-highlight-color-3: $common-caselog-highlight-color-3 !default;
|
||||
$ibo-caselog-highlight-color-4: $common-caselog-highlight-color-4 !default;
|
||||
$ibo-caselog-highlight-color-5: $common-caselog-highlight-color-5 !default;
|
||||
$ibo-caselog-highlight-color-6: $common-caselog-highlight-color-6 !default;
|
||||
$ibo-caselog-highlight-color-7: $common-caselog-highlight-color-7 !default;
|
||||
$ibo-caselog-highlight-colors: $common-caselog-highlight-colors !default;
|
||||
|
||||
/* CSS variables */
|
||||
:root {
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
/* Skeleton palette */
|
||||
/* - Colors used by skeletons svg to display placeholders */
|
||||
|
||||
$ibo-skeleton-start-color: $ibo-color-grey-200 !default;
|
||||
$ibo-skeleton-stop-color: $ibo-color-blue-grey-100 !default;
|
||||
$ibo-skeleton-start-color: $common-skeleton-start-color !default;
|
||||
$ibo-skeleton-stop-color: $common-skeleton-stop-color !default;
|
||||
|
||||
/* CSS variables */
|
||||
/* Skeleton CSS3 variables are not ibo prefixed as they are not iTop backoffice exclusives*/
|
||||
|
||||
143
css/backoffice/vendors/_highlightjs.scss
vendored
143
css/backoffice/vendors/_highlightjs.scss
vendored
@@ -2,44 +2,115 @@
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
@import "../../common/vendors/_highlightjs";
|
||||
|
||||
// Backoffice specific variables
|
||||
$ibo-vendors-highlightjs--padding: 0.9rem !default;
|
||||
$ibo-vendors-highlightjs--box-shadow: 0 0px 3px 2px inset rgba(0, 0, 0, 0.4) !default;
|
||||
$ibo-vendors-highlightjs--border-radius: $ibo-border-radius-300 !default;
|
||||
$ibo-vendors-highlightjs--code--padding-x: 5px !default;
|
||||
$ibo-vendors-highlightjs--code--padding-y: 3px !default;
|
||||
$ibo-vendors-highlightjs--padding: $common-vendors-highlightjs--padding !default;
|
||||
$ibo-vendors-highlightjs--box-shadow: $common-vendors-highlightjs--box-shadow !default;
|
||||
$ibo-vendors-highlightjs--border-radius: $common-vendors-highlightjs--border-radius !default;
|
||||
$ibo-vendors-highlightjs--code--padding-x: $common-vendors-highlightjs--code--padding-x !default;
|
||||
$ibo-vendors-highlightjs--code--padding-y: $common-vendors-highlightjs--code--padding-y !default;
|
||||
|
||||
$ibo-vendors-highlightjs--background-color: #282b2e !default;
|
||||
$ibo-vendors-highlightjs--color: #e0e2e4 !default;
|
||||
$ibo-vendors-highlightjs--keyword--color: #93c763 !default;
|
||||
$ibo-vendors-highlightjs--number--color: #ffcd22 !default;
|
||||
$ibo-vendors-highlightjs--attribute--color: #668bb0 !default;
|
||||
$ibo-vendors-highlightjs--regexp--color: #d39745 !default;
|
||||
$ibo-vendors-highlightjs--meta--color: #557182 !default;
|
||||
$ibo-vendors-highlightjs--tag--color: #8cbbad !default;
|
||||
$ibo-vendors-highlightjs--string--color: #ec7600 !default;
|
||||
$ibo-vendors-highlightjs--comment--color: #818e96 !default;
|
||||
$ibo-vendors-highlightjs--selector-class--color: #A082BD !default;
|
||||
$ibo-vendors-highlightjs--code--color: white !default;
|
||||
$ibo-vendors-highlightjs--background-color: $common-vendors-highlightjs--background-color !default;
|
||||
$ibo-vendors-highlightjs--color: $common-vendors-highlightjs--color !default;
|
||||
$ibo-vendors-highlightjs--keyword--color: $common-vendors-highlightjs--keyword--color !default;
|
||||
$ibo-vendors-highlightjs--number--color: $common-vendors-highlightjs--number--color !default;
|
||||
$ibo-vendors-highlightjs--attribute--color: $common-vendors-highlightjs--attribute--color !default;
|
||||
$ibo-vendors-highlightjs--regexp--color: $common-vendors-highlightjs--regexp--color !default;
|
||||
$ibo-vendors-highlightjs--meta--color: $common-vendors-highlightjs--meta--color !default;
|
||||
$ibo-vendors-highlightjs--tag--color: $common-vendors-highlightjs--tag--color !default;
|
||||
$ibo-vendors-highlightjs--string--color: $common-vendors-highlightjs--string--color !default;
|
||||
$ibo-vendors-highlightjs--comment--color: $common-vendors-highlightjs--comment--color !default;
|
||||
$ibo-vendors-highlightjs--selector-class--color: $common-vendors-highlightjs--selector-class--color !default;
|
||||
$ibo-vendors-highlightjs--code--color: $common-vendors-highlightjs--code--color !default;
|
||||
|
||||
// Override common variables
|
||||
$common-vendors-highlightjs--padding: $ibo-vendors-highlightjs--padding;
|
||||
$common-vendors-highlightjs--box-shadow: $ibo-vendors-highlightjs--box-shadow;
|
||||
$common-vendors-highlightjs--border-radius: $ibo-vendors-highlightjs--border-radius;
|
||||
$common-vendors-highlightjs--code--padding-x: $ibo-vendors-highlightjs--code--padding-x;
|
||||
$common-vendors-highlightjs--code--padding-y: $ibo-vendors-highlightjs--code--padding-y;
|
||||
// Highlight.js stylesheets
|
||||
/* Highlight JS */
|
||||
.common-hljs-container{
|
||||
padding: 0 !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
$common-vendors-highlightjs--background-color: $ibo-vendors-highlightjs--background-color;
|
||||
$common-vendors-highlightjs--color: $ibo-vendors-highlightjs--color;
|
||||
$common-vendors-highlightjs--keyword--color: $ibo-vendors-highlightjs--keyword--color;
|
||||
$common-vendors-highlightjs--number--color: $ibo-vendors-highlightjs--number--color;
|
||||
$common-vendors-highlightjs--attribute--color: $ibo-vendors-highlightjs--attribute--color;
|
||||
$common-vendors-highlightjs--regexp--color: $ibo-vendors-highlightjs--regexp--color;
|
||||
$common-vendors-highlightjs--meta--color: $ibo-vendors-highlightjs--meta--color;
|
||||
$common-vendors-highlightjs--tag--color: $ibo-vendors-highlightjs--tag--color;
|
||||
$common-vendors-highlightjs--string--color: $ibo-vendors-highlightjs--string--color;
|
||||
$common-vendors-highlightjs--comment--color: $ibo-vendors-highlightjs--comment--color;
|
||||
$common-vendors-highlightjs--selector-class--color: $ibo-vendors-highlightjs--selector-class--color;
|
||||
$common-vendors-highlightjs--code--color: $ibo-vendors-highlightjs--code--color;
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: $ibo-vendors-highlightjs--padding !important;
|
||||
}
|
||||
|
||||
code.hljs {
|
||||
padding: $ibo-vendors-highlightjs--code--padding-y $ibo-vendors-highlightjs--code--padding-x !important;
|
||||
}
|
||||
/**
|
||||
* Obsidian style
|
||||
* ported by Alexander Marenin (http://github.com/ioncreature)
|
||||
*/
|
||||
.hljs {
|
||||
box-shadow: $ibo-vendors-highlightjs--box-shadow !important;
|
||||
border-radius: $ibo-vendors-highlightjs--border-radius !important;
|
||||
white-space: pre-wrap;
|
||||
border: none !important;
|
||||
color: $ibo-vendors-highlightjs--color !important;
|
||||
background: $ibo-vendors-highlightjs--background-color !important;
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-literal,
|
||||
.hljs-selector-id {
|
||||
color: $ibo-vendors-highlightjs--keyword--color !important;
|
||||
}
|
||||
.hljs-number {
|
||||
color: $ibo-vendors-highlightjs--number--color !important;
|
||||
}
|
||||
.hljs-attribute {
|
||||
color: $ibo-vendors-highlightjs--attribute--color
|
||||
}
|
||||
.hljs-regexp,
|
||||
.hljs-link {
|
||||
color: $ibo-vendors-highlightjs--regexp--color !important;
|
||||
}
|
||||
.hljs-meta {
|
||||
color: $ibo-vendors-highlightjs--meta--color !important;
|
||||
}
|
||||
.hljs-tag,
|
||||
.hljs-name,
|
||||
.hljs-bullet,
|
||||
.hljs-subst,
|
||||
.hljs-emphasis,
|
||||
.hljs-type,
|
||||
.hljs-built_in,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo,
|
||||
.hljs-addition,
|
||||
.hljs-variable,
|
||||
.hljs-template-tag,
|
||||
.hljs-template-variable {
|
||||
color: $ibo-vendors-highlightjs--tag--color !important;
|
||||
}
|
||||
.hljs-string,
|
||||
.hljs-symbol {
|
||||
color: $ibo-vendors-highlightjs--string--color !important;
|
||||
}
|
||||
.hljs-comment,
|
||||
.hljs-quote,
|
||||
.hljs-deletion {
|
||||
color: $ibo-vendors-highlightjs--comment--color !important;
|
||||
}
|
||||
.hljs-selector-class {
|
||||
color: $ibo-vendors-highlightjs--selector-class--color !important;
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-literal,
|
||||
.hljs-doctag,
|
||||
.hljs-title,
|
||||
.hljs-section,
|
||||
.hljs-type,
|
||||
.hljs-name,
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-code,
|
||||
.hljs-title.class_,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-section {
|
||||
color: $ibo-vendors-highlightjs--code--color !important;
|
||||
}
|
||||
5
css/c3.min.css
vendored
5
css/c3.min.css
vendored
@@ -1,5 +0,0 @@
|
||||
/*
|
||||
* @deprecated 3.2.0 N°5621 Moved to NPM
|
||||
*/
|
||||
|
||||
.c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:gray;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #CCC}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#FFF}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max,.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000}
|
||||
108
css/common/README.md
Normal file
108
css/common/README.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Description
|
||||
This is a brief description of how the common theme is structured using both BEM and SASS 7-1 systems and how to use them.
|
||||
* [7-1 pattern](#7-1-pattern)
|
||||
* [File structure](#file-structure)
|
||||
* [Usage](#usage)
|
||||
* [BEM methodology](#bem-methodology)
|
||||
* [Principles](#principles)
|
||||
* [Examples](#examples)
|
||||
|
||||
# 7-1 pattern
|
||||
## File structure
|
||||
SCSS files are structured following the [7-1 pattern](https://sass-guidelin.es/#the-7-1-pattern). \
|
||||
@rveitch made a great summary with the following, which can also be found [here](https://gist.github.com/rveitch/84cea9650092119527bc).
|
||||
|
||||
_Note: Folders with an * are customizations we made to the original 7-1 pattern to best fit our needs_
|
||||
|
||||
```
|
||||
css/common/
|
||||
|
|
||||
|– utils/
|
||||
| |– variables/ # Sass Variables used in Functions, Mixins, Helpers, ...
|
||||
| | |- colors/
|
||||
| | | |- _base.scss
|
||||
| | | |- _base-palette.scss # Base colors used everywhere
|
||||
| | | |- _lifecycle-palette.scss # Colors used for lifecycle of an object (e.g. representing states such as new, frozen, done, ...), based on the base colors
|
||||
| | | |- _semantic-palette.scss # Colors used for semantic meaning (e.g. red for errors, green for success, ...), based on the base colors
|
||||
| | | ...
|
||||
| | |
|
||||
| | |- _depression.scss
|
||||
| | |- _elevation.scss
|
||||
| | |- _size.scss # Base sizes used everywhere (spacings, ...)
|
||||
| | |- _spacing.scss
|
||||
| | |- _typography.scss # Typography sizes, weights, families, ...
|
||||
| | ...
|
||||
| |
|
||||
| |– functions/ # Sass Functions
|
||||
| | |- _color.scss # Color manipulation functions
|
||||
| |
|
||||
| |– mixins/ # Sass Mixins
|
||||
| |– helpers/ # Class & placeholders helpers
|
||||
|
|
||||
|– vendors/ # Third-party libs, should be either:
|
||||
| # - Overload of the lib SCSS variables (BEST way, but possible only if the lib exposes them. e.g. Bulma)
|
||||
| # - Overload of the lib necessary CSS classes only (not great as it duplicates some rules in the browser, which add weight and computation. e.g. dataTables)
|
||||
| # - Duplicate the lib CSS completly to insert SCSS variables (not great as it will be outdated when updating the lib itself. e.g. jQuery UI)
|
||||
| |– _bulma-variables-overload.scss # Bulma CSS framework
|
||||
| |– _jquery-ui.scss # jQuery UI
|
||||
| ... # Etc…
|
||||
|
|
||||
|– base/
|
||||
| |– _reset.scss # Reset/normalize
|
||||
| |– _typography.scss # Typography fonts imports
|
||||
| ... # Etc…
|
||||
|
|
||||
|- _shame.scss # Shame file, should contain all the ugly hacks (https://sass-guidelin.es/#shame-file)
|
||||
`– main.scss # Main Sass file
|
||||
```
|
||||
|
||||
## Usage
|
||||
To avoid common errors, files should be imported in the final file in the following order. Again those are just following the SASS guidelines:
|
||||
- Utils
|
||||
- Variables
|
||||
- Functions
|
||||
- Mixins
|
||||
- Helpers
|
||||
- Vendors
|
||||
- Base
|
||||
- Shame file
|
||||
|
||||
# BEM methodology
|
||||
## Principles
|
||||
[BEM is a methodology](https://getbem.com/) that helps you to create reusable components and code sharing in front‑end development. \
|
||||
The main idea is to use discriminant classes instead of nested basic selectors for 2 main reasons:
|
||||
* It's easier to understand the purpose of a specific class when seeing it in the HTML markup of the SCSS file
|
||||
* It's easier to override a specific class when needed as you don't need to use a selector at least as precise/complex as the one you want to override
|
||||
|
||||
In our implementation, we start with the code of the UI block, followed by the sub-element, then the property or modifier. Separation is made of `--` instead of `__`.
|
||||
|
||||
## Examples
|
||||
### Classes and CSS properties example
|
||||
```scss
|
||||
// SCSS variables:
|
||||
// - For CSS properties: CSS class, followed by CSS property
|
||||
$common-button--padding-y: 6px !default;
|
||||
$common-button--padding-x: 9px !default;
|
||||
$common-button--border: 0 !default;
|
||||
$common-button--border-radius: $common-border-radius-400 !default;
|
||||
$common-button--box-shadow-bottom: 0px 2px 0px !default;
|
||||
$common-button--box-shadow-top: inset 0px 2px 0px !default;
|
||||
|
||||
$common-button--label--margin-left: $common-spacing-200 !default;
|
||||
|
||||
```
|
||||
|
||||
### States example
|
||||
```scss
|
||||
// SCSS variables:
|
||||
// Same rule as before, but with a `--is-` or `--on--` suffix
|
||||
$common-quick-create--input--padding: $common-spacing-0 default;
|
||||
$common-quick-create--input--padding-x--is-opened: $common-spacing-300 !default;
|
||||
$common-quick-create--input--padding-y--is-opened: $common-spacing-300 !default;
|
||||
|
||||
$common-quick-create--input--width: $common-size-0 !default;
|
||||
$common-quick-create--input--width--is-opened: 245px !default;
|
||||
|
||||
$common-quick-create--input--background-color: $common-color-white-100 !default;
|
||||
$common-quick-create--input--background-color--on-hover: $common-color-grey-200 !default;
|
||||
```
|
||||
40
css/common/_shame.scss
Normal file
40
css/common/_shame.scss
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
// ==========================================================================
|
||||
// $Shame
|
||||
// @see http://csswizardry.com/2013/04/shame-css/
|
||||
// Thanks https://github.com/heroheman/shepherd/blob/master/sass/_shame.scss
|
||||
// ==========================================================================
|
||||
//
|
||||
// ==========================================================================
|
||||
// because hacks happen.
|
||||
//
|
||||
// be very specific about what each piece of code is doing, and
|
||||
// how to better fix it later
|
||||
// ==========================================================================
|
||||
//
|
||||
// Try: $ git blame _shame.scss
|
||||
//
|
||||
// Rules:
|
||||
// ---------------
|
||||
// 1. If it’s a hack, it goes in _shame.scss.
|
||||
// 2. Document all hacks fully:
|
||||
// 3. What part of the codebase does it relate to?
|
||||
// 4. Why was this needed?
|
||||
// 5. How does this fix it?
|
||||
// 6. How might you fix it properly, given more time?
|
||||
// 7. Do not blame the developer; if they explained why they had to do it then their reasons are probably (hopefully) valid.
|
||||
// 8. Try and clean _shame.scss up when you have some down time.
|
||||
|
||||
// Example:
|
||||
// ---------------
|
||||
// Nav specificity fix.
|
||||
//
|
||||
// Someone used an ID in the header code (`#header a{}`) which trumps the
|
||||
// nav selectors (`.site-nav a{}`). Use !important to override it until I
|
||||
// have time to refactor the header stuff.
|
||||
//
|
||||
// .site-nav a { color:#BADA55!important; }
|
||||
7
css/common/base/_all.scss
Normal file
7
css/common/base/_all.scss
Normal file
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
@import "base";
|
||||
@import "typography";
|
||||
17
css/common/base/_base.scss
Normal file
17
css/common/base/_base.scss
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-scrollbar--scrollbar-width: 8px !default;
|
||||
$common-scrollbar--scrollbar-height: $common-scrollbar--scrollbar-width !default; /* For horizontal scrollbars */
|
||||
$common-scrollbar--scrollbar-track-background-color: $common-color-transparent !default;
|
||||
$common-scrollbar--scrollbar-track-border-radius: $common-border-radius-500 !default;
|
||||
$common-scrollbar--scrollbar-thumb-background-color: $common-color-grey-300 !default;
|
||||
$common-scrollbar--scrollbar-thumb-border: none !default;
|
||||
$common-scrollbar--scrollbar-thumb-border-radius: $common-border-radius-500 !default;
|
||||
|
||||
$common-svg-illustration--fill: $common-color-primary-500 !default;
|
||||
|
||||
$common-content-block--background-color: $common-color-white-100 !default;
|
||||
$common-content-block--border: 1px solid $common-color-grey-400 !default;
|
||||
150
css/common/base/_typography.scss
Normal file
150
css/common/base/_typography.scss
Normal file
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* This is an overload of the default lib. stylesheet to use local fonts instead of the CDN */
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway Thin'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-100-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 100;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway Thin'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-100-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 200;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway ExtraLight'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-200-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 200;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway ExtraLight'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-200-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway Light'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-300-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway Light'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-300-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-400-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-400-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway Medium'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-500-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 500;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway Medium'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-500-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway SemiBold'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-600-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway SemiBold'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-600-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-700-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-700-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 800;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway ExtraBold'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-800-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 800;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway ExtraBold'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-800-italic.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
src: local('Raleway Black'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-900-normal.woff') format('woff'),
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
font-weight: 900;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
src: local('Raleway Black'),
|
||||
url($approot-relative + 'node_modules/@fontsource/raleway/files/raleway-all-900-italic.woff') format('woff'),
|
||||
}
|
||||
4
css/common/main.scss
Normal file
4
css/common/main.scss
Normal file
@@ -0,0 +1,4 @@
|
||||
@import "utils/all";
|
||||
@import "vendors/all";
|
||||
@import "base/all";
|
||||
@import "shame";
|
||||
9
css/common/utils/_all.scss
Normal file
9
css/common/utils/_all.scss
Normal file
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
@import "variables/all";
|
||||
@import "functions/all";
|
||||
@import "mixins/all";
|
||||
@import "helpers/all";
|
||||
6
css/common/utils/functions/_all.scss
Normal file
6
css/common/utils/functions/_all.scss
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
@import "color";
|
||||
34
css/common/utils/functions/_color.scss
Normal file
34
css/common/utils/functions/_color.scss
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Adjust the lightness of $sColor to the absolute $fTargetLightness value.
|
||||
* It is different than lighten() / darken() that shift the current lightness by X%
|
||||
*
|
||||
* @return Modified color value in HSLA format
|
||||
*/
|
||||
@function common-adjust-lightness($sColor, $fTargetLightness) {
|
||||
$iHue: hue($sColor);
|
||||
$fSaturation: saturation($sColor);
|
||||
$fLightness: lightness($sColor);
|
||||
$fAlpha: alpha($sColor);
|
||||
|
||||
@return hsla($iHue, $fSaturation, $fTargetLightness, $fAlpha);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjust the alpha chanel (opacity) of $sColor to the absolute $fTargetAlpha value.
|
||||
* It is different than opacify() / transparentize() that shift the current alpha value by X%
|
||||
*
|
||||
* @return Modified color value in HSLA format
|
||||
*/
|
||||
@function common-adjust-alpha($sColor, $fTargetAlpha) {
|
||||
$iHue: hue($sColor);
|
||||
$fSaturation: saturation($sColor);
|
||||
$fLightness: lightness($sColor);
|
||||
$fAlpha: alpha($sColor);
|
||||
|
||||
@return hsla($iHue, $fSaturation, $fLightness, $fTargetAlpha);
|
||||
}
|
||||
15
css/common/utils/helpers/_all.scss
Normal file
15
css/common/utils/helpers/_all.scss
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
@import "border-radius";
|
||||
@import "color";
|
||||
@import "class-icon";
|
||||
@import "depression";
|
||||
@import "elevation";
|
||||
@import "font-icon";
|
||||
@import "sticky-header";
|
||||
@import "text-decoration";
|
||||
@import "text-position";
|
||||
@import "typography";
|
||||
26
css/common/utils/helpers/_border-radius.scss
Normal file
26
css/common/utils/helpers/_border-radius.scss
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
%common-border-radius-100{
|
||||
border-radius: $common-border-radius-100;
|
||||
}
|
||||
%common-border-radius-300{
|
||||
border-radius: $common-border-radius-300;
|
||||
}
|
||||
%common-border-radius-400{
|
||||
border-radius: $common-border-radius-400;
|
||||
}
|
||||
%common-border-radius-500{
|
||||
border-radius: $common-border-radius-500;
|
||||
}
|
||||
%common-border-radius-700{
|
||||
border-radius: $common-border-radius-700;
|
||||
}
|
||||
%common-border-radius-900{
|
||||
border-radius: $common-border-radius-900;
|
||||
}
|
||||
%common-border-radius-full{
|
||||
border-radius: $common-border-radius-full;
|
||||
}
|
||||
8
css/common/utils/helpers/_class-icon.scss
Normal file
8
css/common/utils/helpers/_class-icon.scss
Normal file
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-class-icon--small--size: 32px !default;
|
||||
$common-class-icon--medium--size: 48px !default;
|
||||
$common-class-icon--large--size: 64px !default;
|
||||
23
css/common/utils/helpers/_color.scss
Normal file
23
css/common/utils/helpers/_color.scss
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-text-colors: (
|
||||
'primary': $common-color-primary-800,
|
||||
'secondary': $common-color-secondary-800,
|
||||
'neutral': $common-color-secondary-800,
|
||||
'information': $common-color-information-800,
|
||||
'success': $common-color-success-800,
|
||||
'failure': $common-color-danger-800,
|
||||
'warning': $common-color-warning-800,
|
||||
'danger': $common-color-danger-800,
|
||||
'grey' : $common-color-grey-800,
|
||||
'blue-grey': $common-color-blue-grey-800,
|
||||
'blue': $common-color-blue-800,
|
||||
'cyan': $common-color-cyan-800,
|
||||
'green': $common-color-green-800,
|
||||
'orange': $common-color-orange-800,
|
||||
'red': $common-color-red-800,
|
||||
'pink': $common-color-pink-800,
|
||||
) !default;
|
||||
8
css/common/utils/helpers/_depression.scss
Normal file
8
css/common/utils/helpers/_depression.scss
Normal file
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
%common-depression-100{
|
||||
box-shadow: $common-depression-100;
|
||||
}
|
||||
20
css/common/utils/helpers/_elevation.scss
Normal file
20
css/common/utils/helpers/_elevation.scss
Normal file
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
%common-elevation-100{
|
||||
box-shadow: $common-elevation-100;
|
||||
}
|
||||
%common-elevation-200{
|
||||
box-shadow: $common-elevation-200;
|
||||
}
|
||||
%common-elevation-300{
|
||||
box-shadow: $common-elevation-300;
|
||||
}
|
||||
%common-elevation-400{
|
||||
box-shadow: $common-elevation-400;
|
||||
}
|
||||
%common-elevation-500{
|
||||
box-shadow: $common-elevation-500;
|
||||
}
|
||||
43
css/common/utils/helpers/_font-icon.scss
Normal file
43
css/common/utils/helpers/_font-icon.scss
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/******************************************************************************************************************************/
|
||||
/* NOTE: Those helpers allow to easily use an icon from libs. like FontAwesome or FontCombodo within a CSS rule (eg. ::after) */
|
||||
/* To use it, simply "@extend %fa-regular-base" in a rule and put the desired icon "content: '\f054'" */
|
||||
/******************************************************************************************************************************/
|
||||
|
||||
%fa-regular-base{
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 400;
|
||||
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
}
|
||||
%fa-solid-base{
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 900;
|
||||
|
||||
-webkit-font-smoothing: antialiased;
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
}
|
||||
%fc-regular-base{
|
||||
display: inline-block;
|
||||
font-family: CombodoRegular;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
font-weight: normal;
|
||||
text-rendering: auto;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
19
css/common/utils/helpers/_sticky-header.scss
Normal file
19
css/common/utils/helpers/_sticky-header.scss
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/***********************************************************************/
|
||||
/* Sticky headers */
|
||||
/* */
|
||||
/* Used as a trigger to make an element stick to another during scroll */
|
||||
/***********************************************************************/
|
||||
|
||||
/* SCSS variables */
|
||||
$common-sticky-sentinel--left: 0 !default;
|
||||
$common-sticky-sentinel--right: 0 !default;
|
||||
$common-sticky-sentinel--height: 0 !default;
|
||||
$common-sticky-sentinel-top--top: 0 !default;
|
||||
$common-sticky-sentinel-top--height: $common-sticky-sentinel--height !default;
|
||||
$common-sticky-sentinel-bottom--bottom: 0 !default;
|
||||
$common-sticky-sentinel-bottom--height: $common-sticky-sentinel--height !default;
|
||||
23
css/common/utils/helpers/_text-decoration.scss
Normal file
23
css/common/utils/helpers/_text-decoration.scss
Normal file
@@ -0,0 +1,23 @@
|
||||
/*!
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/* SCSS variables */
|
||||
$common-has-description--content: "?" !default;
|
||||
$common-has-description--padding-left: $common-spacing-200 !default;
|
||||
$common-has-description--color: $common-color-grey-600 !default;
|
||||
$common-has-description--font-size: 0.7em !default; /* Font size is em on purpose as we want it to be proportional to its context */
|
||||
|
||||
$common-is-code--background-color: $common-color-white-200 !default;
|
||||
$common-is-code--padding: 1.25rem 1.5rem !default;
|
||||
|
||||
$common-hyperlink-color: $common-color-primary-700 !default;
|
||||
$common-hyperlink-text-decoration: none !default;
|
||||
$common-hyperlink-color--on-hover: $common-color-primary-800 !default;
|
||||
$common-hyperlink-text-decoration--on-hover: $common-hyperlink-text-decoration !default;
|
||||
$common-hyperlink-color--on-active: $common-color-primary-900 !default;
|
||||
$common-hyperlink-text-decoration--on-active: $common-hyperlink-text-decoration !default;
|
||||
|
||||
$common-figure--spacing-x: 2em !default; /* Mind that this matches Bulma rule for figure */
|
||||
$common-figure--spacing-y: 2em !default;
|
||||
34
css/common/utils/helpers/_text-position.scss
Normal file
34
css/common/utils/helpers/_text-position.scss
Normal file
@@ -0,0 +1,34 @@
|
||||
/*!
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/****************************/
|
||||
/* Disposition / alignement */
|
||||
/****************************/
|
||||
.common-is-fullwidth {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
%common-fully-centered-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
%common-vertically-centered-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* Typically to align icons and text as it is a good practice to align them on the baseline and not the "middle" */
|
||||
%common-baseline-centered-content {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
/* Note: This might not be named correctly. The intention is to make an element occupy the full height of its parent and to be centered in it */
|
||||
%common-full-height-content {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
}
|
||||
745
css/common/utils/helpers/_typography.scss
Normal file
745
css/common/utils/helpers/_typography.scss
Normal file
@@ -0,0 +1,745 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
/*
|
||||
* SCSS helpers for font sizes (use in SCSS files)
|
||||
*
|
||||
* Use them to only redefine the font size instead of the global font defnition, this way if the container's font changes
|
||||
* the other properties will be propagated (weight, style)
|
||||
*
|
||||
* Usage: @extend %common-font-size-XXX;
|
||||
*/
|
||||
%common-font-size-50 {
|
||||
font-size: $common-font-size-50;
|
||||
}
|
||||
%common-font-size-100 {
|
||||
font-size: $common-font-size-100;
|
||||
}
|
||||
%common-font-size-150 {
|
||||
font-size: $common-font-size-150;
|
||||
}
|
||||
%common-font-size-200 {
|
||||
font-size: $common-font-size-200;
|
||||
}
|
||||
%common-font-size-250 {
|
||||
font-size: $common-font-size-250;
|
||||
}
|
||||
%common-font-size-300 {
|
||||
font-size: $common-font-size-300;
|
||||
}
|
||||
%common-font-size-350 {
|
||||
font-size: $common-font-size-350;
|
||||
}
|
||||
%common-font-size-400 {
|
||||
font-size: $common-font-size-400;
|
||||
}
|
||||
%common-font-size-450 {
|
||||
font-size: $common-font-size-450;
|
||||
}
|
||||
%common-font-size-500 {
|
||||
font-size: $common-font-size-500;
|
||||
}
|
||||
%common-font-size-550 {
|
||||
font-size: $common-font-size-550;
|
||||
}
|
||||
|
||||
/*
|
||||
* SCSS helpers for font weights (use in SCSS files)
|
||||
*
|
||||
* Use them to only redefine the font weight instead of the global font defnition, this way if the container's font changes
|
||||
* the other properties will be propagated (size, style)
|
||||
*
|
||||
* Usage: @extend %common-font-weight-XXX;
|
||||
*/
|
||||
%common-font-weight-100 {
|
||||
font-weight: $common-font-weight-100;
|
||||
}
|
||||
%common-font-weight-200 {
|
||||
font-weight: $common-font-weight-200;
|
||||
}
|
||||
%common-font-weight-300 {
|
||||
font-weight: $common-font-weight-300;
|
||||
}
|
||||
%common-font-weight-400 {
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
%common-font-weight-500 {
|
||||
font-weight: $common-font-weight-500;
|
||||
}
|
||||
%common-font-weight-600 {
|
||||
font-weight: $common-font-weight-600;
|
||||
}
|
||||
%common-font-weight-700 {
|
||||
font-weight: $common-font-weight-700;
|
||||
}
|
||||
%common-font-weight-800 {
|
||||
font-weight: $common-font-weight-800;
|
||||
}
|
||||
%common-font-weight-900 {
|
||||
font-weight: $common-font-weight-900;
|
||||
}
|
||||
%common-font-weight-950 {
|
||||
font-weight: $common-font-weight-950;
|
||||
}
|
||||
|
||||
/*
|
||||
* SCSS helpers for global font definition (use in SCSS files)
|
||||
*
|
||||
* Use this only when you want to completely redefine the font, otherwise use the other helpers above
|
||||
*
|
||||
* Usage: @extend %common-font-XXX-YYY;
|
||||
*/
|
||||
%common-font-ral-nor-50 {
|
||||
font-size: $common-font-size-50;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-100 {
|
||||
font-size: $common-font-size-100;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-150 {
|
||||
font-size: $common-font-size-150;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-200 {
|
||||
font-size: $common-font-size-200;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-250 {
|
||||
font-size: $common-font-size-250;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-300 {
|
||||
font-size: $common-font-size-300;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-350 {
|
||||
font-size: $common-font-size-350;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-400 {
|
||||
font-size: $common-font-size-400;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-450 {
|
||||
font-size: $common-font-size-450;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-500 {
|
||||
font-size: $common-font-size-500;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-nor-550 {
|
||||
font-size: $common-font-size-550;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-50 {
|
||||
font-size: $common-font-size-50;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-100 {
|
||||
font-size: $common-font-size-100;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-150 {
|
||||
font-size: $common-font-size-150;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-200 {
|
||||
font-size: $common-font-size-200;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-250 {
|
||||
font-size: $common-font-size-250;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-300 {
|
||||
font-size: $common-font-size-300;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-350 {
|
||||
font-size: $common-font-size-350;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-400 {
|
||||
font-size: $common-font-size-400;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-450 {
|
||||
font-size: $common-font-size-450;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-500 {
|
||||
font-size: $common-font-size-500;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-med-550 {
|
||||
font-size: $common-font-size-550;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-500;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-50 {
|
||||
font-size: $common-font-size-50;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-100 {
|
||||
font-size: $common-font-size-100;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-150 {
|
||||
font-size: $common-font-size-150;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-200 {
|
||||
font-size: $common-font-size-200;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-250 {
|
||||
font-size: $common-font-size-250;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-300 {
|
||||
font-size: $common-font-size-300;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-350 {
|
||||
font-size: $common-font-size-350;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-400 {
|
||||
font-size: $common-font-size-400;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-450 {
|
||||
font-size: $common-font-size-450;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-500 {
|
||||
font-size: $common-font-size-500;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-bol-550 {
|
||||
font-size: $common-font-size-550;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-700;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-50 {
|
||||
font-size: $common-font-size-50;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-100 {
|
||||
font-size: $common-font-size-100;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-150 {
|
||||
font-size: $common-font-size-150;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-200 {
|
||||
font-size: $common-font-size-200;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-250 {
|
||||
font-size: $common-font-size-250;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-300 {
|
||||
font-size: $common-font-size-300;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-350 {
|
||||
font-size: $common-font-size-350;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-400 {
|
||||
font-size: $common-font-size-400;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-450 {
|
||||
font-size: $common-font-size-450;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-500 {
|
||||
font-size: $common-font-size-500;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-sembol-550 {
|
||||
font-size: $common-font-size-550;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-600;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-50 {
|
||||
font-size: $common-font-size-50;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-100 {
|
||||
font-size: $common-font-size-100;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-150 {
|
||||
font-size: $common-font-size-150;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-200 {
|
||||
font-size: $common-font-size-200;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-250 {
|
||||
font-size: $common-font-size-250;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-300 {
|
||||
font-size: $common-font-size-300;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-350 {
|
||||
font-size: $common-font-size-350;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-400 {
|
||||
font-size: $common-font-size-400;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-450 {
|
||||
font-size: $common-font-size-450;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
%common-font-ral-ita-500 {
|
||||
font-size: $common-font-size-500;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
|
||||
%common-font-ral-ita-550 {
|
||||
font-size: $common-font-size-550;
|
||||
font-family: $common-font-family-base, $common-font-family-fallbacks;
|
||||
font-weight: $common-font-weight-400;
|
||||
font-style: italic;
|
||||
-webkit-font-feature-settings: "lnum";
|
||||
-moz-font-feature-settings: "lnum";
|
||||
font-feature-settings: "lnum";
|
||||
}
|
||||
|
||||
%common-font-code-50 {
|
||||
font-size: $common-font-size-50;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-100 {
|
||||
font-size: $common-font-size-100;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-150 {
|
||||
font-size: $common-font-size-150;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-200 {
|
||||
font-size: $common-font-size-200;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-250 {
|
||||
font-size: $common-font-size-250;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-300 {
|
||||
font-size: $common-font-size-300;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-350 {
|
||||
font-size: $common-font-size-350;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-400 {
|
||||
font-size: $common-font-size-400;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-450 {
|
||||
font-size: $common-font-size-450;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-500 {
|
||||
font-size: $common-font-size-500;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
%common-font-code-550 {
|
||||
font-size: $common-font-size-550;
|
||||
font-family: $common-font-family-code;
|
||||
font-weight: $common-font-weight-400;
|
||||
}
|
||||
|
||||
/*
|
||||
* CSS classes for font sizes (use in HTML markup, JS scripts)
|
||||
*
|
||||
* Use them to only redefine the font size instead of the global font defnition, this way if the container's font changes
|
||||
* the other properties will be propagated (weight, style)
|
||||
*
|
||||
* Usage: .common-font-size-XXX;
|
||||
*/
|
||||
$common-font-sizes: (
|
||||
'common-font-size-50',
|
||||
'common-font-size-100',
|
||||
'common-font-size-150',
|
||||
'common-font-size-200',
|
||||
'common-font-size-250',
|
||||
'common-font-size-300',
|
||||
'common-font-size-350',
|
||||
'common-font-size-400',
|
||||
'common-font-size-450',
|
||||
'common-font-size-500',
|
||||
'common-font-size-550'
|
||||
);
|
||||
@each $sFontSize in $common-font-sizes {
|
||||
.#{$sFontSize} {
|
||||
@extend %#{$sFontSize};
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* CSS classes for font weights (use in HTML markup, JS scripts)
|
||||
*
|
||||
* Use them to only redefine the font weight instead of the global font defnition, this way if the container's font changes
|
||||
* the other properties will be propagated (size, style)
|
||||
*
|
||||
* Usage: .common-font-weight-XXX;
|
||||
*/
|
||||
$common-font-weights: (
|
||||
'common-font-weight-100',
|
||||
'common-font-weight-200',
|
||||
'common-font-weight-300',
|
||||
'common-font-weight-400',
|
||||
'common-font-weight-500',
|
||||
'common-font-weight-600',
|
||||
'common-font-weight-700',
|
||||
'common-font-weight-800',
|
||||
'common-font-weight-900',
|
||||
'common-font-weight-950'
|
||||
);
|
||||
@each $sFontWeight in $common-font-weights {
|
||||
.#{$sFontWeight} {
|
||||
@extend %#{$sFontWeight};
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* CSS classes for global font wrappers (use in HTML markup, JS scripts)
|
||||
*
|
||||
* Use this only when you want to completely redefine the font, otherwise use the other helpers
|
||||
*
|
||||
* Usage: .common-font-XXX-YYY;
|
||||
*/
|
||||
$common-fonts-all: (
|
||||
'common-font-ral-nor-50',
|
||||
'common-font-ral-nor-100',
|
||||
'common-font-ral-nor-150',
|
||||
'common-font-ral-nor-200',
|
||||
'common-font-ral-nor-250',
|
||||
'common-font-ral-nor-300',
|
||||
'common-font-ral-nor-350',
|
||||
'common-font-ral-nor-400',
|
||||
'common-font-ral-nor-450',
|
||||
'common-font-ral-nor-500',
|
||||
'common-font-ral-nor-550',
|
||||
'common-font-ral-med-50',
|
||||
'common-font-ral-med-100',
|
||||
'common-font-ral-med-150',
|
||||
'common-font-ral-med-200',
|
||||
'common-font-ral-med-250',
|
||||
'common-font-ral-med-300',
|
||||
'common-font-ral-med-350',
|
||||
'common-font-ral-med-400',
|
||||
'common-font-ral-med-450',
|
||||
'common-font-ral-med-500',
|
||||
'common-font-ral-med-550',
|
||||
'common-font-ral-bol-50',
|
||||
'common-font-ral-bol-100',
|
||||
'common-font-ral-bol-150',
|
||||
'common-font-ral-bol-200',
|
||||
'common-font-ral-bol-250',
|
||||
'common-font-ral-bol-300',
|
||||
'common-font-ral-bol-350',
|
||||
'common-font-ral-bol-400',
|
||||
'common-font-ral-bol-450',
|
||||
'common-font-ral-bol-500',
|
||||
'common-font-ral-bol-550',
|
||||
'common-font-ral-sembol-50',
|
||||
'common-font-ral-sembol-100',
|
||||
'common-font-ral-sembol-150',
|
||||
'common-font-ral-sembol-200',
|
||||
'common-font-ral-sembol-250',
|
||||
'common-font-ral-sembol-300',
|
||||
'common-font-ral-sembol-350',
|
||||
'common-font-ral-sembol-400',
|
||||
'common-font-ral-sembol-450',
|
||||
'common-font-ral-sembol-500',
|
||||
'common-font-ral-sembol-550',
|
||||
'common-font-ral-ita-50',
|
||||
'common-font-ral-ita-100',
|
||||
'common-font-ral-ita-150',
|
||||
'common-font-ral-ita-200',
|
||||
'common-font-ral-ita-250',
|
||||
'common-font-ral-ita-300',
|
||||
'common-font-ral-ita-350',
|
||||
'common-font-ral-ita-400',
|
||||
'common-font-ral-ita-450',
|
||||
'common-font-ral-ita-500',
|
||||
'common-font-ral-ita-550',
|
||||
'common-font-code-50',
|
||||
'common-font-code-100',
|
||||
'common-font-code-150',
|
||||
'common-font-code-200',
|
||||
'common-font-code-250',
|
||||
'common-font-code-300',
|
||||
'common-font-code-350',
|
||||
'common-font-code-400',
|
||||
'common-font-code-450',
|
||||
'common-font-code-500',
|
||||
'common-font-code-550'
|
||||
);
|
||||
@each $sFont in $common-fonts-all {
|
||||
.#{$sFont} {
|
||||
@extend %#{$sFont};
|
||||
}
|
||||
}
|
||||
7
css/common/utils/mixins/_all.scss
Normal file
7
css/common/utils/mixins/_all.scss
Normal file
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
@import "highlight";
|
||||
@import "selectable";
|
||||
17
css/common/utils/mixins/_highlight.scss
Normal file
17
css/common/utils/mixins/_highlight.scss
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-vertical-highlight--width: $common-size-100;
|
||||
$common-vertical-highlight--height: 100%;
|
||||
|
||||
@mixin common-vertical-highlight {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
content: "";
|
||||
width: $common-vertical-highlight--width;
|
||||
height: $common-vertical-highlight--height;
|
||||
}
|
||||
40
css/common/utils/mixins/_selectable.scss
Normal file
40
css/common/utils/mixins/_selectable.scss
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SARL
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-selectable--background-color: transparent !default;
|
||||
|
||||
$common-selectable--hover--color: $common-color-grey-100 !default;
|
||||
$common-selectable--hover--background-color: $common-color-grey-600 !default;
|
||||
$common-selectable--hover--background-opacity: 0.6 !default;
|
||||
|
||||
$common-selected--color: $common-color-grey-100 !default;
|
||||
$common-selected--background-color: $common-color-grey-900 !default;
|
||||
$common-selected--background-opacity: 0.5 !default;
|
||||
|
||||
$common-selected--hover--background-color: $common-color-grey-700 !default;
|
||||
$common-selected--hover--background-opacity: 0.5 !default;
|
||||
@mixin common-selectable {
|
||||
content: ' ';
|
||||
@extend %fa-solid-base;
|
||||
background-color: $common-selectable--background-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
@mixin common-selectable-hover {
|
||||
@extend %fa-regular-base;
|
||||
content: '\f058';
|
||||
color: $common-selectable--hover--color;
|
||||
background-color: transparentize($common-selectable--hover--background-color, $common-selectable--hover--background-opacity);
|
||||
}
|
||||
|
||||
@mixin common-selected {
|
||||
@extend %fa-solid-base;
|
||||
content: '\f058';
|
||||
color: $common-selected--color;
|
||||
background-color: transparentize($common-selected--background-color, $common-selected--background-opacity);
|
||||
}
|
||||
|
||||
@mixin common-selected-hover {
|
||||
background-color: transparentize($common-selected--hover--background-color, $common-selected--hover--background-opacity);
|
||||
}
|
||||
15
css/common/utils/variables/_all.scss
Normal file
15
css/common/utils/variables/_all.scss
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
@import "colors/all";
|
||||
@import "border-radius";
|
||||
@import "depression";
|
||||
@import "elevation";
|
||||
@import "path";
|
||||
@import "size";
|
||||
@import "spacing";
|
||||
@import "typography";
|
||||
// Important: Keep this partial last as it includes variables from the previous partials
|
||||
@import "base";
|
||||
9
css/common/utils/variables/_base.scss
Normal file
9
css/common/utils/variables/_base.scss
Normal file
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
// These are the base variables used throughout the backoffice, if you don't know what to use, these are probably good :)
|
||||
|
||||
$common-base-variable--text-color: $common-color-grey-900 !default;
|
||||
$common-base-variable--border-radius: $common-border-radius-300 !default;;
|
||||
12
css/common/utils/variables/_border-radius.scss
Normal file
12
css/common/utils/variables/_border-radius.scss
Normal file
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-border-radius-100: 1px !default;
|
||||
$common-border-radius-300: 3px !default;
|
||||
$common-border-radius-400: 4px !default;
|
||||
$common-border-radius-500: 5px !default;
|
||||
$common-border-radius-700: 10px !default;
|
||||
$common-border-radius-900: 16px !default;
|
||||
$common-border-radius-full: 100% !default;
|
||||
6
css/common/utils/variables/_depression.scss
Normal file
6
css/common/utils/variables/_depression.scss
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-depression-100: inset 0 1px 1px 0 rgba(0, 0, 0, 0.15) !default;
|
||||
10
css/common/utils/variables/_elevation.scss
Normal file
10
css/common/utils/variables/_elevation.scss
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-elevation-100: 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px 3px rgba(0, 0, 0, 0.12) !default;
|
||||
$common-elevation-200: 0 2px 4px rgba(0, 0, 0, 0.12), 0 3px 6px rgba(0, 0, 0, 0.15) !default;
|
||||
$common-elevation-300: 0 3px 6px rgba(0, 0, 0, 0.10), 0 10px 20px rgba(0, 0, 0, 0.15) !default;
|
||||
$common-elevation-400: 0 5px 10px rgba(0, 0, 0, 0.05), 0 15px 25px rgba(0, 0, 0, 0.15) !default;
|
||||
$common-elevation-500: 0 20px 40px rgba(0, 0, 0, 0.20) !default;
|
||||
6
css/common/utils/variables/_path.scss
Normal file
6
css/common/utils/variables/_path.scss
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$approot-relative: '../../../../' !default;
|
||||
24
css/common/utils/variables/_size.scss
Normal file
24
css/common/utils/variables/_size.scss
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2024 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
$common-size-0: 0 !default;
|
||||
$common-size-50: 2px !default;
|
||||
$common-size-100: 4px !default;
|
||||
$common-size-150: 8px !default;
|
||||
$common-size-200: 12px !default;
|
||||
$common-size-250: 16px !default;
|
||||
$common-size-300: 24px !default;
|
||||
$common-size-350: 32px !default;
|
||||
$common-size-400: 48px !default;
|
||||
$common-size-450: 64px !default;
|
||||
$common-size-500: 96px !default;
|
||||
$common-size-550: 128px !default;
|
||||
$common-size-600: 192px !default;
|
||||
$common-size-650: 256px !default;
|
||||
$common-size-700: 384px !default;
|
||||
$common-size-750: 512px !default;
|
||||
$common-size-800: 640px !default;
|
||||
$common-size-850: 768px !default;
|
||||
$common-size-900: 896px !default;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user