@imposium-hub/components 1.56.0 → 1.57.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.
Files changed (54) hide show
  1. package/dist/cjs/components/font-picker/FontPicker.d.ts +44 -0
  2. package/dist/cjs/components/font-picker/FontPicker.js +182 -0
  3. package/dist/cjs/components/font-picker/FontPicker.js.map +1 -0
  4. package/dist/cjs/components/font-picker/font-manager/FontManager.d.ts +26 -0
  5. package/dist/cjs/components/font-picker/font-manager/FontManager.js +209 -0
  6. package/dist/cjs/components/font-picker/font-manager/FontManager.js.map +1 -0
  7. package/dist/cjs/components/font-picker/font-manager/constants.d.ts +4 -0
  8. package/dist/cjs/components/font-picker/font-manager/constants.js +8 -0
  9. package/dist/cjs/components/font-picker/font-manager/constants.js.map +1 -0
  10. package/dist/cjs/components/font-picker/font-manager/fontStyle.d.ts +1 -0
  11. package/dist/cjs/components/font-picker/font-manager/fontStyle.js +61 -0
  12. package/dist/cjs/components/font-picker/font-manager/fontStyle.js.map +1 -0
  13. package/dist/cjs/components/font-picker/font-manager/types.d.ts +25 -0
  14. package/dist/cjs/components/font-picker/font-manager/types.js +12 -0
  15. package/dist/cjs/components/font-picker/font-manager/types.js.map +1 -0
  16. package/dist/cjs/components/font-picker/font-manager/utils.d.ts +3 -0
  17. package/dist/cjs/components/font-picker/font-manager/utils.js +42 -0
  18. package/dist/cjs/components/font-picker/font-manager/utils.js.map +1 -0
  19. package/dist/cjs/index.d.ts +2 -1
  20. package/dist/cjs/index.js +3 -1
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/esm/components/font-picker/FontPicker.d.ts +44 -0
  23. package/dist/esm/components/font-picker/FontPicker.js +134 -0
  24. package/dist/esm/components/font-picker/FontPicker.js.map +1 -0
  25. package/dist/esm/components/font-picker/font-manager/FontManager.d.ts +26 -0
  26. package/dist/esm/components/font-picker/font-manager/FontManager.js +105 -0
  27. package/dist/esm/components/font-picker/font-manager/FontManager.js.map +1 -0
  28. package/dist/esm/components/font-picker/font-manager/constants.d.ts +4 -0
  29. package/dist/esm/components/font-picker/font-manager/constants.js +5 -0
  30. package/dist/esm/components/font-picker/font-manager/constants.js.map +1 -0
  31. package/dist/esm/components/font-picker/font-manager/fontStyle.d.ts +1 -0
  32. package/dist/esm/components/font-picker/font-manager/fontStyle.js +65 -0
  33. package/dist/esm/components/font-picker/font-manager/fontStyle.js.map +1 -0
  34. package/dist/esm/components/font-picker/font-manager/types.d.ts +25 -0
  35. package/dist/esm/components/font-picker/font-manager/types.js +9 -0
  36. package/dist/esm/components/font-picker/font-manager/types.js.map +1 -0
  37. package/dist/esm/components/font-picker/font-manager/utils.d.ts +3 -0
  38. package/dist/esm/components/font-picker/font-manager/utils.js +36 -0
  39. package/dist/esm/components/font-picker/font-manager/utils.js.map +1 -0
  40. package/dist/esm/index.d.ts +2 -1
  41. package/dist/esm/index.js +2 -1
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/styles.css +107 -0
  44. package/dist/styles.less +132 -0
  45. package/less/components/font-picker.less +131 -0
  46. package/less/entry.less +2 -1
  47. package/package.json +1 -1
  48. package/src/components/font-picker/FontPicker.tsx +222 -0
  49. package/src/components/font-picker/font-manager/FontManager.ts +138 -0
  50. package/src/components/font-picker/font-manager/constants.ts +7 -0
  51. package/src/components/font-picker/font-manager/fontStyle.ts +78 -0
  52. package/src/components/font-picker/font-manager/types.ts +83 -0
  53. package/src/components/font-picker/font-manager/utils.ts +36 -0
  54. package/src/index.ts +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/components/font-picker/font-manager/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAU,EAAE;IACpD,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAmB,EAAE;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;QACzC,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,kBAAkB,GAAG,GAAS,EAAE;YACpC,wBAAwB;YACxB,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;gBAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE;oBACxB,WAAW;oBACX,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;iBACnE;qBAAM;oBACH,aAAa;oBACb,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;iBACjC;aACJ;QACL,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,GAAW,EAAY,EAAE;IAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC;IACV,GAAG;QACC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,KAAK,EAAE;YACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;KACJ,QAAQ,KAAK,EAAE;IAChB,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
