forked from shibao/cannery
		
	add slimselect to select elements with user content
This commit is contained in:
		@@ -8,6 +8,8 @@ $fa-font-path: "@fortawesome/fontawesome-free/webfonts";
 | 
			
		||||
@import "@fortawesome/fontawesome-free/scss/solid";
 | 
			
		||||
@import "@fortawesome/fontawesome-free/scss/brands";
 | 
			
		||||
 | 
			
		||||
@import "slim-select/styles";
 | 
			
		||||
 | 
			
		||||
@import "components";
 | 
			
		||||
 | 
			
		||||
/* fix firefox scrollbars */
 | 
			
		||||
@@ -152,3 +154,57 @@ $fa-font-path: "@fortawesome/fontawesome-free/webfonts";
 | 
			
		||||
  0% { opacity: 1; }
 | 
			
		||||
  100% { opacity: 0; }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-main {
 | 
			
		||||
  @apply input;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-main.input-primary {
 | 
			
		||||
  @apply border-primary-500 hover:border-primary-600 active:border-primary-600;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content {
 | 
			
		||||
  @apply input;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content.input-primary {
 | 
			
		||||
  @apply border-primary-500 hover:border-primary-600 active:border-primary-600;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content.ss-open-above {
 | 
			
		||||
  border-bottom-left-radius: 0px;
 | 
			
		||||
  border-bottom-right-radius: 0px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content.ss-open-below {
 | 
			
		||||
  border-top-left-radius: 0px;
 | 
			
		||||
  border-top-right-radius: 0px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-search input[type="search"] {
 | 
			
		||||
  @apply input;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content.input-primary .ss-search input[type="search"] {
 | 
			
		||||
  @apply border-primary-500 hover:border-primary-600 active:border-primary-600;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content.ss-open-above .ss-search {
 | 
			
		||||
  padding: var(--ss-spacing-l) 0 0 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content.ss-open-below .ss-search {
 | 
			
		||||
  padding: 0 0 var(--ss-spacing-l) 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content.ss-open-above .ss-list > *:not(:first-child) {
 | 
			
		||||
  margin: var(--ss-spacing-l) 0 0 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content.ss-open-below .ss-list > *:not(:last-child) {
 | 
			
		||||
  margin: 0 0 var(--ss-spacing-l) 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ss-content .ss-list .ss-option {
 | 
			
		||||
  border-radius: var(--ss-border-radius);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,15 +24,16 @@ import 'phoenix_html'
 | 
			
		||||
// Establish Phoenix Socket and LiveView configuration.
 | 
			
		||||
import { Socket } from 'phoenix'
 | 
			
		||||
import { LiveSocket } from 'phoenix_live_view'
 | 
			
		||||
import topbar from 'topbar'
 | 
			
		||||
import ShotLogChart from './shot_log_chart'
 | 
			
		||||
import Date from './date'
 | 
			
		||||
import DateTime from './datetime'
 | 
			
		||||
import ShotLogChart from './shot_log_chart'
 | 
			
		||||
import SlimSelect from './slim_select'
 | 
			
		||||
import topbar from 'topbar'
 | 
			
		||||
 | 
			
		||||
const csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute('content')
 | 
			
		||||
const liveSocket = new LiveSocket('/live', Socket, {
 | 
			
		||||
  params: { _csrf_token: csrfToken },
 | 
			
		||||
  hooks: { Date, DateTime, ShotLogChart }
 | 
			
		||||
  hooks: { Date, DateTime, ShotLogChart, SlimSelect }
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// Show progress bar on live navigation and form submits
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								assets/js/slim_select.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								assets/js/slim_select.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
import SlimSelect from 'slim-select'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  initalizeSlimSelect (el) {
 | 
			
		||||
    // eslint-disable-next-line no-new
 | 
			
		||||
    el.slimselect = new SlimSelect({ select: el })
 | 
			
		||||
 | 
			
		||||
    const main = document.querySelector(`.ss-main[data-id="${el.dataset.id}"]`)
 | 
			
		||||
    main.setAttribute('id', `${el.dataset.id}-main`)
 | 
			
		||||
    main.setAttribute('phx-update', 'ignore')
 | 
			
		||||
 | 
			
		||||
    const content = document.querySelector(`.ss-content[data-id="${el.dataset.id}"]`)
 | 
			
		||||
    content.setAttribute('id', `${el.dataset.id}-content`)
 | 
			
		||||
    content.setAttribute('phx-update', 'ignore')
 | 
			
		||||
  },
 | 
			
		||||
  updated () {
 | 
			
		||||
    this.el.slimselect?.destroy()
 | 
			
		||||
    this.initalizeSlimSelect(this.el)
 | 
			
		||||
  },
 | 
			
		||||
  mounted () {
 | 
			
		||||
    this.initalizeSlimSelect(this.el)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								assets/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								assets/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -13,6 +13,7 @@
 | 
			
		||||
        "phoenix": "file:../deps/phoenix",
 | 
			
		||||
        "phoenix_html": "file:../deps/phoenix_html",
 | 
			
		||||
        "phoenix_live_view": "file:../deps/phoenix_live_view",
 | 
			
		||||
        "slim-select": "^2.9.2",
 | 
			
		||||
        "topbar": "^3.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "devDependencies": {
 | 
			
		||||
@@ -12197,6 +12198,12 @@
 | 
			
		||||
        "url": "https://github.com/sponsors/sindresorhus"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/slim-select": {
 | 
			
		||||
      "version": "2.9.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/slim-select/-/slim-select-2.9.2.tgz",
 | 
			
		||||
      "integrity": "sha512-3Kxgj7Nk7sHHEu8Xzq70pkNNNdKmOr3OwKOjqSzcGeJ9j2hCOxIvIdYcAqKUM1eRnl+3ycKKK/YrzsjxrxAoZg==",
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/sockjs": {
 | 
			
		||||
      "version": "0.3.24",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,7 @@
 | 
			
		||||
    "phoenix": "file:../deps/phoenix",
 | 
			
		||||
    "phoenix_html": "file:../deps/phoenix_html",
 | 
			
		||||
    "phoenix_live_view": "file:../deps/phoenix_live_view",
 | 
			
		||||
    "slim-select": "^2.9.2",
 | 
			
		||||
    "topbar": "^3.0.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user