profile-pane 3.2.1 → 3.2.2-test.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -0
- package/lib/303.profile-pane.js +1362 -0
- package/lib/303.profile-pane.js.map +1 -0
- package/lib/303.profile-pane.min.js +2 -0
- package/lib/303.profile-pane.min.js.map +1 -0
- package/lib/ProfileView.css +1090 -0
- package/lib/ProfileView.d.ts +2 -1
- package/lib/ProfileView.d.ts.map +1 -1
- package/lib/ProfileView.js +64 -36
- package/lib/buttonsHelper.d.ts +1 -1
- package/lib/buttonsHelper.d.ts.map +1 -1
- package/lib/buttonsHelper.js +2 -1
- package/lib/editProfilePane/EditCVCard.js +1 -1
- package/lib/editProfilePane/EditCommunitiesCard.js +1 -1
- package/lib/editProfilePane/EditFriendsCard.js +1 -1
- package/lib/editProfilePane/EditProfileView.d.ts +1 -1
- package/lib/editProfilePane/EditProfileView.d.ts.map +1 -1
- package/lib/editProfilePane/EditProfileView.js +4 -5
- package/lib/editProfilePane/editProfilePresenter.d.ts.map +1 -1
- package/lib/editProfilePane/editProfilePresenter.js +5 -4
- package/lib/icons-svg/profileIcons.d.ts +1 -1
- package/lib/icons-svg/profileIcons.d.ts.map +1 -1
- package/lib/icons-svg/profileIcons.js +9 -17
- package/lib/index.d.ts +1 -8
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +74 -40
- package/lib/ontology/otherPreferencesForm.ttl +32 -0
- package/lib/ontology/resumeForm.ttl +349 -0
- package/lib/ontology/socialMedia.ttl +433 -0
- package/lib/profile-pane.js +32266 -13247
- package/lib/profile-pane.js.map +1 -1
- package/lib/profile-pane.min.js +2315 -935
- package/lib/profile-pane.min.js.map +1 -1
- package/lib/rdfFormsHelper.d.ts +13 -1
- package/lib/rdfFormsHelper.d.ts.map +1 -1
- package/lib/rdfFormsHelper.js +13 -1
- package/lib/sections/bio/BioEditDialog.d.ts.map +1 -1
- package/lib/sections/bio/BioEditDialog.js +7 -7
- package/lib/sections/bio/BioSection.css +300 -0
- package/lib/sections/bio/BioSection.d.ts +3 -2
- package/lib/sections/bio/BioSection.d.ts.map +1 -1
- package/lib/sections/bio/BioSection.js +26 -19
- package/lib/sections/bio/mutations.d.ts.map +1 -1
- package/lib/sections/bio/mutations.js +14 -3
- package/lib/sections/contactInfo/ContactInfoEditDialog.css +354 -0
- package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts +3 -1
- package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts.map +1 -1
- package/lib/sections/contactInfo/ContactInfoEditDialog.js +183 -98
- package/lib/sections/contactInfo/ContactInfoSection.css +125 -0
- package/lib/sections/contactInfo/ContactInfoSection.d.ts +2 -0
- package/lib/sections/contactInfo/ContactInfoSection.d.ts.map +1 -1
- package/lib/sections/contactInfo/ContactInfoSection.js +64 -41
- package/lib/sections/contactInfo/mutations.d.ts.map +1 -1
- package/lib/sections/contactInfo/mutations.js +51 -16
- package/lib/sections/education/EducationEditDialog.d.ts +3 -1
- package/lib/sections/education/EducationEditDialog.d.ts.map +1 -1
- package/lib/sections/education/EducationEditDialog.js +170 -92
- package/lib/sections/education/EducationSection.css +133 -0
- package/lib/sections/education/EducationSection.d.ts +3 -2
- package/lib/sections/education/EducationSection.d.ts.map +1 -1
- package/lib/sections/education/EducationSection.js +32 -25
- package/lib/sections/education/mutations.d.ts.map +1 -1
- package/lib/sections/education/mutations.js +14 -3
- package/lib/sections/heading/HeadingEditDialog.d.ts +4 -1
- package/lib/sections/heading/HeadingEditDialog.d.ts.map +1 -1
- package/lib/sections/heading/HeadingEditDialog.js +287 -162
- package/lib/sections/heading/HeadingSection.css +862 -0
- package/lib/sections/heading/HeadingSection.d.ts +3 -2
- package/lib/sections/heading/HeadingSection.d.ts.map +1 -1
- package/lib/sections/heading/HeadingSection.js +63 -32
- package/lib/sections/heading/imageHelpers.d.ts +1 -0
- package/lib/sections/heading/imageHelpers.d.ts.map +1 -1
- package/lib/sections/heading/imageHelpers.js +40 -1
- package/lib/sections/heading/mutations.d.ts.map +1 -1
- package/lib/sections/heading/mutations.js +86 -23
- package/lib/sections/heading/selectors.d.ts.map +1 -1
- package/lib/sections/heading/selectors.js +14 -3
- package/lib/sections/heading/types.d.ts +1 -2
- package/lib/sections/heading/types.d.ts.map +1 -1
- package/lib/sections/languages/LanguageEditDialog.d.ts +3 -1
- package/lib/sections/languages/LanguageEditDialog.d.ts.map +1 -1
- package/lib/sections/languages/LanguageEditDialog.js +202 -119
- package/lib/sections/languages/LanguageSection.css +53 -0
- package/lib/sections/languages/LanguageSection.d.ts +2 -0
- package/lib/sections/languages/LanguageSection.d.ts.map +1 -1
- package/lib/sections/languages/LanguageSection.js +42 -31
- package/lib/sections/languages/mutations.d.ts.map +1 -1
- package/lib/sections/languages/mutations.js +60 -161
- package/lib/sections/languages/selectors.d.ts.map +1 -1
- package/lib/sections/languages/selectors.js +1 -2
- package/lib/sections/projects/ProjectEditDialog.d.ts +2 -1
- package/lib/sections/projects/ProjectEditDialog.d.ts.map +1 -1
- package/lib/sections/projects/ProjectEditDialog.js +13 -24
- package/lib/sections/projects/ProjectSection.css +368 -0
- package/lib/sections/projects/ProjectSection.d.ts +2 -1
- package/lib/sections/projects/ProjectSection.d.ts.map +1 -1
- package/lib/sections/projects/ProjectSection.js +116 -34
- package/lib/sections/projects/mutations.d.ts.map +1 -1
- package/lib/sections/projects/mutations.js +109 -132
- package/lib/sections/projects/selectors.d.ts.map +1 -1
- package/lib/sections/projects/selectors.js +4 -45
- package/lib/{QRCodeCard.d.ts → sections/qrcode/QRCodeCard.d.ts} +2 -1
- package/lib/sections/qrcode/QRCodeCard.d.ts.map +1 -0
- package/lib/{QRCodeCard.js → sections/qrcode/QRCodeCard.js} +59 -11
- package/lib/sections/qrcode/QRCodeSection.css +108 -0
- package/lib/sections/qrcode/QRCodeSection.d.ts +4 -0
- package/lib/sections/qrcode/QRCodeSection.d.ts.map +1 -0
- package/lib/sections/qrcode/QRCodeSection.js +17 -0
- package/lib/sections/resume/ResumeEditDialog.d.ts +10 -1
- package/lib/sections/resume/ResumeEditDialog.d.ts.map +1 -1
- package/lib/sections/resume/ResumeEditDialog.js +531 -149
- package/lib/sections/resume/ResumeSection.css +350 -0
- package/lib/sections/resume/ResumeSection.d.ts +3 -2
- package/lib/sections/resume/ResumeSection.d.ts.map +1 -1
- package/lib/sections/resume/ResumeSection.js +78 -49
- package/lib/sections/resume/mutations.d.ts.map +1 -1
- package/lib/sections/resume/mutations.js +17 -3
- package/lib/sections/resume/selectors.d.ts.map +1 -1
- package/lib/sections/resume/selectors.js +1 -0
- package/lib/sections/resume/types.d.ts +1 -0
- package/lib/sections/resume/types.d.ts.map +1 -1
- package/lib/sections/shared/collapsibleSection.d.ts.map +1 -1
- package/lib/sections/shared/collapsibleSection.js +1 -0
- package/lib/sections/shared/phoneCountries.d.ts +1 -1
- package/lib/sections/shared/phoneCountries.d.ts.map +1 -1
- package/lib/sections/shared/phoneCountries.js +2 -2
- package/lib/sections/shared/projectCommunityNodes.d.ts +6 -0
- package/lib/sections/shared/projectCommunityNodes.d.ts.map +1 -0
- package/lib/sections/shared/projectCommunityNodes.js +56 -0
- package/lib/sections/shared/rdfMutationHelpers.d.ts +35 -2
- package/lib/sections/shared/rdfMutationHelpers.d.ts.map +1 -1
- package/lib/sections/shared/rdfMutationHelpers.js +290 -14
- package/lib/sections/shared/sectionCardHelpers.d.ts.map +1 -1
- package/lib/sections/shared/sectionCardHelpers.js +80 -11
- package/lib/sections/shared/types.d.ts +24 -0
- package/lib/sections/shared/types.d.ts.map +1 -1
- package/lib/sections/skills/SkillsEditDialog.d.ts +3 -1
- package/lib/sections/skills/SkillsEditDialog.d.ts.map +1 -1
- package/lib/sections/skills/SkillsEditDialog.js +136 -115
- package/lib/sections/skills/SkillsSection.css +173 -0
- package/lib/sections/skills/SkillsSection.d.ts +2 -0
- package/lib/sections/skills/SkillsSection.d.ts.map +1 -1
- package/lib/sections/skills/SkillsSection.js +107 -47
- package/lib/sections/skills/mutations.d.ts.map +1 -1
- package/lib/sections/skills/mutations.js +25 -21
- package/lib/sections/skills/selectors.d.ts.map +1 -1
- package/lib/sections/skills/selectors.js +5 -3
- package/lib/sections/social/SocialEditDialog.d.ts +3 -1
- package/lib/sections/social/SocialEditDialog.d.ts.map +1 -1
- package/lib/sections/social/SocialEditDialog.js +170 -62
- package/lib/sections/social/SocialSection.css +194 -0
- package/lib/sections/social/SocialSection.d.ts +4 -3
- package/lib/sections/social/SocialSection.d.ts.map +1 -1
- package/lib/sections/social/SocialSection.js +59 -43
- package/lib/sections/social/mutations.d.ts.map +1 -1
- package/lib/sections/social/mutations.js +23 -132
- package/lib/specialButtons/AddMeToYourFriends.css +54 -0
- package/lib/specialButtons/addContact/AddMeToYourContacts.css +1118 -0
- package/lib/specialButtons/addContact/ContactCreationDialog.d.ts +10 -0
- package/lib/specialButtons/addContact/ContactCreationDialog.d.ts.map +1 -0
- package/lib/specialButtons/addContact/ContactCreationDialog.js +1123 -0
- package/lib/specialButtons/addContact/addMeToYourContacts.d.ts +16 -0
- package/lib/specialButtons/addContact/addMeToYourContacts.d.ts.map +1 -0
- package/lib/specialButtons/addContact/addMeToYourContacts.js +136 -0
- package/lib/specialButtons/addContact/contactsErrors.d.ts +8 -0
- package/lib/specialButtons/addContact/contactsErrors.d.ts.map +1 -0
- package/lib/specialButtons/addContact/contactsErrors.js +106 -0
- package/lib/specialButtons/addContact/contactsTypes.d.ts +43 -0
- package/lib/specialButtons/addContact/contactsTypes.d.ts.map +1 -0
- package/lib/specialButtons/addContact/contactsTypes.js +5 -0
- package/lib/specialButtons/addContact/helpers.d.ts +7 -0
- package/lib/specialButtons/addContact/helpers.d.ts.map +1 -0
- package/lib/specialButtons/addContact/helpers.js +103 -0
- package/lib/specialButtons/addContact/mutations.d.ts +16 -0
- package/lib/specialButtons/addContact/mutations.d.ts.map +1 -0
- package/lib/specialButtons/addContact/mutations.js +300 -0
- package/lib/specialButtons/addContact/selectors.d.ts +10 -0
- package/lib/specialButtons/addContact/selectors.d.ts.map +1 -0
- package/lib/specialButtons/addContact/selectors.js +163 -0
- package/lib/{addMeToYourFriends.d.ts → specialButtons/addMeToYourFriends.d.ts} +6 -4
- package/lib/specialButtons/addMeToYourFriends.d.ts.map +1 -0
- package/lib/{addMeToYourFriends.js → specialButtons/addMeToYourFriends.js} +46 -11
- package/lib/styles/CollapsibleSection.css +519 -0
- package/lib/styles/EditDialogs.css +506 -686
- package/lib/styles/EditDialogs.responsive.css +989 -0
- package/lib/texts/buttonTexts.d.ts +9 -0
- package/lib/texts/buttonTexts.d.ts.map +1 -0
- package/lib/texts/buttonTexts.js +14 -0
- package/lib/texts/dialogTexts.d.ts +14 -0
- package/lib/texts/dialogTexts.d.ts.map +1 -0
- package/lib/texts/dialogTexts.js +19 -0
- package/lib/texts/messageTexts.d.ts +42 -0
- package/lib/texts/messageTexts.d.ts.map +1 -0
- package/lib/texts/messageTexts.js +47 -0
- package/lib/texts/profileTexts.d.ts +14 -0
- package/lib/texts/profileTexts.d.ts.map +1 -0
- package/lib/texts/profileTexts.js +19 -0
- package/lib/texts/qrCodeTexts.d.ts +2 -0
- package/lib/texts/qrCodeTexts.d.ts.map +1 -0
- package/lib/texts/qrCodeTexts.js +7 -0
- package/lib/texts.d.ts +5 -60
- package/lib/texts.d.ts.map +1 -1
- package/lib/texts.js +55 -70
- package/lib/ui/dialog.css +233 -0
- package/lib/ui/dialog.d.ts +15 -1
- package/lib/ui/dialog.d.ts.map +1 -1
- package/lib/ui/dialog.js +245 -45
- package/lib/ui/dialog.responsive.css +195 -0
- package/lib/ui/errors.d.ts.map +1 -1
- package/lib/ui/errors.js +2 -1
- package/lib/ui/spinner.d.ts +3 -0
- package/lib/ui/spinner.d.ts.map +1 -0
- package/lib/ui/spinner.js +13 -0
- package/lib/utils/debug.d.ts +5 -0
- package/lib/utils/debug.d.ts.map +1 -0
- package/lib/utils/debug.js +23 -0
- package/lib/utils/errorDisplay.d.ts +2 -0
- package/lib/utils/errorDisplay.d.ts.map +1 -0
- package/lib/utils/errorDisplay.js +19 -0
- package/package.json +32 -25
- package/lib/ChatWithMe.d.ts +0 -7
- package/lib/ChatWithMe.d.ts.map +0 -1
- package/lib/ChatWithMe.js +0 -90
- package/lib/QRCodeCard.d.ts.map +0 -1
- package/lib/addMeToYourFriends.d.ts.map +0 -1
- package/lib/sections/heading/camera.d.ts +0 -19
- package/lib/sections/heading/camera.d.ts.map +0 -1
- package/lib/sections/heading/camera.js +0 -199
- package/lib/styles/BioSection.css +0 -77
- package/lib/styles/CVCard.css +0 -142
- package/lib/styles/ChatWithMe.css +0 -6
- package/lib/styles/ContactInfoEditDialog.css +0 -153
- package/lib/styles/EducationCard.css +0 -103
- package/lib/styles/HeadingSection.css +0 -309
- package/lib/styles/ProfileCard.css +0 -66
- package/lib/styles/ProfileView.css +0 -65
- package/lib/styles/ProjectsCard.css +0 -206
- package/lib/styles/QRCodeCard.css +0 -43
- package/lib/styles/SocialCard.css +0 -89
- package/lib/styles/dialog.css +0 -209
- package/lib/styles/utilities.css +0 -740
|
@@ -6,16 +6,99 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.createEducationEditDialog = createEducationEditDialog;
|
|
7
7
|
var _dialog = require("../../ui/dialog");
|
|
8
8
|
var _litHtml = require("lit-html");
|
|
9
|
+
require("solid-ui/components/actions/button");
|
|
10
|
+
require("solid-ui/components/forms/select");
|
|
9
11
|
require("../../styles/EditDialogs.css");
|
|
10
|
-
require("
|
|
12
|
+
require("../contactInfo/ContactInfoEditDialog.css");
|
|
11
13
|
var _mutations = require("./mutations");
|
|
12
14
|
var _profileIcons = require("../../icons-svg/profileIcons");
|
|
13
15
|
var _rowState = require("../shared/rowState");
|
|
14
16
|
var _textUtils = require("../../textUtils");
|
|
15
17
|
var _texts = require("../../texts");
|
|
18
|
+
const EDUCATION_MONTH_OPTIONS = [{
|
|
19
|
+
value: '01',
|
|
20
|
+
label: 'January'
|
|
21
|
+
}, {
|
|
22
|
+
value: '02',
|
|
23
|
+
label: 'February'
|
|
24
|
+
}, {
|
|
25
|
+
value: '03',
|
|
26
|
+
label: 'March'
|
|
27
|
+
}, {
|
|
28
|
+
value: '04',
|
|
29
|
+
label: 'April'
|
|
30
|
+
}, {
|
|
31
|
+
value: '05',
|
|
32
|
+
label: 'May'
|
|
33
|
+
}, {
|
|
34
|
+
value: '06',
|
|
35
|
+
label: 'June'
|
|
36
|
+
}, {
|
|
37
|
+
value: '07',
|
|
38
|
+
label: 'July'
|
|
39
|
+
}, {
|
|
40
|
+
value: '08',
|
|
41
|
+
label: 'August'
|
|
42
|
+
}, {
|
|
43
|
+
value: '09',
|
|
44
|
+
label: 'September'
|
|
45
|
+
}, {
|
|
46
|
+
value: '10',
|
|
47
|
+
label: 'October'
|
|
48
|
+
}, {
|
|
49
|
+
value: '11',
|
|
50
|
+
label: 'November'
|
|
51
|
+
}, {
|
|
52
|
+
value: '12',
|
|
53
|
+
label: 'December'
|
|
54
|
+
}];
|
|
16
55
|
function sanitizeEducationFieldValue(value) {
|
|
17
56
|
return (0, _textUtils.sanitizeTextValue)(value);
|
|
18
57
|
}
|
|
58
|
+
function readEducationSelectChange(event) {
|
|
59
|
+
const customEvent = event;
|
|
60
|
+
if (typeof customEvent.detail?.value === 'string') {
|
|
61
|
+
return customEvent.detail.value;
|
|
62
|
+
}
|
|
63
|
+
const target = event.target;
|
|
64
|
+
return typeof target?.value === 'string' ? target.value : '';
|
|
65
|
+
}
|
|
66
|
+
function getEducationYearOptions(selectedYears) {
|
|
67
|
+
const currentYear = new Date().getFullYear();
|
|
68
|
+
const baseYearOptions = Array.from({
|
|
69
|
+
length: 120
|
|
70
|
+
}, (_, i) => String(currentYear - i));
|
|
71
|
+
const yearOptions = Array.from(new Set([...baseYearOptions, ...selectedYears].filter(Boolean))).sort((a, b) => Number(b) - Number(a));
|
|
72
|
+
return yearOptions.map(year => ({
|
|
73
|
+
label: year,
|
|
74
|
+
value: year
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
function getEducationDateSelectOptions(kind, selectedYears) {
|
|
78
|
+
if (kind === 'start-month' || kind === 'end-month') {
|
|
79
|
+
return EDUCATION_MONTH_OPTIONS;
|
|
80
|
+
}
|
|
81
|
+
return getEducationYearOptions(selectedYears);
|
|
82
|
+
}
|
|
83
|
+
function getEducationDateSelectValue(kind, row) {
|
|
84
|
+
const startDateParts = parseYearMonthFromDateText((0, _textUtils.toText)(row?.startDate));
|
|
85
|
+
const endDateParts = parseYearMonthFromDateText((0, _textUtils.toText)(row?.endDate));
|
|
86
|
+
switch (kind) {
|
|
87
|
+
case 'start-month':
|
|
88
|
+
return startDateParts.month;
|
|
89
|
+
case 'start-year':
|
|
90
|
+
return startDateParts.year;
|
|
91
|
+
case 'end-month':
|
|
92
|
+
return endDateParts.month;
|
|
93
|
+
case 'end-year':
|
|
94
|
+
return endDateParts.year;
|
|
95
|
+
default:
|
|
96
|
+
return '';
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function getEducationDateSelectLabel(kind) {
|
|
100
|
+
return kind === 'start-month' || kind === 'end-month' ? 'Select Month' : 'Select Year';
|
|
101
|
+
}
|
|
19
102
|
function parseYearMonthFromDateText(dateText) {
|
|
20
103
|
const normalized = (dateText || '').trim();
|
|
21
104
|
if (!normalized) return {
|
|
@@ -72,6 +155,22 @@ function validateEducationBeforeSave(rows) {
|
|
|
72
155
|
ok: true
|
|
73
156
|
};
|
|
74
157
|
}
|
|
158
|
+
function initializeEducationDateSelects(form, educationData) {
|
|
159
|
+
const selectElements = form.querySelectorAll('solid-ui-select[data-education-date-kind]');
|
|
160
|
+
selectElements.forEach(selectElement => {
|
|
161
|
+
const kind = selectElement.dataset.educationDateKind;
|
|
162
|
+
const rowIndex = Number(selectElement.dataset.educationRowIndex);
|
|
163
|
+
if (!kind || Number.isNaN(rowIndex)) return;
|
|
164
|
+
const educationRow = educationData[rowIndex];
|
|
165
|
+
if (!educationRow) return;
|
|
166
|
+
const startDateParts = parseYearMonthFromDateText((0, _textUtils.toText)(educationRow.startDate));
|
|
167
|
+
const endDateParts = parseYearMonthFromDateText((0, _textUtils.toText)(educationRow.endDate));
|
|
168
|
+
const selectedYears = [startDateParts.year, endDateParts.year];
|
|
169
|
+
selectElement.options = getEducationDateSelectOptions(kind, selectedYears);
|
|
170
|
+
selectElement.value = getEducationDateSelectValue(kind, educationRow);
|
|
171
|
+
selectElement.label = getEducationDateSelectLabel(kind);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
75
174
|
function renderEducationInputRow({
|
|
76
175
|
educationData,
|
|
77
176
|
index,
|
|
@@ -109,59 +208,7 @@ function renderEducationInputRow({
|
|
|
109
208
|
const endMonthValue = endDateParts.month;
|
|
110
209
|
const endYearParsedText = endDateParts.year;
|
|
111
210
|
const currentYear = new Date().getFullYear();
|
|
112
|
-
const
|
|
113
|
-
length: 120
|
|
114
|
-
}, (_, i) => String(currentYear - i));
|
|
115
|
-
const yearOptions = Array.from(new Set([...baseYearOptions, startYearText, endYearParsedText].filter(Boolean))).sort((a, b) => Number(b) - Number(a));
|
|
116
|
-
const monthOptions = [{
|
|
117
|
-
value: '01',
|
|
118
|
-
label: 'January'
|
|
119
|
-
}, {
|
|
120
|
-
value: '02',
|
|
121
|
-
label: 'February'
|
|
122
|
-
}, {
|
|
123
|
-
value: '03',
|
|
124
|
-
label: 'March'
|
|
125
|
-
}, {
|
|
126
|
-
value: '04',
|
|
127
|
-
label: 'April'
|
|
128
|
-
}, {
|
|
129
|
-
value: '05',
|
|
130
|
-
label: 'May'
|
|
131
|
-
}, {
|
|
132
|
-
value: '06',
|
|
133
|
-
label: 'June'
|
|
134
|
-
}, {
|
|
135
|
-
value: '07',
|
|
136
|
-
label: 'July'
|
|
137
|
-
}, {
|
|
138
|
-
value: '08',
|
|
139
|
-
label: 'August'
|
|
140
|
-
}, {
|
|
141
|
-
value: '09',
|
|
142
|
-
label: 'September'
|
|
143
|
-
}, {
|
|
144
|
-
value: '10',
|
|
145
|
-
label: 'October'
|
|
146
|
-
}, {
|
|
147
|
-
value: '11',
|
|
148
|
-
label: 'November'
|
|
149
|
-
}, {
|
|
150
|
-
value: '12',
|
|
151
|
-
label: 'December'
|
|
152
|
-
}];
|
|
153
|
-
const renderMonthOptions = selectedMonth => (0, _litHtml.html)`
|
|
154
|
-
<option value="" ?selected=${!selectedMonth}>Select month</option>
|
|
155
|
-
${monthOptions.map(month => (0, _litHtml.html)`
|
|
156
|
-
<option value=${month.value} ?selected=${month.value === selectedMonth}>${month.label}</option>
|
|
157
|
-
`)}
|
|
158
|
-
`;
|
|
159
|
-
const renderYearOptions = selectedYear => (0, _litHtml.html)`
|
|
160
|
-
<option value="" ?selected=${!selectedYear}>Select year</option>
|
|
161
|
-
${yearOptions.map(year => (0, _litHtml.html)`
|
|
162
|
-
<option value=${year} ?selected=${year === selectedYear}>${year}</option>
|
|
163
|
-
`)}
|
|
164
|
-
`;
|
|
211
|
+
const selectedYears = [startYearText, endYearParsedText];
|
|
165
212
|
const handleEducationInput = field => e => {
|
|
166
213
|
const target = e.target;
|
|
167
214
|
const nextValue = sanitizeEducationFieldValue(target.value);
|
|
@@ -179,8 +226,7 @@ function renderEducationInputRow({
|
|
|
179
226
|
return `${year}-${month}-01`;
|
|
180
227
|
};
|
|
181
228
|
const handleStartMonthChange = event => {
|
|
182
|
-
const
|
|
183
|
-
const month = target.value;
|
|
229
|
+
const month = readEducationSelectChange(event);
|
|
184
230
|
const year = parseYearMonthFromDateText((0, _textUtils.toText)(educationData[index]?.startDate)).year || String(currentYear);
|
|
185
231
|
const nextStartDate = buildDateLiteral(month, year);
|
|
186
232
|
if (educationData[index]) {
|
|
@@ -189,8 +235,7 @@ function renderEducationInputRow({
|
|
|
189
235
|
}
|
|
190
236
|
};
|
|
191
237
|
const handleStartYearChange = event => {
|
|
192
|
-
const
|
|
193
|
-
const year = target.value;
|
|
238
|
+
const year = readEducationSelectChange(event);
|
|
194
239
|
const month = parseYearMonthFromDateText((0, _textUtils.toText)(educationData[index]?.startDate)).month || '01';
|
|
195
240
|
const nextStartDate = buildDateLiteral(month, year);
|
|
196
241
|
if (educationData[index]) {
|
|
@@ -199,8 +244,7 @@ function renderEducationInputRow({
|
|
|
199
244
|
}
|
|
200
245
|
};
|
|
201
246
|
const handleEndMonthChange = event => {
|
|
202
|
-
const
|
|
203
|
-
const month = target.value;
|
|
247
|
+
const month = readEducationSelectChange(event);
|
|
204
248
|
const year = parseYearMonthFromDateText((0, _textUtils.toText)(educationData[index]?.endDate)).year || String(currentYear);
|
|
205
249
|
const nextEndDate = buildDateLiteral(month, year);
|
|
206
250
|
if (educationData[index]) {
|
|
@@ -209,8 +253,7 @@ function renderEducationInputRow({
|
|
|
209
253
|
}
|
|
210
254
|
};
|
|
211
255
|
const handleEndYearChange = event => {
|
|
212
|
-
const
|
|
213
|
-
const year = target.value;
|
|
256
|
+
const year = readEducationSelectChange(event);
|
|
214
257
|
const month = parseYearMonthFromDateText((0, _textUtils.toText)(educationData[index]?.endDate)).month || '01';
|
|
215
258
|
const nextEndDate = buildDateLiteral(month, year);
|
|
216
259
|
if (educationData[index]) {
|
|
@@ -230,15 +273,17 @@ function renderEducationInputRow({
|
|
|
230
273
|
<div class="profile-edit-dialog__row" role="group" aria-labelledby=${educationHeadingId}>
|
|
231
274
|
<h4 id=${educationHeadingId} class="profile-edit-dialog__entry-heading">${label}</h4>
|
|
232
275
|
<div class="profile-edit-dialog__actions profile-edit-dialog__actions--edge">
|
|
233
|
-
<button
|
|
276
|
+
<solid-ui-button
|
|
234
277
|
type="button"
|
|
278
|
+
variant="icon"
|
|
279
|
+
size="md"
|
|
235
280
|
class="profile-edit-dialog__delete-button"
|
|
236
281
|
aria-label=${`Delete education ${displayIndex + 1}`}
|
|
237
282
|
title=${_texts.deleteEntryButtonTitleText}
|
|
238
283
|
@click=${handleDelete}
|
|
239
284
|
>
|
|
240
|
-
<span class="profile-edit-dialog__delete-icon" aria-hidden="true">${_profileIcons.trashIcon}</span>
|
|
241
|
-
</button>
|
|
285
|
+
<span slot="icon" class="profile-edit-dialog__delete-icon" aria-hidden="true">${_profileIcons.trashIcon}</span>
|
|
286
|
+
</solid-ui-button>
|
|
242
287
|
</div>
|
|
243
288
|
</div>
|
|
244
289
|
<label aria-label=${`${label} School/College`} class="label profile-edit-dialog__field">
|
|
@@ -279,27 +324,59 @@ function renderEducationInputRow({
|
|
|
279
324
|
<div class="profile-edit-dialog__row">
|
|
280
325
|
<label aria-label=${startMonthLabel} class="label profile-edit-dialog__field-type">
|
|
281
326
|
Start Month
|
|
282
|
-
<select
|
|
283
|
-
|
|
284
|
-
|
|
327
|
+
<solid-ui-select
|
|
328
|
+
class="profile-edit-dialog__education-date-select"
|
|
329
|
+
name=${startMonthInputName}
|
|
330
|
+
id=${startMonthSelectId}
|
|
331
|
+
data-education-date-kind="start-month"
|
|
332
|
+
data-education-row-index=${String(index)}
|
|
333
|
+
.options=${getEducationDateSelectOptions('start-month', selectedYears)}
|
|
334
|
+
.value=${startMonthValue}
|
|
335
|
+
.label=${getEducationDateSelectLabel('start-month')}
|
|
336
|
+
@change=${handleStartMonthChange}
|
|
337
|
+
></solid-ui-select>
|
|
285
338
|
</label>
|
|
286
339
|
<label aria-label=${startYearLabel} class="label profile-edit-dialog__field-type">
|
|
287
340
|
Start Year
|
|
288
|
-
<select
|
|
289
|
-
|
|
290
|
-
|
|
341
|
+
<solid-ui-select
|
|
342
|
+
class="profile-edit-dialog__education-date-select"
|
|
343
|
+
name=${startYearInputName}
|
|
344
|
+
id=${startYearSelectId}
|
|
345
|
+
data-education-date-kind="start-year"
|
|
346
|
+
data-education-row-index=${String(index)}
|
|
347
|
+
.options=${getEducationDateSelectOptions('start-year', selectedYears)}
|
|
348
|
+
.value=${startYearText}
|
|
349
|
+
.label=${getEducationDateSelectLabel('start-year')}
|
|
350
|
+
@change=${handleStartYearChange}
|
|
351
|
+
></solid-ui-select>
|
|
291
352
|
</label>
|
|
292
353
|
<label aria-label=${endMonthLabel} class="label profile-edit-dialog__field-type">
|
|
293
354
|
End Month
|
|
294
|
-
<select
|
|
295
|
-
|
|
296
|
-
|
|
355
|
+
<solid-ui-select
|
|
356
|
+
class="profile-edit-dialog__education-date-select"
|
|
357
|
+
name=${endMonthInputName}
|
|
358
|
+
id=${endMonthSelectId}
|
|
359
|
+
data-education-date-kind="end-month"
|
|
360
|
+
data-education-row-index=${String(index)}
|
|
361
|
+
.options=${getEducationDateSelectOptions('end-month', selectedYears)}
|
|
362
|
+
.value=${endMonthValue}
|
|
363
|
+
.label=${getEducationDateSelectLabel('end-month')}
|
|
364
|
+
@change=${handleEndMonthChange}
|
|
365
|
+
></solid-ui-select>
|
|
297
366
|
</label>
|
|
298
367
|
<label aria-label=${endYearLabel} class="label profile-edit-dialog__field-type">
|
|
299
368
|
End Year
|
|
300
|
-
<select
|
|
301
|
-
|
|
302
|
-
|
|
369
|
+
<solid-ui-select
|
|
370
|
+
class="profile-edit-dialog__education-date-select"
|
|
371
|
+
name=${endYearInputName}
|
|
372
|
+
id=${endYearSelectId}
|
|
373
|
+
data-education-date-kind="end-year"
|
|
374
|
+
data-education-row-index=${String(index)}
|
|
375
|
+
.options=${getEducationDateSelectOptions('end-year', selectedYears)}
|
|
376
|
+
.value=${endYearParsedText}
|
|
377
|
+
.label=${getEducationDateSelectLabel('end-year')}
|
|
378
|
+
@change=${handleEndYearChange}
|
|
379
|
+
></solid-ui-select>
|
|
303
380
|
</label>
|
|
304
381
|
</div>
|
|
305
382
|
<label aria-label=${`${label} Description`} class="label profile-edit-dialog__field profile-edit-dialog__field--full profile-edit-dialog__field--stack">
|
|
@@ -347,24 +424,26 @@ function renderEducationSection(educationData, onAddRow) {
|
|
|
347
424
|
return (0, _litHtml.html)`
|
|
348
425
|
<section
|
|
349
426
|
aria-labelledby="education-heading"
|
|
350
|
-
class="
|
|
427
|
+
class="profile-edit-dialog__section--education section-bg">
|
|
351
428
|
<header class="profile__section-header">
|
|
352
429
|
<h3 id="education-heading" class="profile-edit-dialog__section-heading">
|
|
353
|
-
<span class="
|
|
430
|
+
<span class="profile-edit-dialog__section-title-icon" aria-hidden="true">✉</span>
|
|
354
431
|
Education
|
|
355
432
|
</h3>
|
|
356
|
-
<button
|
|
433
|
+
<solid-ui-button
|
|
357
434
|
type="button"
|
|
358
|
-
|
|
435
|
+
variant="secondary"
|
|
436
|
+
size="sm"
|
|
437
|
+
class="profile__action-button profile-action-text profile-edit-dialog__add-button"
|
|
359
438
|
data-dialog-add-more="true"
|
|
360
439
|
aria-label="Add another education entry"
|
|
361
440
|
@click=${createNewRow}
|
|
362
441
|
>
|
|
363
|
-
<span class="profile__add-more-content
|
|
364
|
-
<span class="profile__add-more-icon
|
|
365
|
-
Add More
|
|
442
|
+
<span class="profile__add-more-content">
|
|
443
|
+
<span class="profile__add-more-icon" aria-hidden="true">${_profileIcons.addIcon}</span>
|
|
444
|
+
<span>Add More</span>
|
|
366
445
|
</span>
|
|
367
|
-
</button>
|
|
446
|
+
</solid-ui-button>
|
|
368
447
|
</header>
|
|
369
448
|
<fieldset>
|
|
370
449
|
<legend class="sr-only">Education entries</legend>
|
|
@@ -389,6 +468,7 @@ function renderEducationEditTemplate(form, formState, rerender, viewerMode) {
|
|
|
389
468
|
${renderEducationSection(formState.educationData, rerender)}
|
|
390
469
|
${viewerMode !== 'owner' ? (0, _litHtml.html)`<p class="profile-edit-dialog__login-message">${_texts.ownerLoginRequiredDialogMessageText}</p>` : null}
|
|
391
470
|
`, form);
|
|
471
|
+
initializeEducationDateSelects(form, formState.educationData);
|
|
392
472
|
}
|
|
393
473
|
function createEducationEditForm(educationData, viewerMode) {
|
|
394
474
|
const form = document.createElement('form');
|
|
@@ -417,6 +497,10 @@ async function createEducationEditDialog(event, store, subject, educationData, v
|
|
|
417
497
|
title: _texts.editEducationDialogTitleText,
|
|
418
498
|
dom,
|
|
419
499
|
form,
|
|
500
|
+
shouldCloseWithoutSave: () => {
|
|
501
|
+
const plan = (0, _rowState.summarizeRowOps)(formState.educationData, rowHasContent);
|
|
502
|
+
return plan.create.length === 0 && plan.update.length === 0 && plan.remove.length === 0;
|
|
503
|
+
},
|
|
420
504
|
headerAction: {
|
|
421
505
|
type: 'button',
|
|
422
506
|
label: 'Add More',
|
|
@@ -429,11 +513,6 @@ async function createEducationEditDialog(event, store, subject, educationData, v
|
|
|
429
513
|
if (viewerMode !== 'owner') {
|
|
430
514
|
return _texts.ownerLoginRequiredDialogMessageText;
|
|
431
515
|
}
|
|
432
|
-
const plan = (0, _rowState.summarizeRowOps)(formState.educationData, rowHasContent);
|
|
433
|
-
const hasChanges = plan.create.length > 0 || plan.update.length > 0 || plan.remove.length > 0;
|
|
434
|
-
if (!hasChanges) {
|
|
435
|
-
return 'No education changes detected.';
|
|
436
|
-
}
|
|
437
516
|
const validation = validateEducationBeforeSave(formState.educationData);
|
|
438
517
|
if (!validation.ok) {
|
|
439
518
|
return validation.message || 'Please complete the required education fields.';
|
|
@@ -446,8 +525,7 @@ async function createEducationEditDialog(event, store, subject, educationData, v
|
|
|
446
525
|
rerender();
|
|
447
526
|
},
|
|
448
527
|
formatSaveError: error => {
|
|
449
|
-
|
|
450
|
-
return `${_texts.saveEducationUpdatesFailedPrefixText} ${message}`;
|
|
528
|
+
return error instanceof Error ? error.message : _texts.saveEducationUpdatesFailedMessageText;
|
|
451
529
|
}
|
|
452
530
|
});
|
|
453
531
|
if (!result) return;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/* Education section styles. */
|
|
2
|
+
|
|
3
|
+
.education-card {
|
|
4
|
+
width: 100%;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.education-card__item {
|
|
8
|
+
margin: var(--spacing-xs) 0;
|
|
9
|
+
font-size: var(--font-size-base);
|
|
10
|
+
line-height: var(--line-height-base);
|
|
11
|
+
display: flex;
|
|
12
|
+
flex-direction: column;
|
|
13
|
+
gap: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.education-card__item + .education-card__item {
|
|
17
|
+
margin-top: var(--spacing-sm);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.education-card__header {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: row;
|
|
23
|
+
justify-content: space-between;
|
|
24
|
+
align-items: baseline;
|
|
25
|
+
gap: var(--spacing-sm);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.education-card__header h4,
|
|
29
|
+
.education-card__header time,
|
|
30
|
+
.education-card__header p {
|
|
31
|
+
margin: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.education-card__period {
|
|
35
|
+
margin: 0;
|
|
36
|
+
font-size: var(--font-size-sm);
|
|
37
|
+
line-height: var(--line-height-tight);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.education-card__organization {
|
|
41
|
+
font-weight: 600;
|
|
42
|
+
color: var(--color-primary);
|
|
43
|
+
margin: 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.education-card__description-wrap {
|
|
47
|
+
margin: 0;
|
|
48
|
+
position: relative;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.education-card__description-text {
|
|
52
|
+
margin: 0;
|
|
53
|
+
display: -webkit-box;
|
|
54
|
+
-webkit-box-orient: vertical;
|
|
55
|
+
-webkit-line-clamp: 2;
|
|
56
|
+
line-clamp: 2;
|
|
57
|
+
line-height: var(--line-height-base);
|
|
58
|
+
overflow: hidden;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.education-card__description-text--overflowing {
|
|
62
|
+
padding-right: 4.5em;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.education-card__description-text--expanded {
|
|
66
|
+
display: block;
|
|
67
|
+
-webkit-line-clamp: unset;
|
|
68
|
+
line-clamp: unset;
|
|
69
|
+
padding-right: 0;
|
|
70
|
+
overflow: visible;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.education-card__description-toggle {
|
|
74
|
+
margin: 0;
|
|
75
|
+
padding: 0;
|
|
76
|
+
border: 0;
|
|
77
|
+
background: none;
|
|
78
|
+
color: var(--color-primary);
|
|
79
|
+
cursor: var(--profile-interactive-cursor, pointer);
|
|
80
|
+
font: inherit;
|
|
81
|
+
font-size: var(--font-size-sm);
|
|
82
|
+
line-height: var(--line-height-tight);
|
|
83
|
+
position: absolute;
|
|
84
|
+
right: 0;
|
|
85
|
+
bottom: 0;
|
|
86
|
+
background-color: var(--color-card-bg);
|
|
87
|
+
padding-left: 0.25em;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
solid-ui-button.education-card__description-toggle {
|
|
91
|
+
--button-height-sm: 0;
|
|
92
|
+
--button-padding-sm: 0 0 0 0.25em;
|
|
93
|
+
--button-font-size-sm: var(--font-size-sm);
|
|
94
|
+
--button-line-height: var(--line-height-tight);
|
|
95
|
+
--button-background: none;
|
|
96
|
+
--button-border-width: 0;
|
|
97
|
+
--button-border: transparent;
|
|
98
|
+
--button-text: var(--color-primary);
|
|
99
|
+
--button-hover-background: none;
|
|
100
|
+
--button-hover-border: transparent;
|
|
101
|
+
--button-hover-text: var(--color-primary);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
solid-ui-button.education-card__description-toggle::part(button) {
|
|
105
|
+
position: absolute;
|
|
106
|
+
right: 0;
|
|
107
|
+
bottom: 0;
|
|
108
|
+
background-color: var(--color-card-bg);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.education-card__description-text--expanded + .education-card__description-toggle {
|
|
112
|
+
position: static;
|
|
113
|
+
display: inline;
|
|
114
|
+
padding-left: 0;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.education-card__description-text--expanded + solid-ui-button.education-card__description-toggle::part(button) {
|
|
118
|
+
position: static;
|
|
119
|
+
display: inline;
|
|
120
|
+
padding-left: 0;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
:is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .education-card__header {
|
|
124
|
+
flex-direction: column;
|
|
125
|
+
align-items: flex-start;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@media (max-width: 576px) {
|
|
129
|
+
.education-card__header {
|
|
130
|
+
flex-direction: column;
|
|
131
|
+
align-items: flex-start;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import 'solid-ui/components/actions/button';
|
|
1
2
|
import { EducationDetails } from './types';
|
|
2
3
|
import { ViewerMode } from '../../types';
|
|
3
|
-
import '
|
|
4
|
+
import './EducationSection.css';
|
|
4
5
|
import { LiveStore, NamedNode } from 'rdflib';
|
|
5
|
-
export declare const EducationCard: (educationData: EducationDetails[]
|
|
6
|
+
export declare const EducationCard: (educationData: EducationDetails[]) => import("lit-html").TemplateResult<1>;
|
|
6
7
|
export declare function renderEducationSection(store: LiveStore, subject: NamedNode, educationData: EducationDetails[], viewerMode: ViewerMode, onSaved?: () => Promise<void> | void): import("lit-html").TemplateResult<1> | "";
|
|
7
8
|
//# sourceMappingURL=EducationSection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EducationSection.d.ts","sourceRoot":"","sources":["../../../src/sections/education/EducationSection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"EducationSection.d.ts","sourceRoot":"","sources":["../../../src/sections/education/EducationSection.ts"],"names":[],"mappings":"AACA,OAAO,oCAAoC,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,wBAAwB,CAAA;AAE/B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AA4E7C,eAAO,MAAM,aAAa,GACxB,eAAe,gBAAgB,EAAE,yCAclC,CAAA;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,aAAa,EAAE,gBAAgB,EAAE,EACjC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,6CAqDrC"}
|
|
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.EducationCard = void 0;
|
|
7
7
|
exports.renderEducationSection = renderEducationSection;
|
|
8
8
|
var _litHtml = require("lit-html");
|
|
9
|
-
require("
|
|
9
|
+
require("solid-ui/components/actions/button");
|
|
10
|
+
require("./EducationSection.css");
|
|
10
11
|
var _texts = require("../../texts");
|
|
11
12
|
var _EducationEditDialog = require("./EducationEditDialog");
|
|
12
13
|
var _sectionCardHelpers = require("../shared/sectionCardHelpers");
|
|
@@ -30,29 +31,32 @@ function renderEducationEntry(educationEntry, index) {
|
|
|
30
31
|
const educationDescriptionId = `education-description-${index}`;
|
|
31
32
|
const ariaDescribedBy = educationEntry.description ? `${educationPeriodId} ${educationOrgId} ${educationDescriptionId}` : `${educationPeriodId} ${educationOrgId}`;
|
|
32
33
|
return (0, _litHtml.html)`
|
|
33
|
-
<li class="education" role="listitem" aria-labelledby=${schoolId} aria-describedby=${ariaDescribedBy}>
|
|
34
|
-
<div class="
|
|
34
|
+
<li class="education-card__item" role="listitem" aria-labelledby=${schoolId} aria-describedby=${ariaDescribedBy}>
|
|
35
|
+
<div class="education-card__header">
|
|
35
36
|
<h4 id=${schoolId}>${educationEntry.school}</h4>
|
|
36
|
-
<p id=${educationPeriodId} class="
|
|
37
|
+
<p id=${educationPeriodId} class="education-card__period">
|
|
37
38
|
${educationEntry.endDate ? (0, _litHtml.html)`<time datetime=${(0, _sectionCardHelpers.toMonthDateTime)(educationEntry.endDate)}>${formatEducationMonthYearFull(educationEntry.endDate)}</time>` : (0, _litHtml.html)`<span>End date unknown</span>`}
|
|
38
39
|
</p>
|
|
39
40
|
</div>
|
|
40
|
-
<p class="
|
|
41
|
+
<p class="education-card__organization" id=${educationOrgId}>
|
|
41
42
|
<strong>${educationEntry.degree}</strong>${educationEntry.location ? (0, _litHtml.html)` | ${educationEntry.location}` : ''}
|
|
42
43
|
</p>
|
|
43
44
|
${educationEntry.description ? (0, _litHtml.html)`
|
|
44
|
-
<div class="
|
|
45
|
-
<p class="
|
|
46
|
-
<button
|
|
45
|
+
<div class="education-card__description-wrap">
|
|
46
|
+
<p class="education-card__description-text" id=${educationDescriptionId}>${educationEntry.description}</p>
|
|
47
|
+
<solid-ui-button
|
|
47
48
|
type="button"
|
|
48
|
-
|
|
49
|
+
variant="secondary"
|
|
50
|
+
size="sm"
|
|
51
|
+
label="...more"
|
|
52
|
+
class="education-card__description-toggle"
|
|
49
53
|
aria-controls=${educationDescriptionId}
|
|
50
54
|
aria-expanded="false"
|
|
51
55
|
hidden
|
|
52
56
|
@click=${_sectionCardHelpers.toggleDescription}
|
|
53
57
|
>
|
|
54
58
|
...more
|
|
55
|
-
</button>
|
|
59
|
+
</solid-ui-button>
|
|
56
60
|
</div>
|
|
57
61
|
` : ''}
|
|
58
62
|
</li>
|
|
@@ -62,13 +66,12 @@ function renderEducation(educationData) {
|
|
|
62
66
|
if (!educationData || !educationData.length) return (0, _litHtml.html)``;
|
|
63
67
|
return (0, _litHtml.html)`${educationData.map((educationEntry, index) => renderEducationEntry(educationEntry, index))}`;
|
|
64
68
|
}
|
|
65
|
-
const EducationCard =
|
|
66
|
-
void viewerMode;
|
|
69
|
+
const EducationCard = educationData => {
|
|
67
70
|
const hasEducation = Array.isArray(educationData) && educationData.length > 0;
|
|
68
71
|
if (!hasEducation) return (0, _litHtml.html)``;
|
|
69
72
|
return (0, _litHtml.html)`
|
|
70
|
-
<article class="
|
|
71
|
-
<section class="
|
|
73
|
+
<article class="education-card" aria-label="Education" data-testid="education">
|
|
74
|
+
<section class="education-card__section">
|
|
72
75
|
<ul role="list" aria-label="Education in chronological order">
|
|
73
76
|
${renderEducation(educationData)}
|
|
74
77
|
</ul>
|
|
@@ -79,7 +82,7 @@ const EducationCard = (educationData, viewerMode) => {
|
|
|
79
82
|
exports.EducationCard = EducationCard;
|
|
80
83
|
function renderEducationSection(store, subject, educationData, viewerMode, onSaved) {
|
|
81
84
|
(0, _sectionCardHelpers.scheduleDescriptionOverflowCheck)();
|
|
82
|
-
const educationCard = EducationCard(educationData
|
|
85
|
+
const educationCard = EducationCard(educationData);
|
|
83
86
|
const educationDetails = educationData || [];
|
|
84
87
|
const hasEducation = educationDetails && educationDetails.length > 0;
|
|
85
88
|
const showSection = true;
|
|
@@ -87,38 +90,42 @@ function renderEducationSection(store, subject, educationData, viewerMode, onSav
|
|
|
87
90
|
return showSection ? (0, _litHtml.html)`
|
|
88
91
|
<section
|
|
89
92
|
aria-labelledby="education-heading"
|
|
90
|
-
class="profile-section-collapsible section-
|
|
93
|
+
class="profile__section profile-section-collapsible profile-section-collapsible--inline-mobile-actions"
|
|
91
94
|
role="region"
|
|
92
95
|
tabindex="-1"
|
|
93
96
|
data-expanded="false"
|
|
94
97
|
>
|
|
95
98
|
<header class="profile__section-header profile-section-collapsible__header">
|
|
96
99
|
<h2 id="education-heading" tabindex="-1">${_texts.educationHeadingText}</h2>
|
|
97
|
-
<div class="profile-section-collapsible__actions
|
|
100
|
+
<div class="profile-section-collapsible__actions">
|
|
98
101
|
${isOwner ? (0, _litHtml.html)`
|
|
99
|
-
<button
|
|
102
|
+
<solid-ui-button
|
|
100
103
|
type="button"
|
|
101
|
-
|
|
104
|
+
variant="secondary"
|
|
105
|
+
size="sm"
|
|
106
|
+
class="profile__action-button profile-action-text profile-section-collapsible__edit-button"
|
|
102
107
|
aria-label="Edit education details"
|
|
103
108
|
@click=${event => (0, _EducationEditDialog.createEducationEditDialog)(event, store, subject, educationDetails, viewerMode, onSaved)}
|
|
104
109
|
>
|
|
105
110
|
<span class="profile-section-collapsible__edit-label">${_profileIcons.editIcon} Edit</span>
|
|
106
111
|
<span class="profile-section-collapsible__edit-icon" aria-hidden="true">${_profileIcons.editIcon}</span>
|
|
107
|
-
</button>
|
|
112
|
+
</solid-ui-button>
|
|
108
113
|
` : (0, _litHtml.html)``}
|
|
109
|
-
<button
|
|
114
|
+
<solid-ui-button
|
|
110
115
|
type="button"
|
|
111
|
-
|
|
116
|
+
variant="icon"
|
|
117
|
+
size="sm"
|
|
118
|
+
class="profile-section-collapsible__toggle-button"
|
|
112
119
|
aria-label="Toggle education section"
|
|
113
120
|
aria-controls="education-panel"
|
|
114
121
|
aria-expanded="false"
|
|
115
122
|
@click=${_collapsibleSection.toggleCollapsibleSection}
|
|
116
123
|
>
|
|
117
|
-
<span class="profile-section-collapsible__chevron" aria-hidden="true"
|
|
118
|
-
</button>
|
|
124
|
+
<span slot="icon" class="profile-section-collapsible__chevron" aria-hidden="true">${_profileIcons.chevronDownIcon}</span>
|
|
125
|
+
</solid-ui-button>
|
|
119
126
|
</div>
|
|
120
127
|
</header>
|
|
121
|
-
<div id="education-panel" class="profile-section-collapsible__content"
|
|
128
|
+
<div id="education-panel" class="profile-section-collapsible__content">
|
|
122
129
|
${hasEducation ? educationCard : (0, _litHtml.html)`<p>No education details added yet.</p>`}
|
|
123
130
|
</div>
|
|
124
131
|
</section>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../../src/sections/education/mutations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAqB,MAAM,QAAQ,CAAA;AAEhE,OAAO,EAAE,qBAAqB,EAAgB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../../src/sections/education/mutations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAqB,MAAM,QAAQ,CAAA;AAEhE,OAAO,EAAE,qBAAqB,EAAgB,MAAM,SAAS,CAAA;AAyE7D,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,qBAAqB,iBAQxH"}
|