@@ -94,4 +94,5 @@ import { getFirstStoryInOrg, string2HexCode, toFixed, padStart, parameterizeServ
94
94
  import PublishStatusIndicator from './components/publish-wizard/publish/PublishStatusIndicator';
95
95
  import { getMediaPreviewStyle } from './utils/assets';
96
96
  import AdvancedNumberField from './components/advanced-number-field/AdvancedNumberField';
97
- export { AppWrapper, AuthGate, ImposiumHeader, ImposiumDropdown, Button, ButtonGroupField, ButtonMenu, ButtonMenuItem, Card, CheckboxField, ControlledList, DataTable, DataTablePaginator, FieldWrapper, HRule, ListField, Modal, AdvancedNumberField, NumberField, SelectField, ColorField, Tabs, ITab, Tag, TextField, TextAreaField, ToastService, SliderField, Section, DeterminateLoader, Spinner, NoAccess, ServiceIcon, LogViewer, StoryPreviewer, ShortcutMenu, Portal, AssetDetails, ImagePlayer, VideoPlayer, AudioPlayer, VideoPreview, ImagePreview, ImageSequencePlayer, AssetsTypeIcon, AssetsTableDateCell, AssetsTableDropzone, AssetsTablePreviewCell, AssetsTableSelectFilter, AssetsTableSelectCell, AssetsTableTypeFilter, AssetsTableTypeCell, AssetsTableStatusCell, AssetsTableNameFilter, AssetsTableNameCell, AssetsTableDurationCell, AssetsTableTagsCell, AssetsTableTagsFilter, AssetsTableTagsPivot, AssetsTableComplexTagCell, AssetField, AssetsUploadMenu, FontAssetPreview, DroppableAssetRenderer, PreviewNotAvailable, IStaticComposition, auth, login, clearCachedAuth, access, cacheAccessData, clearCachedAccessList, storyAdded, storyNameMutated, orgNameMutated, storyDeleted, updateFilters, getAssets, deleteAssets, addAssetTag, deleteAssetTag, updateAssetName, updateAssetData, doAssetTableHydration, toggleAutoTag, uploadAssets, selectAsset, deselectAsset, resetSelection, assetFilters, assetList, assetUploads, selectedAssets, getAssetTagList, addAssetTagToList, assetTags, assetActions, activeBatch, batchActions, AuthService, IIdentity, SessionService, IHubSession, API, IImposiumAPI, LegacyAPI, StorageService, Timer, validateAccessLevel, getFirstStoryInOrg, string2HexCode, parameterizeServiceUrl, scrapeEmail, fitToContainer, formattedTime, filterHotkeys, mimetypeConformsToOverlay, validateAssetMimetype, toFixed, padStart, formatDateDefault, ASSET_TYPES, publish, publishVersion, clearStoryPublishStatus, getStoryPublishStatus, PublishStatusIndicator, AnchorField, SMPTEField, getMediaPreviewStyle, HEADER_HEIGHT, decoupleAssets, updateAssetStory };
97
+ import FontPicker from './components/font-picker/FontPicker';
98
+ export { AppWrapper, AuthGate, ImposiumHeader, ImposiumDropdown, Button, ButtonGroupField, ButtonMenu, ButtonMenuItem, Card, CheckboxField, ControlledList, DataTable, DataTablePaginator, FieldWrapper, HRule, ListField, Modal, AdvancedNumberField, NumberField, SelectField, ColorField, Tabs, ITab, Tag, TextField, TextAreaField, ToastService, SliderField, Section, DeterminateLoader, Spinner, NoAccess, ServiceIcon, LogViewer, StoryPreviewer, ShortcutMenu, Portal, AssetDetails, ImagePlayer, VideoPlayer, AudioPlayer, VideoPreview, ImagePreview, ImageSequencePlayer, AssetsTypeIcon, AssetsTableDateCell, AssetsTableDropzone, AssetsTablePreviewCell, AssetsTableSelectFilter, AssetsTableSelectCell, AssetsTableTypeFilter, AssetsTableTypeCell, AssetsTableStatusCell, AssetsTableNameFilter, AssetsTableNameCell, AssetsTableDurationCell, AssetsTableTagsCell, AssetsTableTagsFilter, AssetsTableTagsPivot, AssetsTableComplexTagCell, AssetField, AssetsUploadMenu, FontAssetPreview, DroppableAssetRenderer, PreviewNotAvailable, IStaticComposition, auth, login, clearCachedAuth, access, cacheAccessData, clearCachedAccessList, storyAdded, storyNameMutated, orgNameMutated, storyDeleted, updateFilters, getAssets, deleteAssets, addAssetTag, deleteAssetTag, updateAssetName, updateAssetData, doAssetTableHydration, toggleAutoTag, uploadAssets, selectAsset, deselectAsset, resetSelection, assetFilters, assetList, assetUploads, selectedAssets, getAssetTagList, addAssetTagToList, assetTags, assetActions, activeBatch, batchActions, AuthService, IIdentity, SessionService, IHubSession, API, IImposiumAPI, LegacyAPI, StorageService, Timer, validateAccessLevel, getFirstStoryInOrg, string2HexCode, parameterizeServiceUrl, scrapeEmail, fitToContainer, formattedTime, filterHotkeys, mimetypeConformsToOverlay, validateAssetMimetype, toFixed, padStart, formatDateDefault, ASSET_TYPES, publish, publishVersion, clearStoryPublishStatus, getStoryPublishStatus, PublishStatusIndicator, AnchorField, SMPTEField, getMediaPreviewStyle, HEADER_HEIGHT, decoupleAssets, updateAssetStory, FontPicker };
package/dist/esm/index.js CHANGED
@@ -105,5 +105,6 @@ import { getFirstStoryInOrg, string2HexCode, toFixed, padStart, parameterizeServ
105
105
  import PublishStatusIndicator from './components/publish-wizard/publish/PublishStatusIndicator';
106
106
  import { getMediaPreviewStyle } from './utils/assets';
107
107
  import AdvancedNumberField from './components/advanced-number-field/AdvancedNumberField';
108
- export { AppWrapper, AuthGate, ImposiumHeader, ImposiumDropdown, Button, ButtonGroupField, ButtonMenu, ButtonMenuItem, Card, CheckboxField, ControlledList, DataTable, DataTablePaginator, FieldWrapper, HRule, ListField, Modal, AdvancedNumberField, NumberField, SelectField, ColorField, Tabs, Tag, TextField, TextAreaField, ToastService, SliderField, Section, DeterminateLoader, Spinner, NoAccess, ServiceIcon, LogViewer, StoryPreviewer, ShortcutMenu, Portal, AssetDetails, ImagePlayer, VideoPlayer, AudioPlayer, VideoPreview, ImagePreview, ImageSequencePlayer, AssetsTypeIcon, AssetsTableDateCell, AssetsTableDropzone, AssetsTablePreviewCell, AssetsTableSelectFilter, AssetsTableSelectCell, AssetsTableTypeFilter, AssetsTableTypeCell, AssetsTableStatusCell, AssetsTableNameFilter, AssetsTableNameCell, AssetsTableDurationCell, AssetsTableTagsCell, AssetsTableTagsFilter, AssetsTableTagsPivot, AssetsTableComplexTagCell, AssetField, AssetsUploadMenu, FontAssetPreview, DroppableAssetRenderer, PreviewNotAvailable, auth, login, clearCachedAuth, access, cacheAccessData, clearCachedAccessList, storyAdded, storyNameMutated, orgNameMutated, storyDeleted, updateFilters, getAssets, deleteAssets, addAssetTag, deleteAssetTag, updateAssetName, updateAssetData, doAssetTableHydration, toggleAutoTag, uploadAssets, selectAsset, deselectAsset, resetSelection, assetFilters, assetList, assetUploads, selectedAssets, getAssetTagList, addAssetTagToList, assetTags, assetActions, activeBatch, batchActions, AuthService, SessionService, API, LegacyAPI, StorageService, Timer, validateAccessLevel, getFirstStoryInOrg, string2HexCode, parameterizeServiceUrl, scrapeEmail, fitToContainer, formattedTime, filterHotkeys, mimetypeConformsToOverlay, validateAssetMimetype, toFixed, padStart, formatDateDefault, ASSET_TYPES, publish, publishVersion, clearStoryPublishStatus, getStoryPublishStatus, PublishStatusIndicator, AnchorField, SMPTEField, getMediaPreviewStyle, HEADER_HEIGHT, decoupleAssets, updateAssetStory };
108
+ import FontPicker from './components/font-picker/FontPicker';
109
+ export { AppWrapper, AuthGate, ImposiumHeader, ImposiumDropdown, Button, ButtonGroupField, ButtonMenu, ButtonMenuItem, Card, CheckboxField, ControlledList, DataTable, DataTablePaginator, FieldWrapper, HRule, ListField, Modal, AdvancedNumberField, NumberField, SelectField, ColorField, Tabs, Tag, TextField, TextAreaField, ToastService, SliderField, Section, DeterminateLoader, Spinner, NoAccess, ServiceIcon, LogViewer, StoryPreviewer, ShortcutMenu, Portal, AssetDetails, ImagePlayer, VideoPlayer, AudioPlayer, VideoPreview, ImagePreview, ImageSequencePlayer, AssetsTypeIcon, AssetsTableDateCell, AssetsTableDropzone, AssetsTablePreviewCell, AssetsTableSelectFilter, AssetsTableSelectCell, AssetsTableTypeFilter, AssetsTableTypeCell, AssetsTableStatusCell, AssetsTableNameFilter, AssetsTableNameCell, AssetsTableDurationCell, AssetsTableTagsCell, AssetsTableTagsFilter, AssetsTableTagsPivot, AssetsTableComplexTagCell, AssetField, AssetsUploadMenu, FontAssetPreview, DroppableAssetRenderer, PreviewNotAvailable, auth, login, clearCachedAuth, access, cacheAccessData, clearCachedAccessList, storyAdded, storyNameMutated, orgNameMutated, storyDeleted, updateFilters, getAssets, deleteAssets, addAssetTag, deleteAssetTag, updateAssetName, updateAssetData, doAssetTableHydration, toggleAutoTag, uploadAssets, selectAsset, deselectAsset, resetSelection, assetFilters, assetList, assetUploads, selectedAssets, getAssetTagList, addAssetTagToList, assetTags, assetActions, activeBatch, batchActions, AuthService, SessionService, API, LegacyAPI, StorageService, Timer, validateAccessLevel, getFirstStoryInOrg, string2HexCode, parameterizeServiceUrl, scrapeEmail, fitToContainer, formattedTime, filterHotkeys, mimetypeConformsToOverlay, validateAssetMimetype, toFixed, padStart, formatDateDefault, ASSET_TYPES, publish, publishVersion, clearStoryPublishStatus, getStoryPublishStatus, PublishStatusIndicator, AnchorField, SMPTEField, getMediaPreviewStyle, HEADER_HEIGHT, decoupleAssets, updateAssetStory, FontPicker };
109
110
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -2750,3 +2750,110 @@ h3 {
2750
2750
  .advanced-number-field .form-field-content .font-size-list .font-size-item .font-size-btn:hover {
2751
2751
  background-color: #494949;
2752
2752
  }
2753
+ #font-picker {
2754
+ position: relative;
2755
+ display: inline-block;
2756
+ width: 200px;
2757
+ width: 100%;
2758
+ box-sizing: border-box;
2759
+ -webkit-appearance: none;
2760
+ -moz-appearance: none;
2761
+ appearance: none;
2762
+ padding: 0 2px;
2763
+ box-shadow: none;
2764
+ }
2765
+ #font-picker * {
2766
+ box-sizing: border-box;
2767
+ }
2768
+ #font-picker p {
2769
+ margin: 0;
2770
+ padding: 0;
2771
+ }
2772
+ #font-picker button {
2773
+ color: inherit;
2774
+ font-size: 12px;
2775
+ background: none;
2776
+ border: 0;
2777
+ outline: none;
2778
+ cursor: pointer;
2779
+ }
2780
+ #font-picker .dropdown-button {
2781
+ display: flex;
2782
+ align-items: center;
2783
+ justify-content: space-between;
2784
+ width: 100%;
2785
+ height: 20px;
2786
+ padding: 0 4px;
2787
+ background: #1d1d1d;
2788
+ }
2789
+ #font-picker .dropdown-button:hover,
2790
+ #font-picker .dropdown-button:focus {
2791
+ background: #151515;
2792
+ }
2793
+ #font-picker .dropdown-button .dropdown-font-name {
2794
+ overflow: hidden;
2795
+ white-space: nowrap;
2796
+ }
2797
+ #font-picker .dropdown-icon {
2798
+ margin-left: 10px;
2799
+ }
2800
+ #font-picker .dropdown-icon.loading::before {
2801
+ display: block;
2802
+ width: 10px;
2803
+ height: 10px;
2804
+ border: 2px solid #b2b2b2;
2805
+ border-top-color: #000;
2806
+ border-radius: 50%;
2807
+ animation: spinner 0.6s linear infinite;
2808
+ content: "";
2809
+ }
2810
+ #font-picker .dropdown-icon.finished::before {
2811
+ display: block;
2812
+ width: 0;
2813
+ height: 0;
2814
+ margin: 0 2px;
2815
+ border-top: 6px solid #000;
2816
+ border-right: 5px solid transparent;
2817
+ border-left: 5px solid transparent;
2818
+ transition: transform 0.3s;
2819
+ content: "";
2820
+ }
2821
+ #font-picker .dropdown-icon.error::before {
2822
+ content: "⚠";
2823
+ }
2824
+ #font-picker ul {
2825
+ position: absolute;
2826
+ z-index: 1;
2827
+ width: 280px;
2828
+ max-height: 0;
2829
+ margin: 0;
2830
+ padding: 0;
2831
+ overflow-x: hidden;
2832
+ overflow-y: auto;
2833
+ background: #1d1d1d;
2834
+ box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
2835
+ -webkit-overflow-scrolling: touch;
2836
+ }
2837
+ #font-picker ul li {
2838
+ height: 20px;
2839
+ list-style: none;
2840
+ }
2841
+ #font-picker ul li button {
2842
+ display: flex;
2843
+ align-items: center;
2844
+ width: 100%;
2845
+ height: 100%;
2846
+ padding-left: 3px;
2847
+ white-space: nowrap;
2848
+ }
2849
+ #font-picker ul li button:hover,
2850
+ #font-picker ul li button:focus,
2851
+ #font-picker ul li button.active-font {
2852
+ background: #2d8ceb;
2853
+ }
2854
+ #font-picker.expanded .dropdown-icon.finished::before {
2855
+ transform: rotate(-180deg);
2856
+ }
2857
+ #font-picker.expanded ul {
2858
+ max-height: 200px;
2859
+ }
package/dist/styles.less CHANGED
@@ -2815,3 +2815,135 @@ h3{
2815
2815
  // }
2816
2816
  }
