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
|
@@ -1,7 +1,31 @@
|
|
|
1
|
+
import { LiveStore, NamedNode, st } from 'rdflib';
|
|
1
2
|
export type RowStatus = 'existing' | 'new' | 'modified' | 'deleted';
|
|
2
3
|
export type MutationOps<T> = {
|
|
3
4
|
create: T[];
|
|
4
5
|
update: T[];
|
|
5
6
|
remove: T[];
|
|
6
7
|
};
|
|
8
|
+
export type RdfStatement = ReturnType<typeof st>;
|
|
9
|
+
export type PrefixCapable = {
|
|
10
|
+
namespaces?: Record<string, string>;
|
|
11
|
+
setPrefixForURI?: (prefix: string, uri: string) => void;
|
|
12
|
+
};
|
|
13
|
+
export type UpdateCallback = (_uri: string, ok: boolean, message?: string) => void;
|
|
14
|
+
export type DavUpdateCallback = (_uri: string, ok: boolean, body?: string) => void;
|
|
15
|
+
export type RdfUpdater = PrefixCapable & {
|
|
16
|
+
update?: (deletions: RdfStatement[], insertions: RdfStatement[], callback: UpdateCallback) => void;
|
|
17
|
+
updateDav?: (doc: NamedNode, deletions: RdfStatement[], insertions: RdfStatement[], callback: DavUpdateCallback) => void;
|
|
18
|
+
serialize?: (docUri: string, statements: RdfStatement[], contentType: string) => string;
|
|
19
|
+
store?: PrefixCapable;
|
|
20
|
+
};
|
|
21
|
+
export type WebOperationResponse = {
|
|
22
|
+
ok?: boolean;
|
|
23
|
+
status?: number;
|
|
24
|
+
responseText?: string;
|
|
25
|
+
};
|
|
26
|
+
export type RdfFetcher = {
|
|
27
|
+
load?: (doc: NamedNode) => Promise<unknown>;
|
|
28
|
+
webOperation?: (...args: unknown[]) => Promise<WebOperationResponse>;
|
|
29
|
+
};
|
|
30
|
+
export type MutationCapableStore = LiveStore;
|
|
7
31
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sections/shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAA;AAEnE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,MAAM,EAAE,CAAC,EAAE,CAAA;CACZ,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sections/shared/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAA;AAEnE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,MAAM,EAAE,CAAC,EAAE,CAAA;IACX,MAAM,EAAE,CAAC,EAAE,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAA;AAEhD,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACxD,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAElF,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG;IACvC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;IAClG,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACxH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,CAAA;IACvF,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;CACrE,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,SAAS,CAAA"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import 'solid-ui/components/actions/button';
|
|
2
|
+
import 'solid-ui/components/forms/combobox';
|
|
1
3
|
import { SkillDetails } from './types';
|
|
2
4
|
import '../../styles/EditDialogs.css';
|
|
3
|
-
import '
|
|
5
|
+
import '../contactInfo/ContactInfoEditDialog.css';
|
|
4
6
|
import { LiveStore, NamedNode } from 'rdflib';
|
|
5
7
|
import { ViewerMode } from '../../types';
|
|
6
8
|
export declare function createSkillsEditDialog(event: Event, store: LiveStore, subject: NamedNode, skills: SkillDetails[], viewerMode: ViewerMode, onSaved?: () => Promise<void> | void): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillsEditDialog.d.ts","sourceRoot":"","sources":["../../../src/sections/skills/SkillsEditDialog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AAChD,OAAO,8BAA8B,CAAA;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"SkillsEditDialog.d.ts","sourceRoot":"","sources":["../../../src/sections/skills/SkillsEditDialog.ts"],"names":[],"mappings":"AAEA,OAAO,oCAAoC,CAAA;AAC3C,OAAO,oCAAoC,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AAChD,OAAO,8BAA8B,CAAA;AACrC,OAAO,0CAA0C,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AA8YxC,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,YAAY,EAAE,EACtB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,iBAkDrC"}
|
|
@@ -6,20 +6,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.createSkillsEditDialog = createSkillsEditDialog;
|
|
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/combobox");
|
|
9
11
|
require("../../styles/EditDialogs.css");
|
|
10
|
-
require("
|
|
12
|
+
require("../contactInfo/ContactInfoEditDialog.css");
|
|
11
13
|
var _rowState = require("../shared/rowState");
|
|
12
14
|
var _textUtils = require("../../textUtils");
|
|
13
15
|
var _mutations = require("./mutations");
|
|
14
16
|
var _profileIcons = require("../../icons-svg/profileIcons");
|
|
15
17
|
var _texts = require("../../texts");
|
|
16
|
-
const ESCO_SKILL_SEARCH_URI = 'https://ec.europa.eu/esco/api/search?language=$(language)&limit=$(limit)&type=skill&text=$(name)';
|
|
18
|
+
const ESCO_SKILL_SEARCH_URI = 'https://ec.europa.eu/esco/api/search?language=$(language)&limit=$(limit)&type=skill&text=$(name)&selectedVersion=v1.2.0';
|
|
17
19
|
const ESCO_SEARCH_LANGUAGE = 'en';
|
|
18
20
|
const ESCO_SEARCH_LIMIT = 8;
|
|
19
21
|
const ESCO_SKILL_BASE_URI = 'http://data.europa.eu/esco/skill/';
|
|
20
22
|
function normalizeSkillPublicId(value) {
|
|
21
23
|
const normalized = sanitizeSkillFieldValue(value);
|
|
22
24
|
if (!normalized) return '';
|
|
25
|
+
if (normalized.startsWith('_:')) return normalized;
|
|
23
26
|
if (normalized.startsWith('skill:')) return normalized;
|
|
24
27
|
if (normalized.startsWith(ESCO_SKILL_BASE_URI)) {
|
|
25
28
|
const suffix = normalized.slice(ESCO_SKILL_BASE_URI.length);
|
|
@@ -48,10 +51,10 @@ async function fetchEscoSkillSuggestions(name) {
|
|
|
48
51
|
const seen = new Set();
|
|
49
52
|
return results.map(result => {
|
|
50
53
|
const label = sanitizeSkillFieldValue(toSkillLabel(result));
|
|
51
|
-
const
|
|
54
|
+
const publicId = normalizeSkillPublicId(typeof result?.uri === 'string' ? result.uri : '');
|
|
52
55
|
return {
|
|
53
56
|
label,
|
|
54
|
-
|
|
57
|
+
publicId
|
|
55
58
|
};
|
|
56
59
|
}).filter(suggestion => {
|
|
57
60
|
if (!suggestion.label) return false;
|
|
@@ -86,74 +89,130 @@ function toFormState(details) {
|
|
|
86
89
|
}]
|
|
87
90
|
};
|
|
88
91
|
}
|
|
89
|
-
function
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
function toSkillComboboxOption(suggestion) {
|
|
93
|
+
return {
|
|
94
|
+
label: suggestion.label,
|
|
95
|
+
value: suggestion.publicId,
|
|
96
|
+
publicId: suggestion.publicId
|
|
97
|
+
};
|
|
93
98
|
}
|
|
94
|
-
function
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
99
|
+
function readSkillComboboxInputValue(event) {
|
|
100
|
+
const customEvent = event;
|
|
101
|
+
if (typeof customEvent.detail?.value === 'string') {
|
|
102
|
+
return customEvent.detail.value;
|
|
103
|
+
}
|
|
104
|
+
const target = event.target;
|
|
105
|
+
return typeof target?.value === 'string' ? target.value : '';
|
|
106
|
+
}
|
|
107
|
+
function readSkillComboboxChange(event) {
|
|
108
|
+
const customEvent = event;
|
|
109
|
+
if (customEvent.detail?.option) {
|
|
110
|
+
return customEvent.detail.option;
|
|
105
111
|
}
|
|
106
112
|
return null;
|
|
107
113
|
}
|
|
108
|
-
function
|
|
109
|
-
return
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
function createSkillSuggestionProvider() {
|
|
115
|
+
return async query => {
|
|
116
|
+
const suggestions = await fetchEscoSkillSuggestions(query);
|
|
117
|
+
return suggestions.map(toSkillComboboxOption);
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function initializeSkillComboboxes(form, rows) {
|
|
121
|
+
const comboboxElements = form.querySelectorAll('solid-ui-combobox[data-skill-row-index]');
|
|
122
|
+
comboboxElements.forEach(comboboxElement => {
|
|
123
|
+
const rowIndex = Number(comboboxElement.dataset.skillRowIndex);
|
|
124
|
+
if (Number.isNaN(rowIndex)) return;
|
|
125
|
+
const row = rows[rowIndex];
|
|
126
|
+
const nextInputValue = row?.name || '';
|
|
127
|
+
const options = row?.publicId && row?.name ? [{
|
|
128
|
+
label: row.name,
|
|
129
|
+
value: row.publicId,
|
|
130
|
+
publicId: row.publicId
|
|
131
|
+
}] : [];
|
|
132
|
+
comboboxElement.suggestionProvider = createSkillSuggestionProvider();
|
|
133
|
+
comboboxElement.options = options;
|
|
134
|
+
comboboxElement.value = row?.publicId || '';
|
|
135
|
+
comboboxElement.inputValue = nextInputValue;
|
|
136
|
+
comboboxElement.label = '';
|
|
137
|
+
comboboxElement.placeholder = 'Skill';
|
|
138
|
+
const comboboxInput = comboboxElement.shadowRoot?.querySelector('input');
|
|
139
|
+
if (comboboxInput) {
|
|
140
|
+
comboboxInput.value = nextInputValue;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
function syncSkillRowsFromComboboxes(form, rows) {
|
|
145
|
+
const comboboxElements = form.querySelectorAll('solid-ui-combobox[data-skill-row-index]');
|
|
146
|
+
comboboxElements.forEach(comboboxElement => {
|
|
147
|
+
const rowIndex = Number(comboboxElement.dataset.skillRowIndex);
|
|
148
|
+
if (Number.isNaN(rowIndex) || !rows[rowIndex]) return;
|
|
149
|
+
const comboboxInput = comboboxElement.shadowRoot?.querySelector('input');
|
|
150
|
+
const nextName = sanitizeSkillFieldValue(comboboxInput?.value || comboboxElement.inputValue || '');
|
|
151
|
+
const nextPublicId = normalizeSkillPublicId(comboboxElement.value || '');
|
|
152
|
+
(0, _rowState.applyRowFieldChange)(rows[rowIndex], 'name', nextName, rowHasContent);
|
|
153
|
+
rows[rowIndex].publicId = nextPublicId;
|
|
113
154
|
});
|
|
114
155
|
}
|
|
156
|
+
function validateSkillsBeforeSave(_rows) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
function hasInvalidSkillSelection(_rows) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
115
162
|
function updateSkillsSubmitEnabled(rows) {
|
|
116
|
-
const submitButton =
|
|
163
|
+
const submitButton = (0, _dialog.getSharedDialogSaveButton)(document);
|
|
117
164
|
if (!submitButton) return;
|
|
118
165
|
submitButton.disabled = hasInvalidSkillSelection(rows);
|
|
119
166
|
}
|
|
120
167
|
function focusSkillField(form, selector) {
|
|
121
168
|
const nextField = form.querySelector(selector);
|
|
122
169
|
if (!nextField || typeof nextField.focus !== 'function') return;
|
|
123
|
-
nextField.scrollIntoView
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
170
|
+
if (typeof nextField.scrollIntoView === 'function') {
|
|
171
|
+
nextField.scrollIntoView({
|
|
172
|
+
block: 'start',
|
|
173
|
+
behavior: 'auto'
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
const comboboxHost = nextField.tagName === 'SOLID-UI-COMBOBOX' ? nextField : null;
|
|
177
|
+
const comboboxInput = comboboxHost ? comboboxHost.shadowRoot?.querySelector('input') : null;
|
|
178
|
+
const focusTarget = comboboxInput || nextField;
|
|
179
|
+
focusTarget.focus();
|
|
180
|
+
if (focusTarget instanceof HTMLInputElement) {
|
|
181
|
+
const caretPosition = 0;
|
|
182
|
+
focusTarget.setSelectionRange(caretPosition, caretPosition);
|
|
183
|
+
focusTarget.scrollLeft = 0;
|
|
184
|
+
requestAnimationFrame(() => {
|
|
185
|
+
focusTarget.scrollLeft = 0;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
if (comboboxHost?._closePopup) {
|
|
189
|
+
requestAnimationFrame(() => {
|
|
190
|
+
comboboxHost._closePopup?.();
|
|
191
|
+
});
|
|
130
192
|
}
|
|
131
193
|
}
|
|
132
194
|
function renderSkillInputRow({
|
|
133
195
|
rows,
|
|
134
196
|
index,
|
|
135
197
|
displayIndex,
|
|
136
|
-
onDelete
|
|
137
|
-
onChange,
|
|
138
|
-
onSkillSearch,
|
|
139
|
-
suggestions
|
|
198
|
+
onDelete
|
|
140
199
|
}) {
|
|
141
|
-
const row = rows[index];
|
|
142
200
|
const label = `Skill ${displayIndex + 1}`;
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
const hasSelectionIssue = Boolean(row && row.status !== 'deleted' && (0, _textUtils.hasNonEmptyText)(row.name) && !(0, _textUtils.hasNonEmptyText)(row.publicId));
|
|
146
|
-
const handleSkillInput = field => e => {
|
|
147
|
-
const target = e.target;
|
|
148
|
-
const nextValue = sanitizeSkillFieldValue(target.value);
|
|
201
|
+
const handleSkillInput = _field => e => {
|
|
202
|
+
const nextValue = sanitizeSkillFieldValue(readSkillComboboxInputValue(e));
|
|
149
203
|
if (rows[index]) {
|
|
150
|
-
(0, _rowState.applyRowFieldChange)(rows[index],
|
|
151
|
-
|
|
152
|
-
rows
|
|
153
|
-
onSkillSearch(index, nextValue);
|
|
154
|
-
onChange();
|
|
204
|
+
(0, _rowState.applyRowFieldChange)(rows[index], 'name', nextValue, rowHasContent);
|
|
205
|
+
rows[index].publicId = '';
|
|
206
|
+
updateSkillsSubmitEnabled(rows);
|
|
155
207
|
}
|
|
156
208
|
};
|
|
209
|
+
const handleSkillChange = e => {
|
|
210
|
+
const selectedOption = readSkillComboboxChange(e);
|
|
211
|
+
if (!rows[index] || !selectedOption?.publicId) return;
|
|
212
|
+
(0, _rowState.applyRowFieldChange)(rows[index], 'name', sanitizeSkillFieldValue(selectedOption.label), rowHasContent);
|
|
213
|
+
rows[index].publicId = selectedOption.publicId;
|
|
214
|
+
updateSkillsSubmitEnabled(rows);
|
|
215
|
+
};
|
|
157
216
|
const handleDelete = event => {
|
|
158
217
|
event.preventDefault();
|
|
159
218
|
onDelete();
|
|
@@ -161,45 +220,31 @@ function renderSkillInputRow({
|
|
|
161
220
|
return (0, _litHtml.html)`
|
|
162
221
|
<div class="profile-edit-dialog__row profile-edit-dialog__row--full profile-edit-dialog__row--skill">
|
|
163
222
|
<label aria-label=${`${label} Name`} class="label profile-edit-dialog__field profile-edit-dialog__field--full">
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
required
|
|
172
|
-
data-contact-field="name"
|
|
173
|
-
data-entry-node=${row?.entryNode || ''}
|
|
174
|
-
data-row-status=${row?.status || 'n/a'}
|
|
175
|
-
placeholder="Skill"
|
|
176
|
-
autocomplete="off"
|
|
177
|
-
list=${datalistId}
|
|
178
|
-
inputmode="text"
|
|
179
|
-
aria-invalid=${hasSelectionIssue ? 'true' : 'false'}
|
|
180
|
-
@input=${handleSkillInput('name')}
|
|
181
|
-
/>
|
|
182
|
-
</div>
|
|
183
|
-
<datalist id=${datalistId}>
|
|
184
|
-
${suggestions.map(suggestion => (0, _litHtml.html)`<option value=${suggestion.label}></option>`)}
|
|
185
|
-
</datalist>
|
|
186
|
-
<small class="profile-edit-dialog__input-help-text">Type to search ESCO and select one suggestion.</small>
|
|
223
|
+
<solid-ui-combobox
|
|
224
|
+
aria-label=${`${label} Name`}
|
|
225
|
+
data-skill-row-index=${String(index)}
|
|
226
|
+
@input=${handleSkillInput('name')}
|
|
227
|
+
@change=${handleSkillChange}
|
|
228
|
+
></solid-ui-combobox>
|
|
229
|
+
<small class="profile-edit-dialog__input-help-text">Type to search ESCO, or enter your own skill.</small>
|
|
187
230
|
</label>
|
|
188
231
|
<div class="profile-edit-dialog__actions profile-edit-dialog__actions--edge">
|
|
189
|
-
<button
|
|
232
|
+
<solid-ui-button
|
|
190
233
|
type="button"
|
|
234
|
+
variant="icon"
|
|
235
|
+
size="md"
|
|
191
236
|
class="profile-edit-dialog__delete-button"
|
|
192
237
|
aria-label=${`Delete skill ${displayIndex + 1}`}
|
|
193
238
|
title=${_texts.deleteEntryButtonTitleText}
|
|
194
239
|
@click=${handleDelete}
|
|
195
240
|
>
|
|
196
|
-
<span class="profile-edit-dialog__delete-icon" aria-hidden="true">${_profileIcons.trashIcon}</span>
|
|
197
|
-
</button>
|
|
241
|
+
<span slot="icon" class="profile-edit-dialog__delete-icon" aria-hidden="true">${_profileIcons.trashIcon}</span>
|
|
242
|
+
</solid-ui-button>
|
|
198
243
|
</div>
|
|
199
244
|
</div>
|
|
200
245
|
`;
|
|
201
246
|
}
|
|
202
|
-
function renderSkillsSection(rows, onAddRow
|
|
247
|
+
function renderSkillsSection(rows, onAddRow) {
|
|
203
248
|
const visibleRows = rows.map((row, index) => ({
|
|
204
249
|
row,
|
|
205
250
|
index
|
|
@@ -216,12 +261,8 @@ function renderSkillsSection(rows, onAddRow, suggestionByIndex, handleSearch) {
|
|
|
216
261
|
rows,
|
|
217
262
|
index,
|
|
218
263
|
displayIndex,
|
|
219
|
-
onChange: onAddRow,
|
|
220
|
-
onSkillSearch: handleSearch,
|
|
221
|
-
suggestions: suggestionByIndex[index] || [],
|
|
222
264
|
onDelete: () => {
|
|
223
265
|
(0, _rowState.deleteRow)(rows, index);
|
|
224
|
-
delete suggestionByIndex[index];
|
|
225
266
|
onAddRow();
|
|
226
267
|
}
|
|
227
268
|
}))}
|
|
@@ -230,39 +271,15 @@ function renderSkillsSection(rows, onAddRow, suggestionByIndex, handleSearch) {
|
|
|
230
271
|
`;
|
|
231
272
|
}
|
|
232
273
|
function renderSkillsEditTemplate(form, formState, viewerMode, options = {}) {
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
const searchTimerByIndex = formStateWithSearch.searchTimerByIndex || (formStateWithSearch.searchTimerByIndex = {});
|
|
237
|
-
const rerender = (nextOptions = {}) => renderSkillsEditTemplate(form, formState, viewerMode, nextOptions);
|
|
238
|
-
const handleSearch = (rowIndex, term) => {
|
|
239
|
-
if (searchTimerByIndex[rowIndex]) {
|
|
240
|
-
clearTimeout(searchTimerByIndex[rowIndex]);
|
|
241
|
-
}
|
|
242
|
-
const normalized = sanitizeSkillFieldValue(term);
|
|
243
|
-
if (normalized.length < 2) {
|
|
244
|
-
suggestionByIndex[rowIndex] = [];
|
|
245
|
-
rerender();
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
const seq = (searchSeqByIndex[rowIndex] || 0) + 1;
|
|
249
|
-
searchSeqByIndex[rowIndex] = seq;
|
|
250
|
-
searchTimerByIndex[rowIndex] = setTimeout(async () => {
|
|
251
|
-
const suggestions = await fetchEscoSkillSuggestions(normalized);
|
|
252
|
-
if (searchSeqByIndex[rowIndex] !== seq) return;
|
|
253
|
-
suggestionByIndex[rowIndex] = suggestions;
|
|
254
|
-
const row = formState.skills[rowIndex];
|
|
255
|
-
if (row) {
|
|
256
|
-
const matchedSuggestion = matchSkillSuggestion(suggestions, row.name);
|
|
257
|
-
row.publicId = matchedSuggestion ? normalizeSkillPublicId(matchedSuggestion.uri) : row.publicId;
|
|
258
|
-
}
|
|
259
|
-
rerender();
|
|
260
|
-
}, 220);
|
|
274
|
+
const rerender = (nextOptions = {}) => {
|
|
275
|
+
syncSkillRowsFromComboboxes(form, formState.skills);
|
|
276
|
+
renderSkillsEditTemplate(form, formState, viewerMode, nextOptions);
|
|
261
277
|
};
|
|
262
278
|
(0, _litHtml.render)((0, _litHtml.html)`
|
|
263
|
-
${renderSkillsSection(formState.skills, rerender
|
|
279
|
+
${renderSkillsSection(formState.skills, rerender)}
|
|
264
280
|
${viewerMode !== 'owner' ? (0, _litHtml.html)`<p class="profile-edit-dialog__login-message">${_texts.ownerLoginRequiredDialogMessageText}</p>` : null}
|
|
265
281
|
`, form);
|
|
282
|
+
initializeSkillComboboxes(form, formState.skills);
|
|
266
283
|
updateSkillsSubmitEnabled(formState.skills);
|
|
267
284
|
if (options.focusSelector) {
|
|
268
285
|
focusSkillField(form, options.focusSelector);
|
|
@@ -274,18 +291,15 @@ function createSkillsEditForm(details, viewerMode) {
|
|
|
274
291
|
const formState = toFormState(details);
|
|
275
292
|
renderSkillsEditTemplate(form, formState, viewerMode);
|
|
276
293
|
const addRow = () => {
|
|
294
|
+
syncSkillRowsFromComboboxes(form, formState.skills);
|
|
277
295
|
formState.skills.unshift({
|
|
278
296
|
name: '',
|
|
279
297
|
publicId: '',
|
|
280
298
|
entryNode: '',
|
|
281
299
|
status: 'new'
|
|
282
300
|
});
|
|
283
|
-
const formStateWithSearch = formState;
|
|
284
|
-
formStateWithSearch.suggestionByIndex = {};
|
|
285
|
-
formStateWithSearch.searchSeqByIndex = {};
|
|
286
|
-
formStateWithSearch.searchTimerByIndex = {};
|
|
287
301
|
renderSkillsEditTemplate(form, formState, viewerMode, {
|
|
288
|
-
focusSelector: '[
|
|
302
|
+
focusSelector: '[data-skill-row-index="0"]'
|
|
289
303
|
});
|
|
290
304
|
};
|
|
291
305
|
return {
|
|
@@ -305,6 +319,12 @@ async function createSkillsEditDialog(event, store, subject, skills, viewerMode,
|
|
|
305
319
|
title: _texts.editSkillsDialogTitleText,
|
|
306
320
|
dom,
|
|
307
321
|
form,
|
|
322
|
+
onOpen: () => focusSkillField(form, '[data-skill-row-index="0"]'),
|
|
323
|
+
shouldCloseWithoutSave: () => {
|
|
324
|
+
syncSkillRowsFromComboboxes(form, formState.skills);
|
|
325
|
+
const ops = (0, _rowState.summarizeRowOps)(formState.skills, rowHasContent);
|
|
326
|
+
return ops.create.length === 0 && ops.update.length === 0 && ops.remove.length === 0;
|
|
327
|
+
},
|
|
308
328
|
headerAction: {
|
|
309
329
|
type: 'button',
|
|
310
330
|
label: '+ Add More',
|
|
@@ -314,12 +334,14 @@ async function createSkillsEditDialog(event, store, subject, skills, viewerMode,
|
|
|
314
334
|
submitLabel: _texts.dialogSubmitLabelText,
|
|
315
335
|
cancelLabel: _texts.dialogCancelLabelText,
|
|
316
336
|
validate: () => {
|
|
337
|
+
syncSkillRowsFromComboboxes(form, formState.skills);
|
|
317
338
|
if (viewerMode !== 'owner') {
|
|
318
339
|
return _texts.ownerLoginRequiredDialogMessageText;
|
|
319
340
|
}
|
|
320
341
|
return validateSkillsBeforeSave(formState.skills);
|
|
321
342
|
},
|
|
322
343
|
onSave: async () => {
|
|
344
|
+
syncSkillRowsFromComboboxes(form, formState.skills);
|
|
323
345
|
const skillOps = (0, _rowState.summarizeRowOps)(formState.skills, rowHasContent);
|
|
324
346
|
const plan = {
|
|
325
347
|
create: skillOps.create,
|
|
@@ -329,8 +351,7 @@ async function createSkillsEditDialog(event, store, subject, skills, viewerMode,
|
|
|
329
351
|
await (0, _mutations.processSkillsMutations)(store, subject, plan);
|
|
330
352
|
},
|
|
331
353
|
formatSaveError: error => {
|
|
332
|
-
|
|
333
|
-
return `${_texts.saveContactUpdatesFailedPrefixText} ${message}`;
|
|
354
|
+
return error instanceof Error ? error.message : _texts.saveSkillsUpdatesFailedMessageText;
|
|
334
355
|
}
|
|
335
356
|
});
|
|
336
357
|
if (!result) return;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/* Skills list */
|
|
2
|
+
.skills__list {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: row;
|
|
5
|
+
flex-wrap: wrap;
|
|
6
|
+
width: 100%;
|
|
7
|
+
max-width: 100%;
|
|
8
|
+
min-width: 0;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
align-items: flex-start;
|
|
11
|
+
list-style: none;
|
|
12
|
+
margin: 0;
|
|
13
|
+
padding: 0;
|
|
14
|
+
gap: var(--spacing-base, 0.5rem);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.skills__item,
|
|
18
|
+
.skills__remove-button svg,
|
|
19
|
+
solid-ui-button.skills__remove-button {
|
|
20
|
+
--skills-remove-icon-size: var(--icon-xxs, 1rem);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Skill chip */
|
|
24
|
+
.skills__item {
|
|
25
|
+
display: inline-flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: flex-start;
|
|
28
|
+
gap: 0.375rem;
|
|
29
|
+
padding: var(--spacing-base, 0.5rem) var(--spacing-2xs, 0.625rem);
|
|
30
|
+
border-radius: var(--border-radius-base, 0.3125rem);
|
|
31
|
+
background: var(--color-surface-chip, var(--gray-100, #F3F4F6));
|
|
32
|
+
width: fit-content;
|
|
33
|
+
max-width: 100%;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.skills__item[data-pending='true'] {
|
|
37
|
+
opacity: 0.55;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.skills__item-label {
|
|
41
|
+
display: inline;
|
|
42
|
+
color: var(--color-text-strong, var(--slate-900, #0F172B));
|
|
43
|
+
font-size: var(--font-size-sm, 0.875rem);
|
|
44
|
+
font-weight: var(--font-weight-md, 500);
|
|
45
|
+
line-height: 1.2;
|
|
46
|
+
overflow-wrap: anywhere;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.skills__item-tail {
|
|
50
|
+
display: inline-flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
white-space: nowrap;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.skills__item-tail::before {
|
|
56
|
+
content: '\00a0';
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.skills__empty-icon {
|
|
60
|
+
display: inline-flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
justify-content: center;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* Remove button */
|
|
66
|
+
solid-ui-button.skills__remove-button {
|
|
67
|
+
width: var(--skills-remove-icon-size);
|
|
68
|
+
height: var(--skills-remove-icon-size);
|
|
69
|
+
line-height: 0;
|
|
70
|
+
vertical-align: text-top;
|
|
71
|
+
--button-height-sm: var(--skills-remove-icon-size);
|
|
72
|
+
--button-padding-sm: 0;
|
|
73
|
+
--button-icon-size-sm: var(--skills-remove-icon-size);
|
|
74
|
+
--button-background: transparent;
|
|
75
|
+
--button-border-width: 0;
|
|
76
|
+
--button-border: transparent;
|
|
77
|
+
--button-text: currentColor;
|
|
78
|
+
--button-hover-background: transparent;
|
|
79
|
+
--button-hover-border: transparent;
|
|
80
|
+
--button-hover-text: currentColor;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
solid-ui-button.skills__remove-button[data-loading='true'] {
|
|
84
|
+
pointer-events: none;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.skills__remove-button svg {
|
|
88
|
+
display: block;
|
|
89
|
+
width: var(--skills-remove-icon-size);
|
|
90
|
+
height: var(--skills-remove-icon-size);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.profile__section[data-profile-section='skills'] .profile-section-inline-error {
|
|
94
|
+
margin-top: var(--spacing-sm, 0.938rem);
|
|
95
|
+
padding: var(--spacing-xs, 0.75rem);
|
|
96
|
+
border: 1px solid var(--dialog-error-border, var(--pink-700, #ff98b3));
|
|
97
|
+
border-radius: var(--border-radius-base, 0.3125rem);
|
|
98
|
+
background: var(--dialog-error-background, var(--pink-500, #ffdde6));
|
|
99
|
+
color: var(--dialog-error-text, var(--red-600, #B00020));
|
|
100
|
+
text-align: left;
|
|
101
|
+
white-space: pre-wrap;
|
|
102
|
+
overflow-wrap: anywhere;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
:is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .skills__list {
|
|
106
|
+
align-items: flex-start;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
:is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .skills__item {
|
|
110
|
+
display: inline-flex;
|
|
111
|
+
align-items: center;
|
|
112
|
+
justify-content: flex-start;
|
|
113
|
+
gap: 0.375rem;
|
|
114
|
+
padding: var(--spacing-base, 0.5rem) var(--spacing-2xs, 0.625rem);
|
|
115
|
+
width: fit-content;
|
|
116
|
+
max-width: 100%;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
:is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .skills__item-label {
|
|
120
|
+
font-size: var(--font-size-sm, 0.875rem);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
:is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .skills__item-tail::before {
|
|
124
|
+
content: none;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@media (max-width: 576px) {
|
|
128
|
+
.skills__list {
|
|
129
|
+
align-items: flex-start;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.skills__item {
|
|
133
|
+
display: inline-flex;
|
|
134
|
+
align-items: center;
|
|
135
|
+
justify-content: flex-start;
|
|
136
|
+
gap: 0.375rem;
|
|
137
|
+
padding: var(--spacing-base, 0.5rem) var(--spacing-2xs, 0.625rem);
|
|
138
|
+
width: fit-content;
|
|
139
|
+
max-width: 100%;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.skills__item-label {
|
|
143
|
+
font-size: var(--font-size-sm, 0.875rem);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.skills__item-tail::before {
|
|
147
|
+
content: none;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
@container profile-pane (max-width: 576px) {
|
|
152
|
+
.skills__list {
|
|
153
|
+
align-items: flex-start;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.skills__item {
|
|
157
|
+
display: inline-flex;
|
|
158
|
+
align-items: center;
|
|
159
|
+
justify-content: flex-start;
|
|
160
|
+
gap: 0.375rem;
|
|
161
|
+
padding: var(--spacing-base, 0.5rem) var(--spacing-2xs, 0.625rem);
|
|
162
|
+
width: fit-content;
|
|
163
|
+
max-width: 100%;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.skills__item-label {
|
|
167
|
+
font-size: var(--font-size-sm, 0.875rem);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.skills__item-tail::before {
|
|
171
|
+
content: none;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import 'solid-ui/components/actions/button';
|
|
1
2
|
import { LiveStore, NamedNode } from 'rdflib';
|
|
2
3
|
import { ViewerMode } from '../../types';
|
|
4
|
+
import './SkillsSection.css';
|
|
3
5
|
import { SkillDetails } from './types';
|
|
4
6
|
export declare function renderSkillsSection(store: LiveStore, subject: NamedNode, skills: SkillDetails[], viewerMode: ViewerMode, onSaved?: () => Promise<void> | void): import("lit-html").TemplateResult<1> | "";
|
|
5
7
|
//# sourceMappingURL=SkillsSection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillsSection.d.ts","sourceRoot":"","sources":["../../../src/sections/skills/SkillsSection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SkillsSection.d.ts","sourceRoot":"","sources":["../../../src/sections/skills/SkillsSection.ts"],"names":[],"mappings":"AACA,OAAO,oCAAoC,CAAA;AAE3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AA6PhD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,YAAY,EAAE,EACtB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,6CAYrC"}
|