2817
2817
  }
2818
+
2819
+ #font-picker {
2820
+ position: relative;
2821
+ display: inline-block;
2822
+ width: 200px;
2823
+ width: 100%;
2824
+ box-sizing: border-box;
2825
+ -webkit-appearance: none;
2826
+ -moz-appearance: none;
2827
+ appearance: none;
2828
+ padding: 0 2px;
2829
+ box-shadow: none;
2830
+
2831
+ * {
2832
+ box-sizing: border-box;
2833
+ }
2834
+
2835
+ p {
2836
+ margin: 0;
2837
+ padding: 0;
2838
+ }
2839
+
2840
+ button {
2841
+ color: inherit;
2842
+ font-size: 12px;
2843
+ background: none;
2844
+ border: 0;
2845
+ outline: none;
2846
+ cursor: pointer;
2847
+ }
2848
+
2849
+ .dropdown-button {
2850
+ display: flex;
2851
+ align-items: center;
2852
+ justify-content: space-between;
2853
+ width: 100%;
2854
+ height: 20px;
2855
+ padding: 0 4px;
2856
+ background: #1d1d1d;
2857
+
2858
+ &:hover, &:focus {
2859
+ background: #151515;
2860
+ }
2861
+
2862
+ .dropdown-font-name {
2863
+ overflow: hidden;
2864
+ white-space: nowrap;
2865
+ }
2866
+ }
2867
+
2868
+ .dropdown-icon {
2869
+ margin-left: 10px;
2870
+ }
2871
+
2872
+ .dropdown-icon.loading {
2873
+ &::before {
2874
+ display: block;
2875
+ width: 10px;
2876
+ height: 10px;
2877
+ border: 2px solid #b2b2b2;
2878
+ border-top-color: #000;
2879
+ border-radius: 50%;
2880
+ animation: spinner 0.6s linear infinite;
2881
+ content: "";
2882
+ }
2883
+ }
2884
+
2885
+ .dropdown-icon.finished {
2886
+ &::before {
2887
+ display: block;
2888
+ width: 0;
2889
+ height: 0;
2890
+ margin: 0 2px;
2891
+ border-top: 6px solid #000;
2892
+ border-right: 5px solid transparent;
2893
+ border-left: 5px solid transparent;
2894
+ transition: transform 0.3s;
2895
+ content: "";
2896
+ }
2897
+ }
2898
+
2899
+ .dropdown-icon.error {
2900
+ &::before {
2901
+ content: "⚠";
2902
+ }
2903
+ }
2904
+
2905
+ ul {
2906
+ position: absolute;
2907
+ z-index: 1;
2908
+ width: 280px;
2909
+ max-height: 0;
2910
+ margin: 0;
2911
+ padding: 0;
2912
+ overflow-x: hidden;
2913
+ overflow-y: auto;
2914
+ background: #1d1d1d;
2915
+ box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
2916
+ -webkit-overflow-scrolling: touch;
2917
+
2918
+ li {
2919
+ height: 20px;
2920
+ list-style: none;
2921
+
2922
+ button {
2923
+ display: flex;
2924
+ align-items: center;
2925
+ width: 100%;
2926
+ height: 100%;
2927
+ padding-left: 3px;
2928
+ white-space: nowrap;
2929
+
2930
+ &:hover, &:focus, &.active-font {
2931
+ background: #2d8ceb;
2932
+ }
2933
+ }
2934
+ }
2935
+ }
2936
+ }
2937
+
2938
+ #font-picker.expanded {
2939
+ .dropdown-icon.finished {
2940
+ &::before {
2941
+ transform: rotate(-180deg);
2942
+ }
2943
+ }
2944
+
2945
+ ul {
2946
+ max-height: 200px;
2947
+ }
2948
+ }
2949
+
@@ -0,0 +1,131 @@
1
+
2
+ #font-picker {
3
+ position: relative;
4
+ display: inline-block;
5
+ width: 200px;
6
+ width: 100%;
7
+ box-sizing: border-box;
8
+ -webkit-appearance: none;
9
+ -moz-appearance: none;
10
+ appearance: none;
11
+ padding: 0 2px;
12
+ box-shadow: none;
13
+
14
+ * {
15
+ box-sizing: border-box;
16
+ }
17
+
18
+ p {
19
+ margin: 0;
20
+ padding: 0;
21
+ }
22
+
23
+ button {
24
+ color: inherit;
25
+ font-size: 12px;
26
+ background: none;
27
+ border: 0;
28
+ outline: none;
29
+ cursor: pointer;
30
+ }
31
+
32
+ .dropdown-button {
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: space-between;
36
+ width: 100%;
37
+ height: 20px;
38
+ padding: 0 4px;
39
+ background: #1d1d1d;
40
+
41
+ &:hover, &:focus {
42
+ background: #151515;
43
+ }
44
+
45
+ .dropdown-font-name {
46
+ overflow: hidden;
47
+ white-space: nowrap;
48
+ }
49
+ }
50
+
51
+ .dropdown-icon {
52
+ margin-left: 10px;
53
+ }
54
+
55
+ .dropdown-icon.loading {
56
+ &::before {
57
+ display: block;
58
+ width: 10px;
59
+ height: 10px;
60
+ border: 2px solid #b2b2b2;
61
+ border-top-color: #000;
62
+ border-radius: 50%;
63
+ animation: spinner 0.6s linear infinite;
64
+ content: "";
65
+ }
66
+ }
67
+
68
+ .dropdown-icon.finished {
69
+ &::before {
70
+ display: block;
71
+ width: 0;
72
+ height: 0;
73
+ margin: 0 2px;
74
+ border-top: 6px solid #000;
75
+ border-right: 5px solid transparent;
76
+ border-left: 5px solid transparent;
77
+ transition: transform 0.3s;
78
+ content: "";
79
+ }
80
+ }
81
+
82
+ .dropdown-icon.error {
83
+ &::before {
84
+ content: "⚠";
85
+ }
86
+ }
87
+
88
+ ul {
89
+ position: absolute;
90
+ z-index: 1;
91
+ width: 280px;
92
+ max-height: 0;
93
+ margin: 0;
94
+ padding: 0;
95
+ overflow-x: hidden;
96
+ overflow-y: auto;
97
+ background: #1d1d1d;
98
+ box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
99
+ -webkit-overflow-scrolling: touch;
100
+
101
+ li {
102
+ height: 20px;
103
+ list-style: none;
104
+
105
+ button {
106
+ display: flex;
107
+ align-items: center;
108
+ width: 100%;
109
+ height: 100%;
110
+ padding-left: 3px;
111
+ white-space: nowrap;
112
+
113
+ &:hover, &:focus, &.active-font {
114
+ background: #2d8ceb;
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+
121
+ #font-picker.expanded {
122
+ .dropdown-icon.finished {
123
+ &::before {
124
+ transform: rotate(-180deg);
125
+ }
126
+ }
127
+
128
+ ul {
129
+ max-height: 200px;
130
+ }
131
+ }
package/less/entry.less CHANGED
@@ -35,4 +35,5 @@
35
35
  @import (inline) "components/tooltip.less";
36
36
  @import (inline) "components/variable-default-upload.less";
37
37
  @import (inline) "components/anchor-field.less";
38
- @import (inline) "components/advanced-number-field.less";
38
+ @import (inline) "components/advanced-number-field.less";
39
+ @import (inline) "components/font-picker.less";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imposium-hub/components",
3
- "version": "1.56.0",
3
+ "version": "1.57.0",
4
4
  "description": "React & Typescript component / asset library for Imposium front-ends",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -0,0 +1,222 @@
1
+ import * as React from 'react';
2
+ import FontManager from './font-manager/FontManager';
3
+ import {
4
+ Category,
5
+ Font,
6
+ Options,
7
+ Script,
8
+ Variant,
9
+ FontList,
10
+ OPTIONS_DEFAULTS
11
+ } from './font-manager/types';
12
+ import { FONT_FAMILY_DEFAULT } from './font-manager/constants';
13
+ import { createFontStyleSheets } from './font-manager/fontStyle';
14
+
15
+ interface IFontPickerProps {
16
+ apiKey: string;
17
+ activeFontFamily: string;
18
+ onChange: (font: string) => void;
19
+ families: string[];
20
+ categories: Category[];
21
+ scripts: Script[];
22
+ variants: Variant[];
23
+ filter: (font: Font) => boolean;
24
+ limit: number;
25
+ defaultFonts: any;
26
+ customFonts?: any;
27
+ }
28
+
29
+ interface IFontPickerState {
30
+ expanded: boolean;
31
+ fonts: any;
32
+ }
33
+
34
+ export default class FontPicker extends React.PureComponent<IFontPickerProps, IFontPickerState> {
35
+ fontManager: FontManager;
36
+
37
+ static defaultProps = {
38
+ activeFontFamily: FONT_FAMILY_DEFAULT,
39
+ families: OPTIONS_DEFAULTS.families,
40
+ categories: OPTIONS_DEFAULTS.categories,
41
+ scripts: OPTIONS_DEFAULTS.scripts,
42
+ variants: OPTIONS_DEFAULTS.variants,
43
+ filter: OPTIONS_DEFAULTS.filter,
44
+ limit: OPTIONS_DEFAULTS.limit
45
+ };
46
+
47
+ private clickOutsideHandler: any;
48
+
49
+ constructor(props: any) {
50
+ super(props);
51
+
52
+ const {
53
+ apiKey,
54
+ activeFontFamily,
55
+ families,
56
+ categories,
57
+ scripts,
58
+ variants,
59
+ filter,
60
+ limit,
61
+ onChange
62
+ } = this.props;
63
+
64
+ this.state = {
65
+ expanded: false,
66
+ fonts: null
67
+ };
68
+
69
+ const options: Options = {
70
+ families,
71
+ categories,
72
+ scripts,
73
+ variants,
74
+ filter,
75
+ limit
76
+ };
77
+
78
+ this.fontManager = new FontManager(apiKey, activeFontFamily, options, onChange);
79
+ }
80
+
81
+ public compoenntDidMount(): void {
82
+ this.clickOutsideHandler = (e) => this.onClose(e);
83
+ }
84
+
85
+ public componentWillUnmount(): void {
86
+ this.clickOutsideHandler = (e) => {
87
+ return;
88
+ };
89
+ }
90
+
91
+ public componentDidUpdate = (prevProps: any) => {
92
+ const { activeFontFamily, onChange, customFonts, defaultFonts } = this.props;
93
+ if (prevProps.customFonts !== customFonts) {
94
+ this.fontManager
95
+ .init()
96
+ .then((fontMap: FontList): void => {
97
+ const googleFonts = Array.from(fontMap.values()).filter((f) => f.files);
98
+ const updateDefaultFonts = defaultFonts.map(
99
+ (f: any) => googleFonts.find((o: any) => o.family === f.family) || f
100
+ );
101
+ const uniqueFontFamilies = new Set();
102
+ const uniqueFonts = updateDefaultFonts.filter((e: any) => {
103
+ const isDup = uniqueFontFamilies.has(e.family);
104
+ uniqueFontFamilies.add(e.family);
105
+ if (!isDup) {
106
+ return true;
107
+ }
108
+ return false;
109
+ });
110
+ this.setState({ fonts: uniqueFonts }, () =>
111
+ createFontStyleSheets(defaultFonts, uniqueFonts, customFonts)
112
+ );
113
+ })
114
+ .catch((err: Error): void => {
115
+ console.error('Error trying to fetch the list of available fonts');
116
+ console.error(err);
117
+ });
118
+ }
119
+
120
+ if (activeFontFamily !== prevProps.activeFontFamily) {
121
+ this.setActiveFontFamily(activeFontFamily);
122
+ }
123
+
124
+ if (onChange !== prevProps.onChange) {
125
+ this.fontManager.setOnChange(onChange);
126
+ }
127
+ };
128
+
129
+ private onClose = (e) => {
130
+ let targetEl = e.target;
131
+ const fontPickerEl = document.getElementById(`font-picker`);
132
+
133
+ while (true) {
134
+ if (targetEl === fontPickerEl) {
135
+ return;
136
+ }
137
+ if (targetEl.parentNode) {
138
+ targetEl = targetEl.parentNode;
139
+ } else {
140
+ this.toggleExpanded();
141
+ return;
142
+ }
143
+ }
144
+ };
145
+
146
+ private onSelection = (e): void => {
147
+ const activeFontFamily = e.target.textContent;
148
+ if (!activeFontFamily) {
149
+ throw Error(`Missing font family in clicked font button`);
150
+ }
151
+ this.setActiveFontFamily(activeFontFamily);
152
+ this.toggleExpanded();
153
+ };
154
+
155
+ private setActiveFontFamily = (activeFontFamily: string): void => {
156
+ this.fontManager.setActiveFont(activeFontFamily);
157
+ };
158
+
159
+ private generateFontList = () => {
160
+ const { activeFontFamily, families } = this.props;
161
+
162
+ return (
163
+ <ul className='font-list'>
164
+ {families.map((font) => {
165
+ const isActive = font === activeFontFamily;
166
+ return (
167
+ <li
168
+ key={font}
169
+ className='font-list-item'>
170
+ <button
171
+ type='button'
172
+ id={`font-button-${font}`}
173
+ className={`font-button ${isActive ? 'active-font' : ''}`}
174
+ onClick={this.onSelection}
175
+ onKeyDown={this.onSelection}
176
+ style={{ fontFamily: font }}>
177
+ {font}
178
+ </button>
179
+ </li>
180
+ );
181
+ })}
182
+ </ul>
183
+ );
184
+ };
185
+
186
+ private toggleExpanded = (): void => {
187
+ const { expanded } = this.state;
188
+
189
+ if (expanded) {
190
+ this.setState({
191
+ expanded: false
192
+ });
193
+ document.removeEventListener('click', this.clickOutsideHandler);
194
+ } else {
195
+ this.setState({
196
+ expanded: true
197
+ });
198
+ document.addEventListener('click', this.clickOutsideHandler);
199
+ }
200
+ };
201
+
202
+ public render = () => {
203
+ const { activeFontFamily } = this.props;
204
+ const { expanded } = this.state;
205
+
206
+ return (
207
+ <div
208
+ id={`font-picker`}
209
+ className={expanded ? 'expanded' : ''}>
210
+ <button
211
+ type='button'
212
+ className='dropdown-button'
213
+ onClick={this.toggleExpanded}
214
+ onKeyDown={this.toggleExpanded}>
215
+ <p className='dropdown-font-family'>{activeFontFamily}</p>
216
+ <p className='dropdown-icon finished' />
217
+ </button>
218
+ {this.generateFontList()}
219
+ </div>
220
+ );
221
+ };
222
+ }